From d09a930faa8b71b2ff92c923b09082a02b7e4966 Mon Sep 17 00:00:00 2001 From: Tiger Jove Date: Fri, 19 Dec 2025 20:04:41 +0100 Subject: [PATCH] fix: animation state changes for loading spinner. --- .../youth_room/fairylights.gd.uid | 1 + .../collectable/collectable_ui.tscn | 14 +++---- src/singletons/main/main.gd | 9 ++++- src/singletons/main/main.tscn | 2 + src/ui/loading/anim_loading_done.tres | 18 ++------- src/ui/loading/anim_loading_game.tres | 40 ++++--------------- src/ui/loading/loading.gd | 16 ++++++++ src/ui/loading/loading.gd.uid | 1 + src/ui/loading/loading.tscn | 36 ++++++++++++----- 9 files changed, 70 insertions(+), 67 deletions(-) create mode 100644 src/base-environments/youth_room/fairylights.gd.uid create mode 100644 src/ui/loading/loading.gd create mode 100644 src/ui/loading/loading.gd.uid diff --git a/src/base-environments/youth_room/fairylights.gd.uid b/src/base-environments/youth_room/fairylights.gd.uid new file mode 100644 index 0000000..616cabc --- /dev/null +++ b/src/base-environments/youth_room/fairylights.gd.uid @@ -0,0 +1 @@ +uid://bdrnh00pmyclj diff --git a/src/logic-scenes/collectable/collectable_ui.tscn b/src/logic-scenes/collectable/collectable_ui.tscn index 1acaf93..f40057b 100644 --- a/src/logic-scenes/collectable/collectable_ui.tscn +++ b/src/logic-scenes/collectable/collectable_ui.tscn @@ -6,22 +6,22 @@ [ext_resource type="Texture2D" uid="uid://b7breoabkyifr" path="res://addons/input_prompts/icons/xbox/A.png" id="3_g0dpf"] [ext_resource type="Texture2D" uid="uid://615hvpuiacvm" path="res://addons/input_prompts/icons/xbox/X.png" id="5_fk5x4"] -[sub_resource type="InputEventMouseButton" id="InputEventMouseButton_fk5x4"] +[sub_resource type="InputEventMouseButton" id="InputEventMouseButton_yg774"] device = -1 button_index = 1 -[sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_8vhsk"] +[sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_vmmjr"] device = -1 -[sub_resource type="InputEventKey" id="InputEventKey_t7f8v"] +[sub_resource type="InputEventKey" id="InputEventKey_qqo47"] device = -1 physical_keycode = 4194309 -[sub_resource type="InputEventMouseButton" id="InputEventMouseButton_6fedj"] +[sub_resource type="InputEventMouseButton" id="InputEventMouseButton_axm2i"] device = -1 button_index = 2 -[sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_bnbqn"] +[sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_762cl"] device = -1 button_index = 2 @@ -894,7 +894,7 @@ stretch_mode = 5 script = ExtResource("2_2apub") action = "collect_memento_ui" icon = 0 -events = Array[InputEvent]([SubResource("InputEventMouseButton_fk5x4"), SubResource("InputEventJoypadButton_8vhsk"), SubResource("InputEventKey_t7f8v")]) +events = Array[InputEvent]([SubResource("InputEventMouseButton_yg774"), SubResource("InputEventJoypadButton_vmmjr"), SubResource("InputEventKey_qqo47")]) metadata/_custom_type_script = "uid://bbs1u7ojno7xo" [node name="CollectLabel" type="Label" parent="VBoxContainer/HBoxContainer"] @@ -914,7 +914,7 @@ stretch_mode = 5 script = ExtResource("2_2apub") action = "option_memento_ui" icon = 0 -events = Array[InputEvent]([SubResource("InputEventMouseButton_6fedj"), SubResource("InputEventJoypadButton_bnbqn")]) +events = Array[InputEvent]([SubResource("InputEventMouseButton_axm2i"), SubResource("InputEventJoypadButton_762cl")]) metadata/_custom_type_script = "uid://bbs1u7ojno7xo" [node name="OptionsLabel" type="Label" parent="VBoxContainer/HBoxContainer"] diff --git a/src/singletons/main/main.gd b/src/singletons/main/main.gd index 75f0bb4..0e76dce 100644 --- a/src/singletons/main/main.gd +++ b/src/singletons/main/main.gd @@ -58,13 +58,16 @@ func _ready() -> void: main_menu.continue_button.pressed.connect(func(): app_state = AppState.PLAY) main_menu.credits_button.pressed.connect(func(): app_state = AppState.CREDITS) + #TODO: Load the last savegame(?) + await %Loading.stop() + if normal_boot: print_debug("main.gd: normal boot (loading last save and showing main menu)") app_state = AppState.MENU else: print_debug("main.gd: direct boot (hiding menus and entering main loop)") app_state = AppState.PLAY - #await _mainloop() # Debug functionality + func load_game(save: SaveGame) -> void: print_debug("main.gd: _load_game()") @@ -76,6 +79,7 @@ func _load_room(next_path: String) -> bool: State.room.unload() State.room = null await curtain.show() + %Loading.play() ResourceLoader.load_threaded_request(next_path, "PackedScene", true) while true: await get_tree().process_frame @@ -87,9 +91,10 @@ func _load_room(next_path: String) -> bool: get_tree().root.add_child(State.room) await State.room.get_ready() await curtain.hide() + %Loading.stop() return true ResourceLoader.THREAD_LOAD_FAILED: - push_error("Failed to load youth room scene.") + push_error("Failed to load room.") break return false diff --git a/src/singletons/main/main.tscn b/src/singletons/main/main.tscn index 99394a5..ab226d1 100644 --- a/src/singletons/main/main.tscn +++ b/src/singletons/main/main.tscn @@ -101,7 +101,9 @@ unique_name_in_owner = true layout_mode = 1 [node name="Loading" parent="." instance=ExtResource("5_dxvjq")] +unique_name_in_owner = true layout_mode = 1 +offset_bottom = 0.0 [node name="MainMenu" parent="." instance=ExtResource("3_ik73t")] unique_name_in_owner = true diff --git a/src/ui/loading/anim_loading_done.tres b/src/ui/loading/anim_loading_done.tres index d967349..769b954 100644 --- a/src/ui/loading/anim_loading_done.tres +++ b/src/ui/loading/anim_loading_done.tres @@ -6,7 +6,7 @@ length = 1.5 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("mask/frame/deco:rotation") +tracks/0/path = NodePath("CanvasLayer/mask/frame/deco:rotation") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { @@ -30,7 +30,7 @@ tracks/1/keys = { tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("LoadingLabel:visible") +tracks/2/path = NodePath("CanvasLayer/LoadingLabel:visible") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { @@ -42,7 +42,7 @@ tracks/2/keys = { tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("LoadingLabel:modulate") +tracks/3/path = NodePath("CanvasLayer/LoadingLabel:modulate") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { @@ -51,15 +51,3 @@ tracks/3/keys = { "update": 0, "values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] } -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("LoadingLabel:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0.93333334, 1.5), -"transitions": PackedFloat32Array(1.6788809, 1), -"update": 0, -"values": [Vector2(170, -37), Vector2(100, -37)] -} diff --git a/src/ui/loading/anim_loading_game.tres b/src/ui/loading/anim_loading_game.tres index 103dabc..96328db 100644 --- a/src/ui/loading/anim_loading_game.tres +++ b/src/ui/loading/anim_loading_game.tres @@ -7,7 +7,7 @@ loop_mode = 1 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("mask:modulate") +tracks/0/path = NodePath("CanvasLayer/mask:modulate") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { @@ -19,7 +19,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("mask:rotation") +tracks/1/path = NodePath("CanvasLayer/mask:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -31,7 +31,7 @@ tracks/1/keys = { tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("mask/frame/deco:rotation") +tracks/2/path = NodePath("CanvasLayer/mask/frame/deco:rotation") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { @@ -43,7 +43,7 @@ tracks/2/keys = { tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("mask/frame/deco:modulate") +tracks/3/path = NodePath("CanvasLayer/mask/frame/deco:modulate") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { @@ -55,48 +55,24 @@ tracks/3/keys = { tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true -tracks/4/path = NodePath("../../MainMenu:modulate") +tracks/4/path = NodePath("CanvasLayer/LoadingLabel:visible") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 0)] +"update": 1, +"values": [true] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true -tracks/5/path = NodePath("LoadingLabel:visible") +tracks/5/path = NodePath("CanvasLayer/LoadingLabel:modulate") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("LoadingLabel:modulate") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { "times": PackedFloat32Array(0.06666672, 1.1666666), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] } -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("LoadingLabel:position") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0.93333334), -"transitions": PackedFloat32Array(1.6788809), -"update": 0, -"values": [Vector2(170, -37)] -} diff --git a/src/ui/loading/loading.gd b/src/ui/loading/loading.gd new file mode 100644 index 0000000..5096649 --- /dev/null +++ b/src/ui/loading/loading.gd @@ -0,0 +1,16 @@ +extends Control +class_name Loading + +@onready var animation: AnimationPlayer = %AnimationPlayer +@onready var label: Label = %LoadingLabel + +func _ready() -> void: + play() + +func play() -> void: + animation.play("LoadingSpinner/anim_loading_game") + +func stop() -> void: + if animation.is_playing(): + animation.stop() + animation.play("LoadingSpinner/anim_loading_done") diff --git a/src/ui/loading/loading.gd.uid b/src/ui/loading/loading.gd.uid new file mode 100644 index 0000000..a8c7976 --- /dev/null +++ b/src/ui/loading/loading.gd.uid @@ -0,0 +1 @@ +uid://dc46me7xd5pbc diff --git a/src/ui/loading/loading.tscn b/src/ui/loading/loading.tscn index 7d58ff3..b5249c3 100644 --- a/src/ui/loading/loading.tscn +++ b/src/ui/loading/loading.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=8 format=3 uid="uid://d38f0a333kki1"] +[gd_scene load_steps=9 format=3 uid="uid://d38f0a333kki1"] +[ext_resource type="Script" uid="uid://dc46me7xd5pbc" path="res://ui/loading/loading.gd" id="1_aeyqy"] [ext_resource type="Texture2D" uid="uid://d031kxe5m4ihh" path="res://import/interface-elements/loading_rect_clip.png" id="1_dbd3p"] [ext_resource type="Texture2D" uid="uid://bqf82f8dk4yun" path="res://import/interface-elements/loading_rect_frame.png" id="2_6oitr"] [ext_resource type="Texture2D" uid="uid://dpftqdvtrkioh" path="res://import/interface-elements/loading_rect_deco.png" id="3_jqdbn"] @@ -18,6 +19,7 @@ func _ready() -> void: var _accumulate_delta: float = 0 var _frame: int = 0 + func _process(delta: float) -> void: _accumulate_delta += delta if _accumulate_delta > animation_speed: @@ -43,29 +45,41 @@ layout_mode = 3 anchors_preset = 2 anchor_top = 1.0 anchor_bottom = 1.0 +offset_top = -80.16669 +offset_right = 500.0 +offset_bottom = 0.00036621094 grow_vertical = 0 +script = ExtResource("1_aeyqy") -[node name="mask" type="Sprite2D" parent="."] +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = 100 + +[node name="mask" type="Sprite2D" parent="CanvasLayer"] modulate = Color(1, 1, 1, 0) clip_children = 1 -position = Vector2(101.4607, -58.539307) +position = Vector2(73.00001, 980.00006) +scale = Vector2(0.99999994, 0.99999994) texture = ExtResource("1_dbd3p") -[node name="frame" type="Sprite2D" parent="mask"] +[node name="frame" type="Sprite2D" parent="CanvasLayer/mask"] texture = ExtResource("2_6oitr") -[node name="deco" type="Sprite2D" parent="mask/frame"] +[node name="deco" type="Sprite2D" parent="CanvasLayer/mask/frame"] modulate = Color(1, 1, 1, 0) rotation = -0.261799 texture = ExtResource("3_jqdbn") -[node name="LoadingLabel" type="Label" parent="."] -layout_mode = 0 -offset_left = 170.0 -offset_top = -37.0 -offset_right = 310.00003 -offset_bottom = 9.0 +[node name="LoadingLabel" type="Label" parent="CanvasLayer"] +unique_name_in_owner = true +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_top = -38.16626 +offset_right = 89.0 +offset_bottom = 0.00036621094 +grow_vertical = 0 text = "loading" +vertical_alignment = 2 script = SubResource("GDScript_cegan") [node name="AnimationPlayer" type="AnimationPlayer" parent="."]