diff options
| -rw-r--r-- | esc_listener.gd | 2 | ||||
| -rw-r--r-- | room_main_menu.gd | 2 | ||||
| -rw-r--r-- | top.gd | 14 | ||||
| -rw-r--r-- | top.tscn | 67 |
4 files changed, 80 insertions, 5 deletions
diff --git a/esc_listener.gd b/esc_listener.gd index a7b36a8..cc25f4a 100644 --- a/esc_listener.gd +++ b/esc_listener.gd @@ -4,4 +4,4 @@ extends Node func _process(_delta: float) -> void: if Input.is_action_just_pressed("menu"): - top.change_room("main_menu") + top.transition_to_room("main_menu") diff --git a/room_main_menu.gd b/room_main_menu.gd index 8981bcb..836cf0c 100644 --- a/room_main_menu.gd +++ b/room_main_menu.gd @@ -11,4 +11,4 @@ func _process(_delta: float) -> void: pass func _test_room_button_pressed(): - top.change_room("test") + top.transition_to_room("test") @@ -18,15 +18,25 @@ func _ready() -> void: save_state.save(save_state_path) print(OS.get_data_dir()) +var _transition_room: Node + +func transition_to_room(room_name: String): + # Start animation + # The animation calls _change_room at a specific time + $TransitionCanvas/AnimationPlayer.play("room_transition") -func change_room(room_name: String): var room = ResourceLoader.load("res://room_" + room_name + ".tscn") + _transition_room = room.instantiate() + +func _change_room(): var current_room = get_node("active_room") remove_child(current_room) - var next_room: Node = room.instantiate() + var next_room: Node = _transition_room next_room.name = "active_room" add_child(next_room) + + _transition_room = null func save(): save_state.save("user://save_state.cfg") @@ -1,8 +1,73 @@ -[gd_scene load_steps=3 format=3 uid="uid://cey3jxnpmommt"] +[gd_scene load_steps=6 format=3 uid="uid://cey3jxnpmommt"] [ext_resource type="Script" uid="uid://dxbspy72bg0db" path="res://top.gd" id="1_on2c2"] [ext_resource type="PackedScene" uid="uid://cjdhfl70fgt6m" path="res://room_main_menu.tscn" id="2_58ij3"] +[sub_resource type="Animation" id="Animation_on2c2"] +resource_name = "room_transition" +length = 4.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 2, 4), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Color(0, 0, 0, 0), Color(0, 0, 0, 1), Color(0, 0, 0, 0)] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("../..") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(2), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"_change_room" +}] +} + +[sub_resource type="Animation" id="Animation_58ij3"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0, 0, 0, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_2exal"] +_data = { +&"RESET": SubResource("Animation_58ij3"), +&"room_transition": SubResource("Animation_on2c2") +} + [node name="Top" type="Node2D"] script = ExtResource("1_on2c2") initial_room = ExtResource("2_58ij3") + +[node name="TransitionCanvas" type="CanvasLayer" parent="."] + +[node name="ColorRect" type="ColorRect" parent="TransitionCanvas"] +offset_right = 192.0 +offset_bottom = 108.0 +color = Color(0, 0, 0, 0) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="TransitionCanvas"] +root_node = NodePath("../ColorRect") +libraries = { +&"": SubResource("AnimationLibrary_2exal") +} +speed_scale = 2.5 |
