增加存档version控制(当前为1)

This commit is contained in:
bbd_pc 2025-06-26 04:31:40 +08:00
parent 458bfe6a09
commit 5a7607e808
3 changed files with 18 additions and 6 deletions

View File

@ -14,8 +14,9 @@ static var user_root_dir := "user://data/" # must end with "/"
static var archive_dir := "user://data/archives/"
static var archive_prefix := "save"
var archives := {}
const CURRENT_VERSION = 1
var archives := {}
var autosave_timer := Timer.new()
@ -127,9 +128,13 @@ func _check_dirs_and_archives() -> bool:
continue
var path = archive_dir + file
if not archives.has(id):
archives[id] = ResourceLoader.load(
var res = ResourceLoader.load(
path, "AssembledArchive", ResourceLoader.CACHE_MODE_REPLACE_DEEP
)
if is_instance_valid(res) and res.version == CURRENT_VERSION:
archives[id] = res
else:
printerr("SKIP INVALID ARCHIVE! file=", file)
return true
@ -152,7 +157,6 @@ func create_and_use_new_archive(id := -1) -> void:
_create_and_save_new_archive_resoure(id, true)
else:
_create_and_save_new_archive_resoure(id)
archives[id] = archive
# this will auto trigger signal and load the new archive
GlobalConfigManager.config.current_selected_archive_id = id
@ -160,6 +164,7 @@ func create_and_use_new_archive(id := -1) -> void:
func _create_and_save_new_archive_resoure(id, take_over_path = false) -> void:
var archive_path = _get_archive_path(id)
archive = AssembledArchive.new() as Resource
archive.version = CURRENT_VERSION
if take_over_path:
archive.take_over_path(archive_path)
else:
@ -167,6 +172,7 @@ func _create_and_save_new_archive_resoure(id, take_over_path = false) -> void:
archive.archive_id = id
archive.created_time = Time.get_datetime_string_from_system(false, true)
ResourceSaver.save(archive, archive_path)
archives[id] = archive
# 超过 999 个存档会出问题;不过这个游戏不会有这么多存档
@ -205,9 +211,13 @@ func load_config() -> void:
var path = user_root_dir + "config" + GlobalConfig.RES_FILE_FORMAT
if FileAccess.file_exists(path):
var config = ResourceLoader.load(path)
GlobalConfigManager.config = config
else:
if is_instance_valid(config) and config.version == CURRENT_VERSION:
GlobalConfigManager.config = config
else:
printerr("SKIP INVALID CONFIG!")
if GlobalConfigManager.config == null:
var config = GlobalConfig.new()
config.version = CURRENT_VERSION
GlobalConfigManager.config = config
ResourceSaver.save(config, path)
GlobalConfigManager.config.resource_path = path

View File

@ -1,5 +1,6 @@
class_name AssembledArchive extends Resource
@export var version: int #存档版本
@export var archive_id := 0
# TODO: 注意设置游戏起点
@export var entrance_portal := "left"

View File

@ -52,6 +52,7 @@ signal current_selected_archive_id_changed
signal auto_save_enabled_changed
signal auto_save_seconds_changed
@export var version: int #存档版本
@export var game_total_seconds := 0 # 游戏总时长
@export var game_rounds := 1 # 当前周目数
@export var current_selected_archive_id := -1: # 当前选定存档, -1 为未选择