generated from krampus/template-godot4
Saves are ID'd by scene
This commit is contained in:
parent
656e1d26bb
commit
9747e80f1d
@ -2,7 +2,7 @@ class_name World extends Node
|
||||
## Access and flow control for the game world.
|
||||
|
||||
@export var pause_enabled := true
|
||||
@export var save_path := "user://save_state.res"
|
||||
@export var save_path_fmt := "user://{0}.state.res"
|
||||
|
||||
@export var manager: WorldManager
|
||||
@export var spook_manager: SpookManager
|
||||
@ -47,6 +47,19 @@ func unpause() -> void:
|
||||
get_tree().paused = false
|
||||
|
||||
|
||||
func _get_level_id(level: PackedScene) -> String:
|
||||
if level.resource_path:
|
||||
var file := level.resource_path.get_file()
|
||||
if file:
|
||||
return file
|
||||
return level.resource_path
|
||||
return "level"
|
||||
|
||||
|
||||
func _get_save_path(level: PackedScene) -> String:
|
||||
return save_path_fmt.format([_get_level_id(level)])
|
||||
|
||||
|
||||
func load_level(level: PackedScene, save: SaveState = null) -> void:
|
||||
for c: Node in level_root.get_children():
|
||||
c.queue_free()
|
||||
@ -73,6 +86,7 @@ func _reload_saved(save: SaveState) -> void:
|
||||
|
||||
func on_game_over() -> void:
|
||||
# reload the level from the last save
|
||||
var save_path := _get_save_path(current_level)
|
||||
if ResourceLoader.exists(save_path):
|
||||
Game.instance.queue_load(save_path).finally(_reload_saved)
|
||||
else:
|
||||
@ -83,6 +97,7 @@ func save_progress() -> void:
|
||||
print("Preparing save state...")
|
||||
save_icon.show()
|
||||
var save := SaveState.serialize(self)
|
||||
var save_path := _get_save_path(current_level)
|
||||
print("Writing save to ", save_path)
|
||||
ResourceSaver.save(save, save_path)
|
||||
save_icon.hide()
|
||||
|
Loading…
x
Reference in New Issue
Block a user