summaryrefslogtreecommitdiffstats
path: root/top.gd
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2025-11-21 13:11:52 +0200
committerJan Tuomi <jan@jantuomi.fi>2025-11-21 13:11:52 +0200
commit7b44fcc1ef95fdfcc6723f8e6a594012764a8cab (patch)
tree3e6a81960e26be5ed9185f3d94f54886a153645a /top.gd
parent1018d3f39ada7aca726fbed2befb5550549ba3cb (diff)
Separate TransitionManager from Top
Diffstat (limited to 'top.gd')
-rw-r--r--top.gd67
1 files changed, 7 insertions, 60 deletions
diff --git a/top.gd b/top.gd
index 005bca8..a4051b0 100644
--- a/top.gd
+++ b/top.gd
@@ -5,10 +5,6 @@ extends Node2D
var save_state_path = "user://save_state.cfg"
var save_state = ConfigFile.new()
-var _transition_room: Node
-var _transition_door_name: Variant # String or null
-
-# Called when the node enters the scene tree for the first time.
func _ready() -> void:
var room = initial_room.instantiate()
room.name = "ActiveRoom"
@@ -21,65 +17,16 @@ func _ready() -> void:
save_state.set_value("items", "test_item", true)
save_state.save(save_state_path)
print(OS.get_data_dir())
-
-func is_transitioning() -> bool:
- return _transition_room != null
-
-func room_transition(from_door: Door, to_room_path: String, door_name: Variant):
- # Do not transition if there is already a transition in process
- if _transition_room != null:
- #print_debug("Tried to transition to ", room_name, " but a transition was already in process")
- return
-
- if from_door:
- var player: Player = get_node("ActiveRoom").find_child("Player")
- player.set_forced_input(from_door.enter_towards)
- # Start animation
- # The animation calls _change_room at a specific time
- $TransitionCanvas/AnimationPlayer.play("room_trans_start")
-
- var room = ResourceLoader.load(to_room_path)
- _transition_room = room.instantiate()
- _transition_door_name = door_name
+func save():
+ save_state.save("user://save_state.cfg")
-func _transition_start():
- #print_debug("_transition_start")
+func replace_active_room(new_room: Node, on_changed: Callable):
var current_room = get_node("ActiveRoom")
remove_child(current_room)
current_room.queue_free()
- # If the room hasn't loaded yet, loop until it is
- while _transition_room == null:
- await get_tree().create_timer(0.1).timeout
-
- var next_room: Node = _transition_room
- next_room.name = "ActiveRoom"
- #next_room.connect("ready", _on_room_changed)
- next_room.connect("tree_entered", _on_room_changed)
- next_room.process_mode = Node.PROCESS_MODE_PAUSABLE
- add_child(next_room)
-
-func _on_room_changed():
- #print_debug("_on_room_changed")
- var room = get_node("ActiveRoom")
- var player: Player = room.find_child("Player")
- if _transition_door_name:
- var door: Door = room.find_child(_transition_door_name)
- player.position = door.position
- player.set_forced_input(door.exit_towards)
-
- $TransitionCanvas/AnimationPlayer.play("room_trans_end")
-
-func _transition_end():
- #print_debug("_transition_end")
- _transition_room = null
- _transition_door_name = null
-
- var room = get_node("ActiveRoom")
- var player: Player = room.find_child("Player")
- if player:
- player.set_forced_input(null)
-
-func save():
- save_state.save("user://save_state.cfg")
+ new_room.name = "ActiveRoom"
+ new_room.connect("tree_entered", on_changed)
+ new_room.process_mode = Node.PROCESS_MODE_PAUSABLE
+ add_child(new_room)