diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index 8f17ab91..e51f69a1 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -13,6 +13,7 @@ notes_干掉的血迹,干掉的血迹,,,,, c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,, prop_奇怪的肉_说明,,,,,, bag_tab_日志,笔记,,,,, +ux_panel_退出,退出,,,,, index_新游戏,新游戏,,,,,New Game index_继续游戏,继续游戏,,,,,Resume index_退出游戏,退出游戏,,,,,Exit @@ -20,7 +21,7 @@ ux_panel_继续,继续,,,,, ux_panel_笔记,笔记,,,,, ux_panel_设置,设置,,,,, ux_panel_返回主菜单,返回主菜单,,,,, -ux_panel_退出,退出,,,,, +ux_panel_退出游戏,退出游戏,,,,, setting_总音量,总音量,,,,,Main Volume setting_音效音量,音效音量,,,,,SFX Volume setting_对话音量,对话音量,,,,,Dialogue Volume @@ -67,11 +68,11 @@ prop_空手_说明,空空如也,,,,, prop_信碎片1,信碎片(一),,,[#texture=c01/信件左上.png],, prop_信碎片1_说明,浦育院院长秦阳,,,,, prop_信碎片2,信碎片(二),,,[#texture=c01/信件右上.png],, -prop_信碎片2_说明,民国21年,11月20日,,,,, +prop_信碎片2_说明,民国二十一年十月十五日,,,,, prop_银元,银元,,,[#texture=c01/银元.png],, prop_银元_说明,一枚“袁大头”银元,中华民国十年造。,,,,, prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],, -prop_院长的信_说明,浦育院院长秦阳
民国21年11月20日
致吕萍:
你现下境况如何?
你虽离开浦育院已久,但我始终没有忘记为你祈祷。
愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。
你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。
若有闲暇,欢迎你回浦育院看看。
院长童玉君
民国十九年十月十五日
公寓地址 芦昌路26弄3号,,,,, +prop_院长的信_说明,浦育院院长秦阳
致吕萍:
你现下境况如何?
你虽离开浦育院已久,但我始终没有忘记为你祈祷。
愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。
你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。
若有闲暇,欢迎你回浦育院看看。
院长童玉君
民国二十一年十月十五日
公寓地址 芦昌路26弄3号,,,,, prop_火柴,火柴,,,[#texture=c02/火柴.png],, prop_火柴_说明,盒里还剩下很多根,稍微有些受潮,,,[#texture=c02/火柴.png],, prop_小猫玩具的脑袋,小猫玩具的脑袋,,,[#texture=c02/新小猫头.png],, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index 7c58e0bd..2acacfc4 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -8,7 +8,7 @@ 笔记 [ID:ux_panel_笔记] 设置 [ID:ux_panel_设置] 返回主菜单 [ID:ux_panel_返回主菜单] -退出 [ID:ux_panel_退出] +退出游戏 [ID:ux_panel_退出游戏] 总音量[ID:setting_总音量] 音效音量[ID:setting_音效音量] @@ -68,13 +68,13 @@ 信碎片(一) [#texture=c01/信件左上.png] [ID:prop_信碎片1] 浦育院院长秦阳 [ID:prop_信碎片1_说明] 信碎片(二) [#texture=c01/信件右上.png] [ID:prop_信碎片2] -民国21年,11月20日 [ID:prop_信碎片2_说明] +民国二十一年十月十五日 [ID:prop_信碎片2_说明] 银元 [#texture=c01/银元.png] [ID:prop_银元] 一枚“袁大头”银元,中华民国十年造。 [ID:prop_银元_说明] # 重要物品 院长的信 [#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png] [ID:prop_院长的信] -浦育院院长秦阳
民国21年11月20日
致吕萍:
你现下境况如何?
你虽离开浦育院已久,但我始终没有忘记为你祈祷。
愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。
你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。
若有闲暇,欢迎你回浦育院看看。
院长童玉君
民国十九年十月十五日
公寓地址 芦昌路26弄3号 [ID:prop_院长的信_说明] +浦育院院长秦阳
致吕萍:
你现下境况如何?
你虽离开浦育院已久,但我始终没有忘记为你祈祷。
愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。
你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。
若有闲暇,欢迎你回浦育院看看。
院长童玉君
民国二十一年十月十五日
公寓地址 芦昌路26弄3号 [ID:prop_院长的信_说明] # c02 火柴 [#texture=c02/火柴.png] [ID:prop_火柴] diff --git a/scene/ground/scene/c01/s06_孤儿院长廊围墙.gd b/scene/ground/scene/c01/s06_孤儿院长廊围墙.gd index c653d35c..172302f5 100644 --- a/scene/ground/scene/c01/s06_孤儿院长廊围墙.gd +++ b/scene/ground/scene/c01/s06_孤儿院长廊围墙.gd @@ -79,16 +79,13 @@ func _dean_flip_book() -> void: # 在游戏开始前,更早的对话 func pre_game_intro(): SceneManager.freeze_player(0) - DialogueManager.dialogue_ended.connect(_on_pre_game_intro_finished, CONNECT_ONE_SHOT) var camera = SceneManager.get_camera_marker() as CameraFocusMarker camera.tween_zoom(1.5, 3.0) var p = $"../DeployLayer/四小孩画鬼差的对话ambush/FocusPoint" camera.focus_node(p, 3.0) await get_tree().create_timer(1.5).timeout DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s06_四个小孩画鬼差的对话") - - -func _on_pre_game_intro_finished(_res): + await DialogueManager.dialogue_ended # 重置镜头 SceneManager.focus_player_and_reset_zoom(2.5) await get_tree().create_timer(1.5).timeout diff --git a/scene/ground/scene/c01/s08_书店.gd b/scene/ground/scene/c01/s08_书店.gd index e98ebf93..02ca2f31 100644 --- a/scene/ground/scene/c01/s08_书店.gd +++ b/scene/ground/scene/c01/s08_书店.gd @@ -90,13 +90,10 @@ func _on_envolope_table_interacted() -> void: func first_enter_door() -> void: - await get_tree().create_timer(2.).timeout SceneManager.freeze_player(0) + await get_tree().create_timer(1.5).timeout DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s08_书店进门老板台词") - DialogueManager.dialogue_ended.connect(_on_dialogue_ended, CONNECT_ONE_SHOT) - - -func _on_dialogue_ended(_res) -> void: + await DialogueManager.dialogue_ended SceneManager.release_player() @@ -106,7 +103,8 @@ func assign_tasks() -> void: await get_tree().create_timer(4.5).timeout $"放报纸音效".play() DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s08_书店老板任务") - DialogueManager.dialogue_ended.connect(_on_dialogue_ended, CONNECT_ONE_SHOT) + await DialogueManager.dialogue_ended + SceneManager.release_player() ladder.enabled = true envolope_table.enabled = true diff --git a/scene/ground/scene/c01/s12_书店外_诡异版.gd b/scene/ground/scene/c01/s12_书店外_诡异版.gd index cd11435c..faf88ab8 100644 --- a/scene/ground/scene/c01/s12_书店外_诡异版.gd +++ b/scene/ground/scene/c01/s12_书店外_诡异版.gd @@ -69,16 +69,11 @@ func _intro_dialog() -> void: func ambush_begger_interacted(): begger.play("杂戏团夜晚_小孩放下碗") - SceneManager.freeze_player(0) + SceneManager.lock_player(0) await get_tree().create_timer(1.).timeout DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s12_小孩放下碗") - DialogueManager.dialogue_ended.connect( - _on_ambush_begger_interacted_dialogue_ended, CONNECT_ONE_SHOT - ) - - -func _on_ambush_begger_interacted_dialogue_ended(_res) -> void: - SceneManager.release_player() + await DialogueManager.dialogue_ended + SceneManager.unlock_player() interactable_bowl.enabled = true diff --git a/scene/settings/settings.tscn b/scene/settings/settings.tscn index 41c4b5cc..d0558955 100644 --- a/scene/settings/settings.tscn +++ b/scene/settings/settings.tscn @@ -170,6 +170,7 @@ layout_mode = 2 text = "ui_秒" [node name="GridContainer" type="GridContainer" parent="PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 32) layout_mode = 2 size_flags_horizontal = 4 columns = 2 @@ -196,9 +197,11 @@ focus_previous = NodePath("../FullscreenBox") text = "setting_窗口置顶" [node name="HSeparator3" type="HSeparator" parent="PanelContainer/VBoxContainer"] +visible = false layout_mode = 2 [node name="HBoxContainer3" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +visible = false custom_minimum_size = Vector2(0, 35) layout_mode = 2 diff --git a/scene/ux/panel/ux_panel.gd b/scene/ux/panel/ux_panel.gd index 2b09ec96..9c40a82d 100644 --- a/scene/ux/panel/ux_panel.gd +++ b/scene/ux/panel/ux_panel.gd @@ -1,17 +1,38 @@ extends CanvasLayer +# 继续 笔记 设置 返回主菜单 退出游戏 +@onready var continue_btn = %"继续" as Button +@onready var note_btn = %"笔记" as Button +@onready var settings_btn = %"设置" as Button +@onready var main_menu_btn = %"返回主菜单" as Button +@onready var quit_btn = %"退出游戏" as Button + func _ready() -> void: + $SfxOpen.play() layer = GlobalConfig.CANVAS_LAYER_UX_PANEL SceneManager.toggle_pause_counter(true) + continue_btn.pressed.connect(quit) + note_btn.pressed.connect(SceneManager.show_note) + settings_btn.pressed.connect(SceneManager.show_settings) + main_menu_btn.pressed.connect(SceneManager.checkout_index_page) + quit_btn.pressed.connect(_quit_game) + +func _quit_game() -> void: + # 从 ArchiveManager 处理退出信号 + ArchiveManager.notification(NOTIFICATION_WM_CLOSE_REQUEST) + # 退出游戏过程隐藏界面 + # 隐藏 panel + quit() + +func quit(): + $SfxOpen.global_play() + SceneManager.toggle_pause_counter(false) + queue_free() func _unhandled_input(event: InputEvent) -> void: # panel 界面接受所有输入事件 get_viewport().set_input_as_handled() - if ( - event.is_action_pressed("cancel") - or event.is_action_pressed("escape") - ): - SceneManager.toggle_pause_counter(false) - queue_free() + if event.is_action_pressed("cancel") or event.is_action_pressed("escape"): + quit() diff --git a/scene/ux/panel/ux_panel.tscn b/scene/ux/panel/ux_panel.tscn index 1907383f..3c58d366 100644 --- a/scene/ux/panel/ux_panel.tscn +++ b/scene/ux/panel/ux_panel.tscn @@ -1,16 +1,39 @@ -[gd_scene load_steps=6 format=3 uid="uid://ddlwnsccsmr8u"] +[gd_scene load_steps=11 format=3 uid="uid://ddlwnsccsmr8u"] [ext_resource type="Script" uid="uid://bo0i4wlcgmax2" path="res://scene/ux/panel/ux_panel.gd" id="1_8dnsb"] [ext_resource type="Texture2D" uid="uid://bi7l47cit2xs" path="res://asset/art/ui/ux_panel/完整背景.png" id="2_5mits"] +[ext_resource type="AudioStream" uid="uid://dyjifofhdx25w" path="res://asset/audio/sfx/交互/打开背包.wav" id="2_v1oku"] +[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_a3uyd"] [ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/inspect/inspect特写通用遮罩.png" id="3_mns6r"] [ext_resource type="FontFile" uid="uid://255whp7fuig5" path="res://asset/font/字体/三极行楷简体-粗.ttf" id="4_mns6r"] +[ext_resource type="AudioStream" uid="uid://bghyinc16m1nx" path="res://asset/audio/sfx/交互/收起背包.wav" id="4_ombcf"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_nw7ig"] +[sub_resource type="StyleBoxLine" id="StyleBoxLine_v1oku"] +color = Color(0.710047, 0.710047, 0.710047, 1) + +[sub_resource type="StyleBoxLine" id="StyleBoxLine_a3uyd"] +color = Color(1, 1, 1, 1) + [node name="UxPanel" type="CanvasLayer"] process_mode = 3 script = ExtResource("1_8dnsb") +[node name="SfxOpen" type="AudioStreamPlayer" parent="."] +process_mode = 1 +stream = ExtResource("2_v1oku") +bus = &"game_sfx" +script = ExtResource("3_a3uyd") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="SfxClose" type="AudioStreamPlayer" parent="."] +process_mode = 1 +stream = ExtResource("4_ombcf") +bus = &"game_sfx" +script = ExtResource("3_a3uyd") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + [node name="Bag" type="Panel" parent="."] custom_minimum_size = Vector2(564, 240) anchors_preset = 15 @@ -40,57 +63,98 @@ grow_horizontal = 2 grow_vertical = 2 texture = ExtResource("3_mns6r") -[node name="继续" type="Button" parent="Bag"] +[node name="MarginContainer" type="MarginContainer" parent="Bag"] layout_mode = 0 -offset_left = 44.0 -offset_top = 88.0 -offset_right = 191.0 -offset_bottom = 122.0 +offset_left = 43.0 +offset_top = 81.0 +offset_right = 203.0 +offset_bottom = 121.0 +metadata/_edit_use_anchors_ = true + +[node name="继续" type="Button" parent="Bag/MarginContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 20) +layout_mode = 2 +size_flags_horizontal = 4 theme_override_fonts/font = ExtResource("4_mns6r") -theme_override_font_sizes/font_size = 26 +theme_override_font_sizes/font_size = 23 +theme_override_styles/hover = SubResource("StyleBoxLine_v1oku") +theme_override_styles/pressed = SubResource("StyleBoxLine_a3uyd") text = "ux_panel_继续" flat = true -[node name="笔记" type="Button" parent="Bag"] +[node name="MarginContainer2" type="MarginContainer" parent="Bag"] layout_mode = 0 -offset_left = 123.0 -offset_top = 119.0 -offset_right = 270.0 -offset_bottom = 153.0 +offset_left = 119.0 +offset_top = 124.0 +offset_right = 279.0 +offset_bottom = 164.0 + +[node name="笔记" type="Button" parent="Bag/MarginContainer2"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 20) +layout_mode = 2 +size_flags_horizontal = 4 theme_override_fonts/font = ExtResource("4_mns6r") -theme_override_font_sizes/font_size = 26 +theme_override_font_sizes/font_size = 23 +theme_override_styles/hover = SubResource("StyleBoxLine_v1oku") +theme_override_styles/pressed = SubResource("StyleBoxLine_a3uyd") text = "ux_panel_笔记" flat = true -[node name="设置" type="Button" parent="Bag"] +[node name="MarginContainer3" type="MarginContainer" parent="Bag"] layout_mode = 0 -offset_left = 203.0 -offset_top = 107.0 -offset_right = 383.0 -offset_bottom = 147.0 +offset_left = 222.0 +offset_top = 108.0 +offset_right = 382.0 +offset_bottom = 148.0 + +[node name="设置" type="Button" parent="Bag/MarginContainer3"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 20) +layout_mode = 2 +size_flags_horizontal = 4 theme_override_fonts/font = ExtResource("4_mns6r") -theme_override_font_sizes/font_size = 26 +theme_override_font_sizes/font_size = 23 +theme_override_styles/hover = SubResource("StyleBoxLine_v1oku") +theme_override_styles/pressed = SubResource("StyleBoxLine_a3uyd") text = "ux_panel_设置" flat = true -[node name="返回主菜单" type="Button" parent="Bag"] +[node name="MarginContainer4" type="MarginContainer" parent="Bag"] layout_mode = 0 -offset_left = 279.0 -offset_top = 161.0 -offset_right = 489.0 -offset_bottom = 195.0 +offset_left = 266.0 +offset_top = 164.0 +offset_right = 495.0 +offset_bottom = 204.0 + +[node name="返回主菜单" type="Button" parent="Bag/MarginContainer4"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 20) +layout_mode = 2 +size_flags_horizontal = 4 theme_override_fonts/font = ExtResource("4_mns6r") -theme_override_font_sizes/font_size = 26 +theme_override_font_sizes/font_size = 23 +theme_override_styles/hover = SubResource("StyleBoxLine_v1oku") +theme_override_styles/pressed = SubResource("StyleBoxLine_a3uyd") text = "ux_panel_返回主菜单" flat = true -[node name="退出" type="Button" parent="Bag"] +[node name="MarginContainer5" type="MarginContainer" parent="Bag"] layout_mode = 0 -offset_left = 383.0 -offset_top = 124.0 -offset_right = 563.0 -offset_bottom = 164.0 +offset_left = 384.0 +offset_top = 135.0 +offset_right = 590.0 +offset_bottom = 175.0 + +[node name="退出游戏" type="Button" parent="Bag/MarginContainer5"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 20) +layout_mode = 2 +size_flags_horizontal = 4 theme_override_fonts/font = ExtResource("4_mns6r") -theme_override_font_sizes/font_size = 26 -text = "ux_panel_退出" +theme_override_font_sizes/font_size = 23 +theme_override_styles/hover = SubResource("StyleBoxLine_v1oku") +theme_override_styles/pressed = SubResource("StyleBoxLine_a3uyd") +text = "ux_panel_退出游戏" flat = true