增加存档version控制(当前为1)
This commit is contained in:
parent
458bfe6a09
commit
5a7607e808
@ -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)
|
||||
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
|
||||
|
@ -1,5 +1,6 @@
|
||||
class_name AssembledArchive extends Resource
|
||||
|
||||
@export var version: int #存档版本
|
||||
@export var archive_id := 0
|
||||
# TODO: 注意设置游戏起点
|
||||
@export var entrance_portal := "left"
|
||||
|
@ -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 为未选择
|
||||
|
Loading…
Reference in New Issue
Block a user