Browse Source

Splitting load_save into load_save and apply_save

pull/18/head
Ryan Reed 1 month ago
parent
commit
3073c8d4d6
2 changed files with 22 additions and 9 deletions
  1. +17
    -9
      addons/save_load_system/autoloads/save_game_manager.gd
  2. +5
    -0
      scenes/world/world.gd

+ 17
- 9
addons/save_load_system/autoloads/save_game_manager.gd View File

@ -7,13 +7,15 @@
extends Node
signal apply_load_complete
signal apply_save ## Apply the loaded data to the tree. Note: This should happen AFTER load_save()
signal create_auto_save
signal create_save(save_name: String)
signal delete_save(filename: String)
signal delete_error(error_message: String)
signal load_complete
signal load_error(error_message: String)
signal load_save(filename: String)
signal load_save(filename: String) ## Loads the save into memory. Does NOT apply the load as this allows for other actions (such as resetting the levle/world).[br]Don't forget to run `apply_save` after loading
signal save_complete
signal save_error(error_message: String)
@ -32,11 +34,12 @@ var _save_level_data_component: SaveLevelDataComponent ## Contains the save path
func _ready() -> void:
quick_load.connect(quick_load_game)
quick_save.connect(quick_load_game)
quick_save.connect(quick_save_game)
create_save.connect(_on_save_game_as_resource)
load_save.connect(load_game_save)
delete_save.connect(_on_delete_save)
toggle_save_icon_generation.connect(_on_toggle_save_icon_generation)
apply_save.connect(_on_apply_save)
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("quick_save"):
@ -142,13 +145,6 @@ func _load_game_resource(resource_filename: String) -> void:
load_error.emit("Failed to load save. Unknown format? %s" % save_game_file_path)
return
EntityManager.reset_world.emit()
var root_node: Window = get_tree().root
for resource: Resource in _game_data_resource.save_data_nodes:
if resource is Node3DDataResource:
(resource as Node3DDataResource)._load_data(root_node)
load_complete.emit()
func _save_game_as_resource(resource_filename: String) -> void:
@ -195,6 +191,18 @@ func _take_save_screenshot(save_game_file_path: String) -> void:
_icon.save_png(_icon_filepath)
## Apply the loaded save.[br]
## Performed after load_save
func _on_apply_save() -> void:
if _game_data_resource == null: return
var root_node: Window = get_tree().root
for resource: Resource in _game_data_resource.save_data_nodes:
if resource is Node3DDataResource:
(resource as Node3DDataResource)._load_data(root_node)
apply_load_complete.emit()
## Save the game, with a filename of `<save_prepend><current_date>.tres
func _on_save_game_as_resource(save_name: String) -> void:
if not _load_save_level_data_component(): return


+ 5
- 0
scenes/world/world.gd View File

@ -15,6 +15,7 @@ func _ready() -> void:
EntityManager.drop_block.connect(_create_dropped_block)
EntityManager.reset_world.connect(clear_world)
EntityManager.spawn_player.connect(spawn_player)
SaveGameManager.load_complete.connect(_on_load_save_complete)
clear_world()
create_world()
@ -82,3 +83,7 @@ func _create_test_blocks() -> void:
func _on_reset_world() -> void:
clear_world()
func _on_load_save_complete() -> void:
clear_world()
SaveGameManager.apply_save.emit()

Loading…
Cancel
Save