From 7bc780ebc2f177ec1df1b1668d3273d9f13cdd86 Mon Sep 17 00:00:00 2001 From: betalars Date: Fri, 30 May 2025 16:10:44 +0200 Subject: [PATCH] add lore feedback --- .../youth_room/audio/board_completed.wav | 3 + .../audio/board_completed.wav.import | 24 ++++++ .../youth_room/audio/board_incomplete.wav | 3 + .../audio/board_incomplete.wav.import | 24 ++++++ .../youth_room/audio/board_unfitting.wav | 3 + .../audio/board_unfitting.wav.import | 24 ++++++ .../youth_room/youth_room.tscn | 53 +++++++++++- src/dev-util/stereo-switch.gd | 2 +- src/logic-scenes/board/card-board.gd | 51 +++++++++-- src/logic-scenes/board/physics-board.tscn | 84 ++++++++++++++++++- src/logic-scenes/board/sticky-note.gd | 4 +- .../collectable/new_collectable_ui.gd | 20 ++++- 12 files changed, 281 insertions(+), 14 deletions(-) create mode 100644 src/base-environments/youth_room/audio/board_completed.wav create mode 100644 src/base-environments/youth_room/audio/board_completed.wav.import create mode 100644 src/base-environments/youth_room/audio/board_incomplete.wav create mode 100644 src/base-environments/youth_room/audio/board_incomplete.wav.import create mode 100644 src/base-environments/youth_room/audio/board_unfitting.wav create mode 100644 src/base-environments/youth_room/audio/board_unfitting.wav.import diff --git a/src/base-environments/youth_room/audio/board_completed.wav b/src/base-environments/youth_room/audio/board_completed.wav new file mode 100644 index 0000000..57ce983 --- /dev/null +++ b/src/base-environments/youth_room/audio/board_completed.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13cdca1e64464c80a687b0863cf5b80ea3d5316f672b969b6c6bd7a16172eca0 +size 1414854 diff --git a/src/base-environments/youth_room/audio/board_completed.wav.import b/src/base-environments/youth_room/audio/board_completed.wav.import new file mode 100644 index 0000000..1ec85bd --- /dev/null +++ b/src/base-environments/youth_room/audio/board_completed.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bywmf3patoe56" +path="res://.godot/imported/board_completed.wav-5729ec7ec6afa4c9611784f034fcb0d1.sample" + +[deps] + +source_file="res://base-environments/youth_room/audio/board_completed.wav" +dest_files=["res://.godot/imported/board_completed.wav-5729ec7ec6afa4c9611784f034fcb0d1.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/src/base-environments/youth_room/audio/board_incomplete.wav b/src/base-environments/youth_room/audio/board_incomplete.wav new file mode 100644 index 0000000..4341920 --- /dev/null +++ b/src/base-environments/youth_room/audio/board_incomplete.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7ac9fd4314404e4bff2a3a6fb5810acc2aca04e709f16a85846d046bcb2338f +size 1172684 diff --git a/src/base-environments/youth_room/audio/board_incomplete.wav.import b/src/base-environments/youth_room/audio/board_incomplete.wav.import new file mode 100644 index 0000000..a7678c9 --- /dev/null +++ b/src/base-environments/youth_room/audio/board_incomplete.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dj8fpajqhj4k7" +path="res://.godot/imported/board_incomplete.wav-49b228daaa12eb0be66520e1d2f3a349.sample" + +[deps] + +source_file="res://base-environments/youth_room/audio/board_incomplete.wav" +dest_files=["res://.godot/imported/board_incomplete.wav-49b228daaa12eb0be66520e1d2f3a349.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/src/base-environments/youth_room/audio/board_unfitting.wav b/src/base-environments/youth_room/audio/board_unfitting.wav new file mode 100644 index 0000000..7cddf02 --- /dev/null +++ b/src/base-environments/youth_room/audio/board_unfitting.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a2990888d24b5f3b917f9d08cb2640572888dd38fe6127b577cfbc8edf24e1d +size 987300 diff --git a/src/base-environments/youth_room/audio/board_unfitting.wav.import b/src/base-environments/youth_room/audio/board_unfitting.wav.import new file mode 100644 index 0000000..35ce246 --- /dev/null +++ b/src/base-environments/youth_room/audio/board_unfitting.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://brolrc3lhaeid" +path="res://.godot/imported/board_unfitting.wav-afbf1c6abdc3ac1e4cd8ff645b647e50.sample" + +[deps] + +source_file="res://base-environments/youth_room/audio/board_unfitting.wav" +dest_files=["res://.godot/imported/board_unfitting.wav-afbf1c6abdc3ac1e4cd8ff645b647e50.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/src/base-environments/youth_room/youth_room.tscn b/src/base-environments/youth_room/youth_room.tscn index e4920e7..1ff0453 100644 --- a/src/base-environments/youth_room/youth_room.tscn +++ b/src/base-environments/youth_room/youth_room.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=112 format=4 uid="uid://b3b0gyvklqn50"] +[gd_scene load_steps=113 format=4 uid="uid://b3b0gyvklqn50"] [ext_resource type="Script" uid="uid://belkrno67sft0" path="res://base-environments/youth_room/room_handle.gd" id="1_aitp0"] [ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="1_jf3oi"] @@ -901,6 +901,9 @@ radius = 0.469631 [sub_resource type="ViewportTexture" id="ViewportTexture_hdmps"] viewport_path = NodePath("logic/MindBoard/UiWrapper/UiSprite/SubViewport") +[sub_resource type="ViewportTexture" id="ViewportTexture_v3447"] +viewport_path = NodePath("logic/Door/UiWrapper/UiSprite/SubViewport") + [sub_resource type="Animation" id="Animation_xum02"] length = 0.001 tracks/0/type = "value" @@ -1781,6 +1784,7 @@ size = Vector2i(400, 350) render_target_update_mode = 4 [node name="CollectableUi" parent="logic/MaskMemento/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")] +is_exit = null [node name="HoverDetect" type="CollisionShape3D" parent="logic/MaskMemento"] shape = SubResource("CapsuleShape3D_72g2i") @@ -1818,6 +1822,7 @@ render_target_update_mode = 4 [node name="CollectableUi" parent="logic/ClothesMemento/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")] scene = 3 +is_exit = null [node name="HoverDetect" type="CollisionShape3D" parent="logic/ClothesMemento"] transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, 0, -0.237872, 0) @@ -1856,6 +1861,7 @@ render_target_update_mode = 4 [node name="CollectableUi" parent="logic/ComicMemento/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")] scene = 2 +is_exit = null [node name="HoverDetect" type="CollisionShape3D" parent="logic/ComicMemento"] transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, 0, -0.237872, 0) @@ -1895,6 +1901,7 @@ render_target_update_mode = 4 [node name="CollectableUi" parent="logic/CeilingMemento/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")] scene = 0 +is_exit = null [node name="HoverDetect" type="CollisionShape3D" parent="logic/CeilingMemento"] transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, 0, -0.237872, 0) @@ -1933,11 +1940,50 @@ render_target_update_mode = 4 [node name="CollectableUi" parent="logic/MindBoard/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")] is_board = true +is_exit = null [node name="HoverDetect" type="CollisionShape3D" parent="logic/MindBoard"] transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0) shape = SubResource("CapsuleShape3D_72g2i") +[node name="Door" type="Area3D" parent="logic" groups=["interactables"]] +unique_name_in_owner = true +transform = Transform3D(0.999999, 0, 4.9738e-14, 0, 1, 0, -4.9738e-14, 0, 0.999999, 0.115203, 1.3931, -0.954428) +collision_layer = 16 +script = ExtResource("11_6fwv8") + +[node name="collectable_particles" parent="logic/Door" instance=ExtResource("12_qxx2k")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755) +visible = false + +[node name="UiWrapper" type="Area3D" parent="logic/Door"] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0) +script = ExtResource("11_7uxd8") +billboard = false + +[node name="UI_click_collider" type="CollisionShape3D" parent="logic/Door/UiWrapper"] +transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397) +shape = SubResource("BoxShape3D_cb3g8") + +[node name="UiSprite" type="Sprite3D" parent="logic/Door/UiWrapper"] +transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, -1.0693e-14, 0, 0.180784) +modulate = Color(0.941183, 0.904347, 0.886647, 1) +pixel_size = 0.015 +texture = SubResource("ViewportTexture_v3447") + +[node name="SubViewport" type="SubViewport" parent="logic/Door/UiWrapper/UiSprite"] +transparent_bg = true +use_hdr_2d = true +size = Vector2i(400, 350) +render_target_update_mode = 4 + +[node name="CollectableUi" parent="logic/Door/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")] +is_exit = true + +[node name="HoverDetect" type="CollisionShape3D" parent="logic/Door"] +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0) +shape = SubResource("CapsuleShape3D_72g2i") + [node name="DoorTrigger" type="Area3D" parent="logic" groups=["interactables"]] unique_name_in_owner = true process_mode = 4 @@ -1971,6 +2017,7 @@ size = Vector2i(400, 350) render_target_update_mode = 4 [node name="CollectableUi" parent="logic/DoorTrigger/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")] +is_exit = null [node name="HoverDetect" type="CollisionShape3D" parent="logic/DoorTrigger"] transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0) @@ -2293,7 +2340,6 @@ light_array = Array[Vector3]([Vector3(-0.545, 0.915, 1.035), Vector3(-0.47, 0.85 [connection signal="body_exited" from="logic/Bed and Ladders/reset_failover" to="logic/PlayerController" method="_on_bed_exit"] [connection signal="pressed" from="logic/UI/ending_button" to="logic/UI/ending_button" method="hide"] [connection signal="pressed" from="logic/UI/ending_button" to="logic/UI/ending" method="show"] -[connection signal="board_completed" from="logic/UI/Board" to="logic/UI/ending_button" method="show"] [connection signal="emit_thunder" from="logic/ScenePlayer/JuiJutsu" to="AnimationPlayer" method="play" binds= ["lighting_and_thunder"]] [connection signal="finished" from="logic/ScenePlayer/draven" to="logic/ScenePlayer" method="on_draeven_done"] [connection signal="input_event" from="logic/MaskMemento/UiWrapper" to="logic/MaskMemento/UiWrapper" method="_on_input_event"] @@ -2306,4 +2352,7 @@ light_array = Array[Vector3]([Vector3(-0.545, 0.915, 1.035), Vector3(-0.47, 0.85 [connection signal="scene_skipped" from="logic/CeilingMemento/UiWrapper/UiSprite/SubViewport/CollectableUi" to="logic/UI/Board" method="on_scene_skipped"] [connection signal="input_event" from="logic/MindBoard/UiWrapper" to="logic/MindBoard/UiWrapper" method="_on_input_event"] [connection signal="open_board" from="logic/MindBoard/UiWrapper/UiSprite/SubViewport/CollectableUi" to="logic/UI/Board" method="claim_focus"] +[connection signal="input_event" from="logic/Door/UiWrapper" to="logic/Door/UiWrapper" method="_on_input_event"] +[connection signal="open_board" from="logic/Door/UiWrapper/UiSprite/SubViewport/CollectableUi" to="logic/UI/Board" method="claim_focus"] [connection signal="input_event" from="logic/DoorTrigger/UiWrapper" to="logic/DoorTrigger/UiWrapper" method="_on_input_event"] +[connection signal="exit_room" from="logic/DoorTrigger/UiWrapper/UiSprite/SubViewport/CollectableUi" to="logic/UI/ending" method="show"] diff --git a/src/dev-util/stereo-switch.gd b/src/dev-util/stereo-switch.gd index cb1eb99..546e248 100644 --- a/src/dev-util/stereo-switch.gd +++ b/src/dev-util/stereo-switch.gd @@ -5,7 +5,7 @@ func _ready() -> void: update_mix_target() func update_mix_target(): - if State.force_stereo: + if State.force_stereo or true: mix_target = AudioStreamPlayer.MIX_TARGET_STEREO else: mix_target = AudioStreamPlayer.MIX_TARGET_CENTER diff --git a/src/logic-scenes/board/card-board.gd b/src/logic-scenes/board/card-board.gd index 712fc8b..3def2e1 100644 --- a/src/logic-scenes/board/card-board.gd +++ b/src/logic-scenes/board/card-board.gd @@ -129,11 +129,10 @@ func _ready(): dropzone_size = get_viewport_rect().size - Vector2(dropzone_padding + size_reference.minimum_size.x, dropzone_padding) if get_parent() == get_tree().root: - populate_board(["c_void", 'c_joy', "p_wet", "p_effort"]) + populate_board(["c_void", 'c_joy', "p_wet", "p_worried_mother"]) populate_board(["c_jui_jutsu", 'c_hit', "p_girly", "p_vent"]) populate_board(["c_comic_heroes", 'c_teasing', "p_agent_q", "p_good_intended"]) populate_board(["c_out_of_world", 'c_confusion', "p_outer_conflict", "p_unique"]) - mementos_collected = 2 has_stage = has_stage @@ -238,7 +237,7 @@ func handle_mouse_button(input: InputEventMouseButton, to_handle = currently_act if sticky_note_container.get_child_count() > 0: sticky_note_container.get_child(current_sticky_note_id).clear_if_empty() current_context = NAVIGATE - if is_board_complete(): board_completed.emit() + check_board_comnpletion() return else: var i: int = 0 @@ -280,8 +279,19 @@ func _return_sticky_notes_to_panels(): for node in dropzone.get_children(): if node is StickyNote: node.is_dragable = true - -func is_board_complete() -> bool: + +var board_was_completed: bool = false +func check_board_comnpletion(): + if is_board_complete(): + for child:StickyNotePanel in sticky_note_container.get_children(): + child.clear_if_empty() + if not board_was_completed: + board_was_completed = true + board_completed.emit() + if board_was_completed: + give_lore_feedback() + +func is_board_complete(): if mementos_collected == 4: for card in dropzone.get_children(): if card is Card: @@ -290,6 +300,35 @@ func is_board_complete() -> bool: return true return false +var unfitting: bool = false +var incomplete: bool = false +var complete: bool = false +func give_lore_feedback(): + var fitting_card_count: int = 0 + var total_card_count: int = 0 + + for child in dropzone.get_children(): + if child is Card: + if child.has_sticky_note_attached(): + fitting_card_count += int(child.card_id == child.get_attached_sticky_note().parent_id) + total_card_count += 1 + + if float(fitting_card_count) / float(total_card_count) < 0.2: + instructions.text = "You can move on, but you may not have understood Lisa." + if not unfitting: + $AnimationPlayer.play("unfitting") + unfitting = true + elif fitting_card_count != total_card_count or total_card_count != dropzone.get_child_count() or sticky_note_container.get_child_count() != 0: + instructions.text = TranslationServer.translate("You may leave the room, but Lisa only agrees with %d of the %d connections.") % [fitting_card_count, total_card_count] + if not incomplete: + $AnimationPlayer.play("incomplete") + incomplete = true + else: + instructions.text = "Lisa would like you to leave her room and move on." + if not complete: + $AnimationPlayer.play("complete") + complete = true + func is_board_lore() -> bool: for card in dropzone.get_children(): if card is Card: @@ -392,7 +431,7 @@ func _input(event): current_context = NAVIGATE current_sticky_note_id += 1 current_dropzone_id = find_first_free_card() - if is_board_complete(): emit_signal("board_completed") + check_board_comnpletion() else: if !focus_stickies and card.has_sticky_note_attached(): currently_active_node = card.remove_sticky_note() diff --git a/src/logic-scenes/board/physics-board.tscn b/src/logic-scenes/board/physics-board.tscn index e8f4fc8..6cc95c6 100644 --- a/src/logic-scenes/board/physics-board.tscn +++ b/src/logic-scenes/board/physics-board.tscn @@ -1,9 +1,13 @@ -[gd_scene load_steps=9 format=3 uid="uid://bnskiyx1sksww"] +[gd_scene load_steps=18 format=3 uid="uid://bnskiyx1sksww"] [ext_resource type="Texture2D" uid="uid://bi3xqdknw5tpe" path="res://logic-scenes/board/board-texture/Cork002_2K_Color.png" id="1_8brxc"] [ext_resource type="Shader" uid="uid://kyd37e0s6fdu" path="res://logic-scenes/board/physics-board.gdshader" id="1_ggnth"] [ext_resource type="Script" uid="uid://cqsor57nvowni" path="res://logic-scenes/board/card-board.gd" id="3_8v4c4"] +[ext_resource type="AudioStream" uid="uid://bywmf3patoe56" path="res://base-environments/youth_room/audio/board_completed.wav" id="5_qjqy3"] +[ext_resource type="AudioStream" uid="uid://dj8fpajqhj4k7" path="res://base-environments/youth_room/audio/board_incomplete.wav" id="6_vtvtf"] [ext_resource type="Script" uid="uid://ddy8kb2hjvgss" path="res://logic-scenes/board/card collider.gd" id="6_wpxls"] +[ext_resource type="AudioStream" uid="uid://brolrc3lhaeid" path="res://base-environments/youth_room/audio/board_unfitting.wav" id="7_0phgc"] +[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="8_ni75f"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_ttqei"] shader = ExtResource("1_ggnth") @@ -18,6 +22,74 @@ size = Vector2(4262, 766.5) [sub_resource type="RectangleShape2D" id="RectangleShape2D_ivo5o"] size = Vector2(4249, 766.5) +[sub_resource type="Animation" id="Animation_2qppy"] +resource_name = "complete" +length = 14.5 +tracks/0/type = "audio" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AnimationPlayer/LisaFeedback") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"clips": [{ +"end_offset": 0.0, +"start_offset": 0.42, +"stream": ExtResource("5_qjqy3") +}], +"times": PackedFloat32Array(0.1) +} +tracks/0/use_blend = true + +[sub_resource type="Animation" id="Animation_kvxnu"] +resource_name = "incomplete" +length = 12.0 +tracks/0/type = "audio" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AnimationPlayer/LisaFeedback") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"clips": [{ +"end_offset": 0.0, +"start_offset": 0.36, +"stream": ExtResource("6_vtvtf") +}], +"times": PackedFloat32Array(0.1) +} +tracks/0/use_blend = true + +[sub_resource type="Animation" id="Animation_k5h0q"] +resource_name = "unfitting" +length = 9.0 +tracks/0/type = "audio" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AnimationPlayer/LisaFeedback") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"clips": [{ +"end_offset": 1.06, +"start_offset": 0.59, +"stream": ExtResource("7_0phgc") +}], +"times": PackedFloat32Array(0.333333) +} +tracks/0/use_blend = true + +[sub_resource type="Animation" id="Animation_qjqy3"] +length = 0.001 + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_htay1"] +_data = { +&"RESET": SubResource("Animation_qjqy3"), +&"complete": SubResource("Animation_2qppy"), +&"incomplete": SubResource("Animation_kvxnu"), +&"unfitting": SubResource("Animation_k5h0q") +} + [node name="board" type="PanelContainer"] material = SubResource("ShaderMaterial_ttqei") clip_contents = true @@ -128,3 +200,13 @@ custom_minimum_size = Vector2(15, 0) layout_mode = 2 [node name="Timer" type="Timer" parent="."] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_htay1") +} + +[node name="LisaFeedback" type="AudioStreamPlayer" parent="AnimationPlayer"] +mix_target = 2 +bus = &"text" +script = ExtResource("8_ni75f") diff --git a/src/logic-scenes/board/sticky-note.gd b/src/logic-scenes/board/sticky-note.gd index c552557..4d9269a 100644 --- a/src/logic-scenes/board/sticky-note.gd +++ b/src/logic-scenes/board/sticky-note.gd @@ -77,8 +77,8 @@ var on_board: bool = false func _init(sticky_name: String = "sticky_note", card_id: StringName = "-1") -> void: name = sticky_name text = sticky_name - parent_id = card_id - sticky_id = StringName( "%s.%s" % [parent_id, sticky_name] ) + parent_id = StringName(card_id.rsplit(".", false, 1)[0]) + sticky_id = card_id func _ready() -> void: if get_child_count() == 0: diff --git a/src/logic-scenes/collectable/new_collectable_ui.gd b/src/logic-scenes/collectable/new_collectable_ui.gd index 8e4750f..e138e96 100644 --- a/src/logic-scenes/collectable/new_collectable_ui.gd +++ b/src/logic-scenes/collectable/new_collectable_ui.gd @@ -125,8 +125,20 @@ class_name CollectableUi extends CenterContainer else: scene = scene collected_box.show() +@export var is_exit:bool = false: + set(exit): + is_exit = exit + if is_inside_tree(): + if exit: + if title_override == "": title_label.text = "Move on" + collected_box.hide() + else: + scene = scene + collected_box.show() + signal open_board +signal exit_room #TODO implement proper scene skipping signal scene_skipped(i: int) @@ -149,6 +161,7 @@ func _on_context_updated(): func update_state(): scene = scene is_board = is_board + is_exit = is_exit _on_context_updated() func reveal(): @@ -172,11 +185,14 @@ func _input(event: InputEvent) -> void: print("handle input") if not visible: return if event.is_action_pressed("collect_memento_ui"): - if not is_board: + if not (is_board or is_exit): collect_memento() get_viewport().set_input_as_handled() else: - open_board.emit() + if is_board: + open_board.emit() + if is_exit: + exit_room.emit() elif event.is_action_pressed("option_memento_ui"): is_expanded = true get_viewport().set_input_as_handled()