Save-state loading doesn't use cached versions

This commit is contained in:
Rob Kelly 2025-04-23 12:03:38 -06:00
parent d14ed8e9ad
commit 37ac6a6461
3 changed files with 15 additions and 5 deletions

View File

@ -60,18 +60,26 @@ func _initial_load() -> void:
## The loading screen will be shown until the scene is loaded.
func queue_scene(path: String) -> Promise:
_unload_content()
return queue_load(path, ScenePromise.new(), "PackedScene").finally(_finish_scene_load)
return (
queue_load(path, ResourceLoader.CACHE_MODE_REUSE, ScenePromise.new(), "PackedScene")
. finally(_finish_scene_load)
)
## Queue a resource to be loaded in the background.
##
## Returns a `Promise` which can be used to attach callbacks
## which will be called with the resource after it is loaded.
func queue_load(path: String, promise: Promise = null, type_hint: String = "") -> Promise:
func queue_load(
path: String,
cache_mode: ResourceLoader.CacheMode = ResourceLoader.CACHE_MODE_REUSE,
promise: Promise = null,
type_hint: String = ""
) -> Promise:
if not promise:
promise = Promise.new()
_loading_resources[path] = promise
ResourceLoader.load_threaded_request(path, type_hint)
ResourceLoader.load_threaded_request(path, type_hint, false, cache_mode)
return promise

View File

@ -19,4 +19,4 @@ static func load_level(level_path: String, save: SaveState = null) -> void:
static func load_save(save_path: String) -> void:
var chain_load := func(save: SaveState) -> void: load_level(save.level_path, save)
Game.instance.queue_load(save_path).then(chain_load)
Game.instance.queue_load(save_path, ResourceLoader.CACHE_MODE_REPLACE_DEEP).then(chain_load)

View File

@ -79,7 +79,9 @@ func on_game_over() -> void:
# reload the level from the last save
var save_path := current_level.get_save_path()
if FileAccess.file_exists(save_path):
Game.instance.queue_load(save_path).finally(_reload_saved)
Game.instance.queue_load(save_path, ResourceLoader.CACHE_MODE_REPLACE_DEEP).finally(
_reload_saved
)
else:
load_level(current_level_scene)