From cc73e1e4b6e9dbe399e00c0047263848efd56a86 Mon Sep 17 00:00:00 2001 From: Tiger Jove Date: Thu, 22 Jan 2026 01:15:53 +0100 Subject: [PATCH] fix: card loading --- .../volunteer_room/volunteer_room.gd | 9 +++--- .../youth_room/youth_room.gd | 31 ++++++++++--------- src/dev-util/room_template.gd | 10 ++---- src/logic-scenes/board/card-board.gd | 4 +-- 4 files changed, 26 insertions(+), 28 deletions(-) diff --git a/src/base-environments/volunteer_room/volunteer_room.gd b/src/base-environments/volunteer_room/volunteer_room.gd index 93f19dc..e4c0d3c 100644 --- a/src/base-environments/volunteer_room/volunteer_room.gd +++ b/src/base-environments/volunteer_room/volunteer_room.gd @@ -10,17 +10,16 @@ func _ready(): func get_ready() -> void: - super.get_ready() + await super.get_ready() - save_game = State.save_game + # Interactions can this way load their correct prompts + get_tree().call_group("interactables", "pull_save_state") %TherapyVoluntaryInteractable.visible = not save_game.subway_burnout %TherapyUniInteractable.visible = save_game.subway_burnout pull_save_state(State.save_game) - - - card_board.initialise_from_save(save_game) + card_board.board_completed.connect(func(): #TODO: hook in ending #%DoorInteractable.show() diff --git a/src/base-environments/youth_room/youth_room.gd b/src/base-environments/youth_room/youth_room.gd index 7968442..151a511 100644 --- a/src/base-environments/youth_room/youth_room.gd +++ b/src/base-environments/youth_room/youth_room.gd @@ -40,20 +40,20 @@ func _play_intro_scene() -> void: await intro.interact() -func get_ready(): - super.get_ready() - prints("indeed") - Scenes.scene_finished.connect(_on_scene_finished) +func get_ready() -> void: + await super.get_ready() + pull_save_state(State.save_game) + + card_board.initialise_from_save(State.save_game) + + card_board.closed.connect(save_room) card_board.board_completed.connect(func(): %DoorInteractable.show() save_game.childhood_board_complete = true ) - pull_save_state(State.save_game) - - card_board.closed.connect(save_room) - + Scenes.scene_finished.connect(_on_scene_finished) card_picker.cards_picked.connect(card_board.populate_board) ui.hide() @@ -65,15 +65,18 @@ func pull_save_state(save: SaveGame) -> void: save_game = save save_game.current_room = id - # Load board state from save first, before overwriting it - card_board.initialise_from_save(save_game) - - Scenes.started_sequences = save_game.mementos_complete - Scenes.completed_sequences = save_game.mementos_complete - # Interactions can this way load their correct prompts get_tree().call_group("interactables", "pull_save_state") + card_board.initialise_from_save(save_game) + + # Load board state from save first, before overwriting it + card_board.initialise_from_save(save_game) + + # TODO: These should be deprecated, SaveGame is our source of truth + Scenes.started_sequences = save_game.mementos_complete + Scenes.completed_sequences = save_game.mementos_complete + # Call parent to restore player position super.pull_save_state(save) diff --git a/src/dev-util/room_template.gd b/src/dev-util/room_template.gd index a3153fa..cb51392 100644 --- a/src/dev-util/room_template.gd +++ b/src/dev-util/room_template.gd @@ -6,7 +6,8 @@ var id: State.rooms = State.rooms.NULL @onready var scene_player : AnimationPlayer = %SceneAnimationPlayer @onready var card_board : CardBoard # Optional Board, if present - set by the board in its own _ready() -var save_game:SaveGame = null +var save_game : SaveGame: + get: return State.save_game signal proceed(next_scene_path: String) @@ -17,7 +18,6 @@ func _ready() -> void: push_warning("Room initialised without a SaveGame. Creating proxy save.") State.save_game = ResourceLoader.load("res://dev-util/debug_save.tres") - save_game = State.save_game if not Main.normal_boot: push_warning("------- DEBUG MODE --------") @@ -26,10 +26,9 @@ func _ready() -> void: func get_ready(): prints("----------", "GET_READY", self.name, "--------------") - pass + for i in range(20): await get_tree().process_frame func play() -> String: - for i in range(20): await get_tree().process_frame await get_ready() await start_room() var next_room : StringName = await proceed @@ -43,9 +42,6 @@ func start_room(): func pull_save_state(_save: SaveGame) -> void: - # Interactions can this way load their correct prompts - get_tree().call_group("interactables", "pull_save_state") - # Override this function to load the state of the chapter from State.save_game restore_player_from_save(_save) diff --git a/src/logic-scenes/board/card-board.gd b/src/logic-scenes/board/card-board.gd index 8ecb6d2..e901a93 100644 --- a/src/logic-scenes/board/card-board.gd +++ b/src/logic-scenes/board/card-board.gd @@ -478,7 +478,7 @@ func initialise_from_save(savegame: SaveGame) -> void: print(" Card '%s' at %s" % [card.name, card.position]) else: card.position = _generate_random_position() - push_warning(" Card '%s' - no saved position, using random" % card.name) + print(" Card '%s' - no saved position, using random" % card.name) # Attach sticky notes to cards or position them loose for sticky: StickyNote in notes: @@ -497,7 +497,7 @@ func initialise_from_save(savegame: SaveGame) -> void: else: # Fallback to center of board sticky.position = position + size / 2.0 - push_warning(" Sticky '%s' - no saved position, using center" % sticky.name) + print(" Sticky '%s' - no saved position, using center" % sticky.name) # Re-sort by positions for correct z-ordering