summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--esc_listener.gd2
-rw-r--r--room_main_menu.gd2
-rw-r--r--top.gd14
-rw-r--r--top.tscn67
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")
diff --git a/top.gd b/top.gd
index 9c6f483..e48a2bd 100644
--- a/top.gd
+++ b/top.gd
@@ -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")
diff --git a/top.tscn b/top.tscn
index ca641f7..0854c9b 100644
--- a/top.tscn
+++ b/top.tscn
@@ -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