class_name RoomTemplate extends Node3D var initialised: bool = false var id: State.rooms = State.rooms.NULL @onready var scene_player : AnimationPlayer = %ScenePlayer var is_active: bool: set(value): is_active = value if is_active and not initialised: start_room() var save_game:SaveGame = null signal proceed(next_scene_path: String) func _ready() -> void: State.room = self State.current_room = id func disable()-> void: is_active = false set_process_input(false) set_process(false) func get_ready(): pass func load(): # Override this function to load the state of the chapter from State.save_game pass func play() -> String: start_room() return await proceed func start_room(): pass func pull_save_state(_save: SaveGame) -> void: # Try to restore player position from save restore_player_from_save(_save) ## Attempts to find player controller and restore position/rotation from save func restore_player_from_save(save: SaveGame) -> void: var player: PlayerController = null # Try to find player controller in common locations if has_node("%PlayerController"): player = get_node("%PlayerController") elif has_node("logic/PlayerController"): player = get_node("logic/PlayerController") if player and player is PlayerController: player.restore_from_save(save) else: print_debug("RoomTemplate: Could not find PlayerController to restore position") func save_room(): save_game.save_to_file(get_tree().root.get_texture()) func prepare_transition(): pass func unload(): pass