From 08f3067c7ffde54d8c135b007169ceb4732fe411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Sat, 13 Sep 2025 20:52:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=B8=B8=E6=88=8F=E7=BB=93=E6=9D=9F):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AD=90=E5=BC=B9=E6=98=BE=E7=A4=BA=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E5=B9=B6=E6=94=B9=E8=BF=9B=E6=AD=BB=E4=BA=A1=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为所有子弹类型添加displayName属性用于显示 - 修改GameOver面板显示死亡原因,包含子弹名称和发射者 - 更新死亡原因文本格式为富文本样式 - 移除GameOver面板中多余的LabelSettings资源 --- components/Bullets/BearSprint.tscn | 1 + .../Bullets/BossAttack/Bear/ArrowSeven.tscn | 1 + .../BossAttack/Bear/ForeverRainbow.tscn | 1 + .../Bullets/BossAttack/Bear/SunDance.tscn | 1 + components/Bullets/ChickLaser.tscn | 2 +- components/Bullets/ChickSprint.tscn | 1 + components/Bullets/Diamond.tscn | 1 + components/Bullets/FireScan.tscn | 1 + components/Bullets/Star.tscn | 1 + .../Scenes/FullscreenPanels/GameOver.tscn | 18 +- resources/constants/deadReasons.json | 266 +++++++++--------- scripts/Contents/Panels/GameOver.gd | 6 +- scripts/Statemachine/BulletBase.gd | 1 + scripts/Statemachine/EntityBase.gd | 3 +- 14 files changed, 155 insertions(+), 149 deletions(-) diff --git a/components/Bullets/BearSprint.tscn b/components/Bullets/BearSprint.tscn index e947946..0323025 100644 --- a/components/Bullets/BearSprint.tscn +++ b/components/Bullets/BearSprint.tscn @@ -8,6 +8,7 @@ radius = 63.1269 [node name="BearSprint" instance=ExtResource("1_qcnih")] script = ExtResource("2_87hcl") +displayName = "猛冲" [node name="hitbox" parent="." index="1"] shape = SubResource("CircleShape2D_rirs4") diff --git a/components/Bullets/BossAttack/Bear/ArrowSeven.tscn b/components/Bullets/BossAttack/Bear/ArrowSeven.tscn index e22aedd..5b0829f 100644 --- a/components/Bullets/BossAttack/Bear/ArrowSeven.tscn +++ b/components/Bullets/BossAttack/Bear/ArrowSeven.tscn @@ -122,6 +122,7 @@ alpha_curve = SubResource("CurveTexture_wjo54") position = Vector2(-34, -24) script = ExtResource("2_uqsop") allColor = SubResource("GradientTexture1D_e0qv5") +displayName = "七彩矢" autoLoopAnimation = true [node name="texture" parent="." index="0"] diff --git a/components/Bullets/BossAttack/Bear/ForeverRainbow.tscn b/components/Bullets/BossAttack/Bear/ForeverRainbow.tscn index ea00a55..b6d6a8b 100644 --- a/components/Bullets/BossAttack/Bear/ForeverRainbow.tscn +++ b/components/Bullets/BossAttack/Bear/ForeverRainbow.tscn @@ -133,6 +133,7 @@ height = 86.0 [node name="ForeverRainbow" instance=ExtResource("1_sltl7")] script = ExtResource("2_wwmq8") allColor = SubResource("GradientTexture1D_gcnu1") +displayName = "永恒彩虹" lifeTime = 11000.0 indisDamage = true autoSpawnAnimation = true diff --git a/components/Bullets/BossAttack/Bear/SunDance.tscn b/components/Bullets/BossAttack/Bear/SunDance.tscn index 1c1c1d0..3274b0e 100644 --- a/components/Bullets/BossAttack/Bear/SunDance.tscn +++ b/components/Bullets/BossAttack/Bear/SunDance.tscn @@ -120,6 +120,7 @@ modulate = Color(1, 1, 1, 0) scale = Vector2(1e-05, 1e-05) script = ExtResource("2_0kdtj") allColor = SubResource("GradientTexture1D_ikq3n") +displayName = "太阳舞" autoSpawnAnimation = true freeAfterSpawn = true diff --git a/components/Bullets/ChickLaser.tscn b/components/Bullets/ChickLaser.tscn index 857c212..41eb7c8 100644 --- a/components/Bullets/ChickLaser.tscn +++ b/components/Bullets/ChickLaser.tscn @@ -205,12 +205,12 @@ height = 500.0 [node name="ChickLaser" instance=ExtResource("1_eb54j")] script = ExtResource("2_7g0f0") +displayName = "冷冻激光" metadata/_edit_vertical_guides_ = [688.0, 189.0] [node name="rect" parent="texture" index="0"] material = SubResource("ShaderMaterial_x6ivr") offset_left = 188.0 -offset_top = 0.0 offset_right = 238.0 offset_bottom = 500.0 diff --git a/components/Bullets/ChickSprint.tscn b/components/Bullets/ChickSprint.tscn index f10a605..3cddab9 100644 --- a/components/Bullets/ChickSprint.tscn +++ b/components/Bullets/ChickSprint.tscn @@ -8,6 +8,7 @@ radius = 63.1269 [node name="ChickSprint" instance=ExtResource("1_hvhrf")] script = ExtResource("2_fecvj") +displayName = "猛冲" [node name="hitbox" parent="." index="1"] shape = SubResource("CircleShape2D_rirs4") diff --git a/components/Bullets/Diamond.tscn b/components/Bullets/Diamond.tscn index b882ca2..258041b 100644 --- a/components/Bullets/Diamond.tscn +++ b/components/Bullets/Diamond.tscn @@ -91,6 +91,7 @@ alpha_curve = SubResource("CurveTexture_diybr") [node name="Diamond" instance=ExtResource("1_8udva")] script = ExtResource("2_yxtyj") +displayName = "冰钻石" lifeTime = 5000.0 indisDamage = true diff --git a/components/Bullets/FireScan.tscn b/components/Bullets/FireScan.tscn index 5896e82..dc3873a 100644 --- a/components/Bullets/FireScan.tscn +++ b/components/Bullets/FireScan.tscn @@ -8,6 +8,7 @@ size = Vector2(50, 50) [node name="FireScan" instance=ExtResource("1_cqre5")] script = ExtResource("2_qprdp") +displayName = "狱炎" lifeDistance = 200.0 [node name="hitbox" parent="." index="1"] diff --git a/components/Bullets/Star.tscn b/components/Bullets/Star.tscn index a90f6ea..3380bca 100644 --- a/components/Bullets/Star.tscn +++ b/components/Bullets/Star.tscn @@ -62,6 +62,7 @@ radius = 19.2354 [node name="Star" instance=ExtResource("1_x6yf7")] script = ExtResource("2_y4b0l") +displayName = "星星" lifeTime = 1000.0 autoLoopAnimation = true diff --git a/components/Scenes/FullscreenPanels/GameOver.tscn b/components/Scenes/FullscreenPanels/GameOver.tscn index 6fa4e66..5ba33e3 100644 --- a/components/Scenes/FullscreenPanels/GameOver.tscn +++ b/components/Scenes/FullscreenPanels/GameOver.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://beo6s1kudbbve"] +[gd_scene load_steps=7 format=3 uid="uid://beo6s1kudbbve"] [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"] @@ -12,10 +12,6 @@ bg_color = Color(1, 0, 0, 0.3) font = ExtResource("3_oynlg") 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")] offset_top = 0.0 offset_bottom = 0.0 @@ -29,22 +25,24 @@ layout_mode = 2 size_flags_vertical = 3 theme_override_styles/panel = SubResource("StyleBoxFlat_7gbuu") -[node name="VBoxContainer" type="VBoxContainer" parent="content/wrapper/container" index="0"] +[node name="wrapper" 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"] +[node name="text" type="Label" parent="content/wrapper/container/wrapper" index="0"] layout_mode = 2 size_flags_horizontal = 4 text = "败北" label_settings = SubResource("LabelSettings_17i5j") -[node name="deadreason" type="Label" parent="content/wrapper/container/VBoxContainer" index="1"] +[node name="deadreason" type="RichTextLabel" parent="content/wrapper/container/wrapper" index="1"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 -text = "死亡原因" -label_settings = SubResource("LabelSettings_ndokf") +bbcode_enabled = true +text = "[color=gray]死亡原因[/color]" +fit_content = true +autowrap_mode = 0 [node name="audio" type="AudioStreamPlayer2D" parent="." index="2"] unique_name_in_owner = true diff --git a/resources/constants/deadReasons.json b/resources/constants/deadReasons.json index e3043ab..7a6a267 100644 --- a/resources/constants/deadReasons.json +++ b/resources/constants/deadReasons.json @@ -1,135 +1,135 @@ [ - "%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跳起了舞,", - "%s被开发者玩死了,", - "%s被*刻意的游戏设计*杀死了!", - "%s菜死了," + "[b]%s[/b]被杀死了,", + "[b]%s[/b]被掏空了,", + "[b]%s[/b]被谋杀了,", + "[b]%s[/b]的脸被撕烂了,", + "[b]%s[/b]的内脏被扯掉了,", + "[b]%s[/b]被毁灭了,", + "[b]%s[/b]的头骨被压碎了,", + "[b]%s[/b]被屠杀了,", + "[b]%s[/b]被刺穿了,", + "[b]%s[/b]被撕成两半了,", + "[b]%s[/b]被斩首了,", + "[b]%s[/b]的手臂没了,", + "[b]%s[/b]看着自己的内脏变成了“外脏”,", + "[b]%s[/b]被野蛮地解剖了,", + "[b]%s[/b]的四肢被扯掉了,", + "[b]%s[/b]的身体血肉模糊了,", + "[b]%s[/b]的重要器官毁了,", + "[b]%s[/b]变成了一滩肉,", + "[b]%s[/b]被踢出了游戏,", + "[b]%s[/b]被折成两半了,", + "[b]%s[/b]被腰斩了,", + "[b]%s[/b]被千刀万剐了,", + "[b]%s[/b]求死的愿望实现了,", + "[b]%s[/b]被削肉去骨了,", + "[b]%s[/b]的挣扎终于停止了,", + "[b]%s[/b]的脑袋搬家了,", + "[b]%s[/b]的肠子被扯出来了,", + "[b]%s[/b]的旅程结束了,", + "[b]%s[/b]被送去见奥库瑞姆了,", + "[b]%s[/b]被浸渍了,", + "[b]%s[/b]被放干了血,", + "[b]%s[/b]被送到了骷髅区,", + "[b]%s[/b]被自发切除了脑叶,", + "[b]%s[/b]被压成了肉酱,", + "[b]%s[/b]被碾成了肉泥,", + "[b]%s[/b]的骨头被敲得粉碎,", + "[b]%s[/b]成了怪物的食物,", + "[b]%s[/b]的家被重塑了,", + "[b]%s[/b]被迫自愿献血了,", + "[b]%s[/b]的天灵盖被掀了,", + "[b]%s[/b]的头顶被削掉了,", + "[b]%s[/b]的零件放错了位置,", + "[b]%s[/b]被打成了爽口酱汁,", + "[b]%s[/b]的脊椎被扯掉了,", + "[b]%s[/b]的存活纪录被终结了,", + "[b]%s[/b]接受了强制截肢,", + "[b]%s[/b]的脖子被折断了,", + "[b]%s[/b]被撕成了碎片,", + "[b]%s[/b]重伤不治,", + "[b]%s[/b]被告知阳寿已尽,", + "[b]%s[/b]的无能被展示了,", + "[b]%s[/b]的灵魂被抽离了,", + "[b]%s[/b]经历了仁慈的安乐死,", + "[b]%s[/b]被自下而上地吃掉了,", + "[b]%s[/b]被去骨了,", + "[b]%s[/b]的两个肾都被偷了,", + "[b]%s[/b]的堕落结束了,", + "[b]%s[/b]的椎间盘脱出了,", + "[b]%s[/b]的遗体被捐赠给了科学,", + "[b]%s[/b]的大脑变成了果酱,", + "[b]%s[/b]变成了下酒菜,", + "[b]%s[/b]被送到了农场,", + "[b]%s[/b]咽下了最后一口气,", + "[b]%s[/b]的心跳停止了,", + "[b]%s[/b]的头部挨了一记猛的,", + "[b]%s[/b]被抹杀了,", + "[b]%s[/b]受了脱套伤,", + "[b]%s[/b]被剥了皮,", + "[b]%s[/b]被围杀了,", + "[b]%s[/b]被打屁股了,", + "[b]%s[/b]被抓到了,", + "[b]%s[/b]被杀掉了,", + "[b]%s[/b]被放进水晶棺里了,", + "[b]%s[/b]已经被埋了,", + "[b]%s[/b]很快就会被遗忘,", + "[b]%s[/b]被劈了,", + "[b]%s[/b]摔死了,", + "[b]%s[/b]没有反弹,", + "[b]%s[/b]发明了重力,", + "[b]%s[/b]领悟了“抛出窗外”的意思,", + "[b]%s[/b]自由……自由落体了,", + "[b]%s[/b]尝试了滑冰上坡,", + "[b]%s[/b]认为自己会飞,", + "[b]%s[/b]留下了一个大坑,", + "[b]%s[/b]忘记了自己绝妙的想法,", + "[b]%s[/b]忘了呼吸,", + "[b]%s[/b]与鱼同眠,", + "[b]%s[/b]溺死了,", + "[b]%s[/b]成了鲨鱼的食物,", + "[b]%s[/b]试图饮尽湖水,", + "[b]%s[/b]发现了亚特兰蒂斯,", + "[b]%s[/b]忘了带毛巾,", + "[b]%s[/b]被熔化了,", + "[b]%s[/b]被烧成了灰,", + "[b]%s[/b]试图在熔岩中游泳,", + "[b]%s[/b]喜欢在岩浆中玩耍,", + "[b]%s[/b]不擅长玩“地板是熔岩”,", + "[b]%s[/b]无法把火扑灭,", + "[b]%s[/b]被烧成了焦炭,", + "[b]%s[/b]被烧得只剩渣了,", + "[b]%s[/b]成了全熟牛排,", + "[b]%s[/b]被狱火吞噬了,", + "[b]%s[/b]无法找到解药,", + "[b]%s[/b]无法呼吸,", + "[b]%s[/b]被活埋了,", + "[b]%s[/b]无法控制瓦数,", + "[b]%s[/b]变成了电池,", + "[b]%s[/b]的生命力从正变负,", + "[b]%s[/b]成了避雷针,", + "[b]%s[/b]碎成渣了,", + "[b]%s[/b]拼不起来了,", + "[b]%s[/b]需要扫掉了,", + "[b]%s[/b]变成了另一个土堆,", + "[b]%s[/b]的腿长到脑袋那儿了,", + "[b]%s[/b]未能成形,", + "[b]%s[/b]饿死了,", + "[b]%s[/b]找不到食物,", + "[b]%s[/b]忘记吃东西了,", + "[b]%s[/b]被舔了,", + "[b]%s[/b]被血肉墙亲了!", + "[b]%s[/b]试图逃跑,", + "[b]%s[/b]被杀死了……", + "[b]%s[/b]被捅了,", + "[b]%s[/b]被黑暗中的什么东西杀死了!", + "[b]%s[/b]成了宇航员,", + "[b]%s[/b]现在是太空垃圾,", + "[b]%s[/b]脱离了轨道,", + "[b]%s[/b]已飞升,", + "[b]%s[/b]已离开游戏,", + "[b]%s[/b]跳起了舞,", + "[b]%s[/b]被开发者玩死了,", + "[b]%s[/b]被*刻意的游戏设计*杀死了!", + "[b]%s[/b]菜死了," ] \ No newline at end of file diff --git a/scripts/Contents/Panels/GameOver.gd b/scripts/Contents/Panels/GameOver.gd index 640e35b..e3f09e0 100644 --- a/scripts/Contents/Panels/GameOver.gd +++ b/scripts/Contents/Panels/GameOver.gd @@ -1,10 +1,10 @@ @tool extends FullscreenPanelBase -@onready var audio = $"%audio" -@onready var deadreason = $"%deadreason" +@onready var audio: AudioStreamPlayer2D = $"%audio" +@onready var deadreason: RichTextLabel = $"%deadreason" func beforeOpen(args: Array = []): audio.play() var reasonTemplate = MathTool.randc_from(GameRule.deadReasons) - deadreason.text = (reasonTemplate + "凶手是%s。") % args + deadreason.text = ("[color=gray]" + reasonTemplate + "凶手是[b]%s[/b]的[b]%s[/b]。[/color]") % args diff --git a/scripts/Statemachine/BulletBase.gd b/scripts/Statemachine/BulletBase.gd index ca06a2e..3b02e33 100644 --- a/scripts/Statemachine/BulletBase.gd +++ b/scripts/Statemachine/BulletBase.gd @@ -1,6 +1,7 @@ extends Area2D class_name BulletBase +@export var displayName: String = "未知子弹" @export var speed: float = 10.0 @export var damage: float = 10.0 @export var penerate: float = 0.0 diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 932458e..5f18b03 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -290,7 +290,7 @@ func tryDie(by: BulletBase): ) if isPlayer(): if UIState.player == self: - UIState.setPanel("GameOver", [displayName, by.launcher.displayName]) + UIState.setPanel("GameOver", [displayName, by.launcher.displayName, by.displayName]) EffectController.create(preload("res://components/Effects/DeadBlood.tscn"), texture.global_position).shot() await die() func tryHeal(count: float): @@ -299,7 +299,6 @@ func tryHeal(count: float): playSound("heal") healed.emit(heal(count * fields.get(FieldStore.Entity.HEAL_ABILITY))) healthChanged.emit(health) - func findWeaponAnchor(weaponName: String): var anchor = $"%weapons".get_node_or_null(weaponName) if anchor is Node2D: