From 2508786cdea3337192f1bc6a9349a8f23a0e9ed1 Mon Sep 17 00:00:00 2001 From: Duncan Brown Date: Sat, 26 Mar 2022 13:17:54 -0400 Subject: [PATCH] fix: break loading up into two batches so objects can be loaded and accessed by other code in the loading method here --- .../game/core-scripts/esc/esc_object_manager.gd | 11 ----------- .../core-scripts/save_data/esc_save_manager.gd | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/addons/escoria-core/game/core-scripts/esc/esc_object_manager.gd b/addons/escoria-core/game/core-scripts/esc/esc_object_manager.gd index 2dae1a00..41ab76a4 100644 --- a/addons/escoria-core/game/core-scripts/esc/esc_object_manager.gd +++ b/addons/escoria-core/game/core-scripts/esc/esc_object_manager.gd @@ -52,17 +52,6 @@ var current_room_key: ESCRoomObjectsKey # To avoid having to look this up all the time, we hold a reference. var reserved_objects_container: ESCRoomObjects -# To avoid having to look this up all the time, we hold a reference. -var reserved_objects_container: ESCRoomObjects - -func _init() -> void: - reserved_objects_container = ESCRoomObjects.new() - reserved_objects_container.is_reserved = true - reserved_objects_container.objects = {} - room_objects.push_back(reserved_objects_container) - - current_room_key = ESCRoomObjectsKey.new() - func _init() -> void: reserved_objects_container = ESCRoomObjects.new() diff --git a/addons/escoria-core/game/core-scripts/save_data/esc_save_manager.gd b/addons/escoria-core/game/core-scripts/save_data/esc_save_manager.gd index b7a9b808..4671b91b 100644 --- a/addons/escoria-core/game/core-scripts/save_data/esc_save_manager.gd +++ b/addons/escoria-core/game/core-scripts/save_data/esc_save_manager.gd @@ -291,6 +291,20 @@ func load_game(id: int): ) ) + load_event.statements = load_statements + + escoria.set_game_paused(false) + escoria.event_manager.queue_event(load_event) + + # Wait for the scene to be loaded so we have access to objects, etc. + var rc = yield(escoria.event_manager, "event_finished") + while rc[1] != escoria.event_manager.EVENT_LOAD: + rc = yield(escoria.event_manager, "event_finished") + + # We then carry on with other "load"-related commands. + escoria.set_game_paused(true) + load_statements = [] + ## GLOBALS for k in save_game.globals.keys(): var global_value = save_game.globals[k]