1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00

feat(游戏结束): 添加死亡原因显示功能

- 新增JsonTool工具类用于解析JSON文件
- 在GameOver面板中添加死亡原因显示标签
- 添加死亡原因JSON数据文件
- 在GameRule中加载死亡原因数据
This commit is contained in:
2025-09-07 13:18:29 +08:00
parent 1d9c3fc466
commit b186382080
6 changed files with 165 additions and 5 deletions
@@ -1,4 +1,4 @@
[gd_scene load_steps=7 format=3 uid="uid://beo6s1kudbbve"] [gd_scene load_steps=8 format=3 uid="uid://beo6s1kudbbve"]
[ext_resource type="PackedScene" uid="uid://d3qojeqa3difn" path="res://components/Abstracts/FullscreenPanelBase.tscn" id="1_u2ynr"] [ext_resource type="PackedScene" uid="uid://d3qojeqa3difn" path="res://components/Abstracts/FullscreenPanelBase.tscn" id="1_u2ynr"]
[ext_resource type="Script" path="res://scripts/Contents/Panels/GameOver.gd" id="2_6cd45"] [ext_resource type="Script" path="res://scripts/Contents/Panels/GameOver.gd" id="2_6cd45"]
@@ -12,11 +12,16 @@ bg_color = Color(1, 0, 0, 0.3)
font = ExtResource("3_oynlg") font = ExtResource("3_oynlg")
font_size = 50 font_size = 50
[sub_resource type="LabelSettings" id="LabelSettings_ndokf"]
font = ExtResource("3_oynlg")
font_color = Color(0.710938, 0.710938, 0.710938, 1)
[node name="GameOver" instance=ExtResource("1_u2ynr")] [node name="GameOver" instance=ExtResource("1_u2ynr")]
visible = false offset_top = 0.0
offset_bottom = 0.0
script = ExtResource("2_6cd45") script = ExtResource("2_6cd45")
[node name="wrapper" parent="content" index="0"] [node name="wrapper" parent="content" index="1"]
theme_override_constants/separation = 50 theme_override_constants/separation = 50
[node name="container" type="PanelContainer" parent="content/wrapper" index="0"] [node name="container" type="PanelContainer" parent="content/wrapper" index="0"]
@@ -24,12 +29,23 @@ layout_mode = 2
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_7gbuu") theme_override_styles/panel = SubResource("StyleBoxFlat_7gbuu")
[node name="text" type="Label" parent="content/wrapper/container" index="0"] [node name="VBoxContainer" type="VBoxContainer" parent="content/wrapper/container" index="0"]
layout_mode = 2
alignment = 1
[node name="text" type="Label" parent="content/wrapper/container/VBoxContainer" index="0"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 4 size_flags_horizontal = 4
text = "败北" text = "败北"
label_settings = SubResource("LabelSettings_17i5j") label_settings = SubResource("LabelSettings_17i5j")
[node name="deadreason" type="Label" parent="content/wrapper/container/VBoxContainer" index="1"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
text = "死亡原因"
label_settings = SubResource("LabelSettings_ndokf")
[node name="audio" type="AudioStreamPlayer2D" parent="." index="2"] [node name="audio" type="AudioStreamPlayer2D" parent="." index="2"]
unique_name_in_owner = true unique_name_in_owner = true
stream = ExtResource("3_n4aax") stream = ExtResource("3_n4aax")
+132
View File
@@ -0,0 +1,132 @@
[
"%s被杀死了,",
"%s被掏空了,",
"%s被谋杀了,",
"%s的脸被撕烂了,",
"%s的内脏被扯掉了,",
"%s被毁灭了,",
"%s的头骨被压碎了,",
"%s被屠杀了,",
"%s被刺穿了,",
"%s被撕成两半了,",
"%s被斩首了,",
"%s的手臂没了,",
"%s看着自己的内脏变成了“外脏”,",
"%s被野蛮地解剖了,",
"%s的四肢被扯掉了,",
"%s的身体血肉模糊了,",
"%s的重要器官毁了,",
"%s变成了一滩肉,",
"%s被踢出了游戏,",
"%s被折成两半了,",
"%s被腰斩了,",
"%s被千刀万剐了,",
"%s求死的愿望实现了,",
"%s被削肉去骨了,",
"%s的挣扎终于停止了,",
"%s的脑袋搬家了,",
"%s的肠子被扯出来了,",
"%s的旅程结束了,",
"%s被送去见奥库瑞姆了,",
"%s被浸渍了,",
"%s被放干了血,",
"%s被送到了骷髅区,",
"%s被自发切除了脑叶,",
"%s被压成了肉酱,",
"%s被碾成了肉泥,",
"%s的骨头被敲得粉碎,",
"%s成了怪物的食物,",
"%s的家被重塑了,",
"%s被迫自愿献血了,",
"%s的天灵盖被掀了,",
"%s的头顶被削掉了,",
"%s的零件放错了位置,",
"%s被打成了爽口酱汁,",
"%s的脊椎被扯掉了,",
"%s的存活纪录被终结了,",
"%s接受了强制截肢,",
"%s的脖子被折断了,",
"%s被撕成了碎片,",
"%s重伤不治,",
"%s被告知阳寿已尽,",
"%s的无能被展示了,",
"%s的灵魂被抽离了,",
"%s经历了仁慈的安乐死,",
"%s被自下而上地吃掉了,",
"%s被去骨了,",
"%s的两个肾都被偷了,",
"%s的堕落结束了,",
"%s的椎间盘脱出了,",
"%s的遗体被捐赠给了科学,",
"%s的大脑变成了果酱,",
"%s变成了下酒菜,",
"%s被送到了农场,",
"%s咽下了最后一口气,",
"%s的心跳停止了,",
"%s的头部挨了一记猛的,",
"%s被抹杀了,",
"%s受了脱套伤,",
"%s被剥了皮,",
"%s被围杀了,",
"%s被打屁股了,",
"%s被抓到了,",
"%s被杀掉了,",
"%s被放进水晶棺里了,",
"%s已经被埋了,",
"%s很快就会被遗忘,",
"%s被劈了,",
"%s摔死了,",
"%s没有反弹,",
"%s发明了重力,",
"%s领悟了“抛出窗外”的意思,",
"%s自由……自由落体了,",
"%s尝试了滑冰上坡,",
"%s认为自己会飞,",
"%s留下了一个大坑,",
"%s忘记了自己绝妙的想法,",
"%s忘了呼吸,",
"%s与鱼同眠,",
"%s溺死了,",
"%s成了鲨鱼的食物,",
"%s试图饮尽湖水,",
"%s发现了亚特兰蒂斯,",
"%s忘了带毛巾,",
"%s被熔化了,",
"%s被烧成了灰,",
"%s试图在熔岩中游泳,",
"%s喜欢在岩浆中玩耍,",
"%s不擅长玩“地板是熔岩”,",
"%s无法把火扑灭,",
"%s被烧成了焦炭,",
"%s被烧得只剩渣了,",
"%s成了全熟牛排,",
"%s被狱火吞噬了,",
"%s无法找到解药,",
"%s无法呼吸,",
"%s被活埋了,",
"%s无法控制瓦数,",
"%s变成了电池,",
"%s的生命力从正变负,",
"%s成了避雷针,",
"%s碎成渣了,",
"%s拼不起来了,",
"%s需要扫掉了,",
"%s变成了另一个土堆,",
"%s的腿长到脑袋那儿了,",
"%s未能成形,",
"%s饿死了,",
"%s找不到食物,",
"%s忘记吃东西了,",
"%s被舔了,",
"%s被血肉墙亲了!",
"%s试图逃跑,",
"%s被杀死了……",
"%s被捅了,",
"%s被黑暗中的什么东西杀死了!",
"%s成了宇航员,",
"%s现在是太空垃圾,",
"%s脱离了轨道,",
"%s已飞升,",
"%s已离开游戏,",
"%s被杀死了,凶手是希腊烈火,"
]
+1
View File
@@ -2,6 +2,7 @@
extends FullscreenPanelBase extends FullscreenPanelBase
@onready var audio = $"%audio" @onready var audio = $"%audio"
@onready var deadreason = $"%deadreason"
func beforeOpen(): func beforeOpen():
audio.play() audio.play()
+2 -1
View File
@@ -8,6 +8,7 @@ enum Difficulty {
EXPERT, EXPERT,
MASTER, MASTER,
} }
static var deadReasons: Array = JsonTool.parseJson("res://resources/constants/deadReasons.json")
static var difficulty: Difficulty = Difficulty.NORMAL # 难度倍数,可以写小数 static var difficulty: Difficulty = Difficulty.NORMAL # 难度倍数,可以写小数
static var allowFriendlyFire: bool = false # 是否允许友军伤害 static var allowFriendlyFire: bool = false # 是否允许友军伤害
static var bulletSpeedMultiplier: float = 1 # 子弹速度倍率 static var bulletSpeedMultiplier: float = 1 # 子弹速度倍率
@@ -26,4 +27,4 @@ static var entityLevelOffsetByWave: float = MathTool.percent(30) # 每波敌人
static var appleDropRateInfluenceByLuckValue: float = MathTool.percent(2) # 幸运值对苹果掉率的影响 static var appleDropRateInfluenceByLuckValue: float = MathTool.percent(2) # 幸运值对苹果掉率的影响
static var critRateInfluenceByLuckValue: float = MathTool.percent(2.5) # 幸运值对暴击率的影响 static var critRateInfluenceByLuckValue: float = MathTool.percent(2.5) # 幸运值对暴击率的影响
static var penerateRateInfluenceByLuckValue: float = MathTool.percent(3) # 幸运值对穿透率的影响 static var penerateRateInfluenceByLuckValue: float = MathTool.percent(3) # 幸运值对穿透率的影响
static var detainTime: float = 1000 # 血量如果在这个时间内没有改变才会开始播放降低动画 static var detainTime: float = 1000 # 血量如果在这个时间内没有改变才会开始播放降低动画
+9
View File
@@ -0,0 +1,9 @@
class_name JsonTool
static func parseJson(filePath: String):
var file = FileAccess.open(filePath, FileAccess.READ)
var json = file.get_as_text()
file.close()
var jsonObj = JSON.new()
jsonObj.parse(json)
return jsonObj.data
+1
View File
@@ -8,6 +8,7 @@ static var runningTime: int = 0
func _ready(): func _ready():
tree = get_tree() tree = get_tree()
rootNode = self rootNode = self
print(GameRule.deadReasons)
func _physics_process(delta): func _physics_process(delta):
runningTime += delta * 1000 runningTime += delta * 1000
if EntityBase.mobCount() == 0: if EntityBase.mobCount() == 0: