From 47608ed847862d3943fd1f53bc86ed180faa9ca7 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: Sun, 7 Sep 2025 13:39:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=E8=A7=92=E8=89=B2=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=98=BE=E7=A4=BA=E5=90=8D=E7=A7=B0=E5=B9=B6=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E9=9D=A2=E6=9D=BF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为熊、公鸡、母鸡等角色添加displayName属性 修改FullscreenPanelBase及相关面板以支持参数传递 完善GameOver面板显示凶手信息功能 调整部分角色的节点索引和状态栏位置 --- components/Characters/Bear.tscn | 1 + components/Characters/Chick.tscn | 4 ++-- components/Characters/Hen.tscn | 5 +++-- components/Characters/Rooster.tscn | 1 + components/Scenes/FullscreenPanels/GameOver.tscn | 2 -- scripts/Contents/Panels/GameOver.gd | 4 +++- scripts/Contents/Panels/MakeFeed.gd | 2 +- scripts/Contents/Panels/WeaponPanel.gd | 2 +- scripts/Statemachine/EntityBase.gd | 2 +- scripts/Statemachine/FullscreenPanelBase.gd | 6 +++--- scripts/Statemachine/UIState.gd | 4 ++-- 11 files changed, 18 insertions(+), 15 deletions(-) diff --git a/components/Characters/Bear.tscn b/components/Characters/Bear.tscn index fac1729..2df1de7 100644 --- a/components/Characters/Bear.tscn +++ b/components/Characters/Bear.tscn @@ -56,6 +56,7 @@ radius = 114.215 [node name="Bear" instance=ExtResource("1_3ves7")] script = ExtResource("2_kh2af") +displayName = "狗熊" [node name="texture" parent="." index="2"] position = Vector2(0, -80) diff --git a/components/Characters/Chick.tscn b/components/Characters/Chick.tscn index 6e2aabd..f8e6dfd 100644 --- a/components/Characters/Chick.tscn +++ b/components/Characters/Chick.tscn @@ -57,7 +57,7 @@ stream = ExtResource("5_vcsbb") [node name="attack3" type="AudioStreamPlayer2D" parent="sounds" index="8"] stream = ExtResource("7_qjhwc") -[node name="texture" parent="." index="1"] +[node name="texture" parent="." index="2"] position = Vector2(0, -37) sprite_frames = SubResource("SpriteFrames_xji3d") @@ -67,6 +67,6 @@ position = Vector2(30, -12) [node name="firepot" parent="texture/weapons/normal" index="0" instance=ExtResource("6_kvx3n")] unique_name_in_owner = true -[node name="statebar" parent="." index="2" node_paths=PackedStringArray("entity")] +[node name="statebar" parent="." index="3" node_paths=PackedStringArray("entity")] position = Vector2(0, -82) entity = NodePath("..") diff --git a/components/Characters/Hen.tscn b/components/Characters/Hen.tscn index a38b84e..92bae73 100644 --- a/components/Characters/Hen.tscn +++ b/components/Characters/Hen.tscn @@ -33,13 +33,14 @@ radius = 40.0 [node name="Hen" instance=ExtResource("1_twxai")] script = ExtResource("2_8u5a0") +displayName = "母鸡" drops = Array[int]([0, 1]) dropCounts = Array[Vector2]([Vector2(6, 12), Vector2(4, 8)]) [node name="hurt" parent="sounds" index="3"] stream = ExtResource("3_ojyt7") -[node name="texture" parent="." index="1"] +[node name="texture" parent="." index="2"] sprite_frames = SubResource("SpriteFrames_xwexj") animation = &"walk" @@ -48,6 +49,6 @@ shape = SubResource("CircleShape2D_0uubu") [node name="normal" type="Node2D" parent="texture/weapons" index="0"] -[node name="statebar" parent="." index="2" node_paths=PackedStringArray("entity")] +[node name="statebar" parent="." index="3" node_paths=PackedStringArray("entity")] position = Vector2(0, -114) entity = NodePath("..") diff --git a/components/Characters/Rooster.tscn b/components/Characters/Rooster.tscn index 7739689..195a82e 100644 --- a/components/Characters/Rooster.tscn +++ b/components/Characters/Rooster.tscn @@ -42,6 +42,7 @@ radius = 41.0122 [node name="Rooster" instance=ExtResource("1_e5pl8")] script = ExtResource("2_oqdqd") +displayName = "公鸡" [node name="weaponStore" parent="." index="0"] process_mode = 4 diff --git a/components/Scenes/FullscreenPanels/GameOver.tscn b/components/Scenes/FullscreenPanels/GameOver.tscn index 93d1e0e..30d575c 100644 --- a/components/Scenes/FullscreenPanels/GameOver.tscn +++ b/components/Scenes/FullscreenPanels/GameOver.tscn @@ -17,8 +17,6 @@ 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 script = ExtResource("2_6cd45") [node name="wrapper" parent="content" index="1"] diff --git a/scripts/Contents/Panels/GameOver.gd b/scripts/Contents/Panels/GameOver.gd index 3c11ff4..640e35b 100644 --- a/scripts/Contents/Panels/GameOver.gd +++ b/scripts/Contents/Panels/GameOver.gd @@ -4,5 +4,7 @@ extends FullscreenPanelBase @onready var audio = $"%audio" @onready var deadreason = $"%deadreason" -func beforeOpen(): +func beforeOpen(args: Array = []): audio.play() + var reasonTemplate = MathTool.randc_from(GameRule.deadReasons) + deadreason.text = (reasonTemplate + "凶手是%s。") % args diff --git a/scripts/Contents/Panels/MakeFeed.gd b/scripts/Contents/Panels/MakeFeed.gd index 7da1cd8..4c98684 100644 --- a/scripts/Contents/Panels/MakeFeed.gd +++ b/scripts/Contents/Panels/MakeFeed.gd @@ -39,7 +39,7 @@ func _ready(): ) avaliableFeeds.add_child(feed) -func beforeOpen(): +func beforeOpen(_args: Array = []): selectedCount = 0 regenerateCards() diff --git a/scripts/Contents/Panels/WeaponPanel.gd b/scripts/Contents/Panels/WeaponPanel.gd index 0725bd1..66ce012 100644 --- a/scripts/Contents/Panels/WeaponPanel.gd +++ b/scripts/Contents/Panels/WeaponPanel.gd @@ -3,7 +3,7 @@ extends FullscreenPanelBase @onready var box = $"%box" -func beforeOpen(): +func beforeOpen(_args: Array = []): for weapon in UIState.player.weapons: weapon.show() UIState.player.weaponStore.remove_child(weapon) diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 2ac707d..592af55 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -260,7 +260,7 @@ func tryDie(by: BulletBase): EffectController.create(preload("res://components/Effects/DeadBlood.tscn"), texture.global_position).shot() await die() if isPlayer() and UIState.player == self: - UIState.setPanel("GameOver") + UIState.setPanel("GameOver", [displayName, by.launcher.displayName]) func tryHeal(count: float): if inventory[ItemStore.ItemType.APPLE] > 0 and health < fields.get(FieldStore.Entity.MAX_HEALTH): inventory[ItemStore.ItemType.APPLE] -= 1 diff --git a/scripts/Statemachine/FullscreenPanelBase.gd b/scripts/Statemachine/FullscreenPanelBase.gd index d49e22c..06ad47b 100644 --- a/scripts/Statemachine/FullscreenPanelBase.gd +++ b/scripts/Statemachine/FullscreenPanelBase.gd @@ -9,8 +9,8 @@ func hidePanel(): await animator.animation_finished visible = false afterClose() -func showPanel(): - beforeOpen() +func showPanel(args: Array = []): + beforeOpen(args) visible = true animator.play("show") await animator.animation_finished @@ -19,7 +19,7 @@ func _ready(): visible = false # 钩子 -func beforeOpen(): +func beforeOpen(_args: Array = []): pass func afterClose(): pass diff --git a/scripts/Statemachine/UIState.gd b/scripts/Statemachine/UIState.gd index 623d6ff..8147420 100644 --- a/scripts/Statemachine/UIState.gd +++ b/scripts/Statemachine/UIState.gd @@ -64,13 +64,13 @@ func _physics_process(_delta): if canOpen: setPanel("Weapon") -static func setPanel(targetName: String = ""): +static func setPanel(targetName: String = "", args: Array = []): currentPanel = null for panel in panels.get_children(): if panel is FullscreenPanelBase: if panel.name == targetName: currentPanel = panel - panel.showPanel() + panel.showPanel(args) else: panel.hidePanel() static func closeCurrentPanel():