diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2025-11-21 13:11:52 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2025-11-21 13:11:52 +0200 |
| commit | 7b44fcc1ef95fdfcc6723f8e6a594012764a8cab (patch) | |
| tree | 3e6a81960e26be5ed9185f3d94f54886a153645a /top.gd | |
| parent | 1018d3f39ada7aca726fbed2befb5550549ba3cb (diff) | |
Separate TransitionManager from Top
Diffstat (limited to 'top.gd')
| -rw-r--r-- | top.gd | 67 |
1 files changed, 7 insertions, 60 deletions
@@ -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) |
