class_name YouthRoom extends RoomTemplate @onready var board_trigger: InteractiveSprite = %MindBoard @onready var door_trigger: InteractiveSprite = %Door @onready var card_board: CardBoard = %Board @onready var card_picker: CardPicker = %Picker @onready var ui: Control = %UI signal interaction(interactable: Object) func start_room(): %UI.show() $logic/PlayerController.process_mode = Node.PROCESS_MODE_INHERIT if not Scenes.is_sequence_repeating(Scenes.id.YOUTH_DRAEVEN): Scenes.start_sequence(Scenes.id.YOUTH_DRAEVEN) State.queue_for_stage(%PlayerController) else: State.pass_stage_to(%PlayerController) %LightAnimation.lights_on() while true: # playing? var interactable = await interaction if interactable is StoryPlayable: await interactable.play() # check gamestate to quit? pass func get_ready(): pull_save_state(State.save_game) card_board.initialise_from_save(save_game) card_board.board_completed.connect(func(): save_game.is_childhood_board_complete = true save_room()) Scenes.sign_up_for_sequence(play_chest_animation, Scenes.id.YOUTH_VOICE_TRAINING, 0) ui.hide() $sfx/distant_rain.play() $"sfx/rain on window".play() self.show() func _ready(): super._ready() id = State.rooms.YOUTH Scenes.scene_finished.connect(_on_scene_finished) card_picker.cards_picked.connect(card_board.populate_board) func pull_save_state(save: SaveGame) -> void: save_game = save save_game.current_room = id save_game.board_state = card_board.get_save_dict() card_board.initialise_from_save(save_game) Scenes.started_sequences = save_game.mementos_complete Scenes.completed_sequences = save_game.mementos_complete func _on_scene_finished(_id: int, _repeat:bool): await get_tree().create_timer(3).timeout save_room() func prepare_transition(): save_room() $visuals/AnimationPlayer.play("conserve_performance") await $visuals/AnimationPlayer.animation_finished unload() func play_chest_animation(_id): $AnimationPlayer.play("chest_reveal") $visuals/SecondaryAnimation.play("chest_reveal") await $AnimationPlayer.animation_finished Scenes.continue_sequence(self) func unload(): $visuals.queue_free()