增加存档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_dir := "user://data/archives/"
|
||||||
static var archive_prefix := "save"
|
static var archive_prefix := "save"
|
||||||
|
|
||||||
var archives := {}
|
const CURRENT_VERSION = 1
|
||||||
|
|
||||||
|
var archives := {}
|
||||||
var autosave_timer := Timer.new()
|
var autosave_timer := Timer.new()
|
||||||
|
|
||||||
|
|
||||||
@ -127,9 +128,13 @@ func _check_dirs_and_archives() -> bool:
|
|||||||
continue
|
continue
|
||||||
var path = archive_dir + file
|
var path = archive_dir + file
|
||||||
if not archives.has(id):
|
if not archives.has(id):
|
||||||
archives[id] = ResourceLoader.load(
|
var res = ResourceLoader.load(
|
||||||
path, "AssembledArchive", ResourceLoader.CACHE_MODE_REPLACE_DEEP
|
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
|
return true
|
||||||
|
|
||||||
|
|
||||||
@ -152,7 +157,6 @@ func create_and_use_new_archive(id := -1) -> void:
|
|||||||
_create_and_save_new_archive_resoure(id, true)
|
_create_and_save_new_archive_resoure(id, true)
|
||||||
else:
|
else:
|
||||||
_create_and_save_new_archive_resoure(id)
|
_create_and_save_new_archive_resoure(id)
|
||||||
archives[id] = archive
|
|
||||||
# this will auto trigger signal and load the new archive
|
# this will auto trigger signal and load the new archive
|
||||||
GlobalConfigManager.config.current_selected_archive_id = id
|
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:
|
func _create_and_save_new_archive_resoure(id, take_over_path = false) -> void:
|
||||||
var archive_path = _get_archive_path(id)
|
var archive_path = _get_archive_path(id)
|
||||||
archive = AssembledArchive.new() as Resource
|
archive = AssembledArchive.new() as Resource
|
||||||
|
archive.version = CURRENT_VERSION
|
||||||
if take_over_path:
|
if take_over_path:
|
||||||
archive.take_over_path(archive_path)
|
archive.take_over_path(archive_path)
|
||||||
else:
|
else:
|
||||||
@ -167,6 +172,7 @@ func _create_and_save_new_archive_resoure(id, take_over_path = false) -> void:
|
|||||||
archive.archive_id = id
|
archive.archive_id = id
|
||||||
archive.created_time = Time.get_datetime_string_from_system(false, true)
|
archive.created_time = Time.get_datetime_string_from_system(false, true)
|
||||||
ResourceSaver.save(archive, archive_path)
|
ResourceSaver.save(archive, archive_path)
|
||||||
|
archives[id] = archive
|
||||||
|
|
||||||
|
|
||||||
# 超过 999 个存档会出问题;不过这个游戏不会有这么多存档
|
# 超过 999 个存档会出问题;不过这个游戏不会有这么多存档
|
||||||
@ -205,9 +211,13 @@ func load_config() -> void:
|
|||||||
var path = user_root_dir + "config" + GlobalConfig.RES_FILE_FORMAT
|
var path = user_root_dir + "config" + GlobalConfig.RES_FILE_FORMAT
|
||||||
if FileAccess.file_exists(path):
|
if FileAccess.file_exists(path):
|
||||||
var config = ResourceLoader.load(path)
|
var config = ResourceLoader.load(path)
|
||||||
GlobalConfigManager.config = config
|
if is_instance_valid(config) and config.version == CURRENT_VERSION:
|
||||||
else:
|
GlobalConfigManager.config = config
|
||||||
|
else:
|
||||||
|
printerr("SKIP INVALID CONFIG!")
|
||||||
|
if GlobalConfigManager.config == null:
|
||||||
var config = GlobalConfig.new()
|
var config = GlobalConfig.new()
|
||||||
|
config.version = CURRENT_VERSION
|
||||||
GlobalConfigManager.config = config
|
GlobalConfigManager.config = config
|
||||||
ResourceSaver.save(config, path)
|
ResourceSaver.save(config, path)
|
||||||
GlobalConfigManager.config.resource_path = path
|
GlobalConfigManager.config.resource_path = path
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
class_name AssembledArchive extends Resource
|
class_name AssembledArchive extends Resource
|
||||||
|
|
||||||
|
@export var version: int #存档版本
|
||||||
@export var archive_id := 0
|
@export var archive_id := 0
|
||||||
# TODO: 注意设置游戏起点
|
# TODO: 注意设置游戏起点
|
||||||
@export var entrance_portal := "left"
|
@export var entrance_portal := "left"
|
||||||
|
@ -52,6 +52,7 @@ signal current_selected_archive_id_changed
|
|||||||
signal auto_save_enabled_changed
|
signal auto_save_enabled_changed
|
||||||
signal auto_save_seconds_changed
|
signal auto_save_seconds_changed
|
||||||
|
|
||||||
|
@export var version: int #存档版本
|
||||||
@export var game_total_seconds := 0 # 游戏总时长
|
@export var game_total_seconds := 0 # 游戏总时长
|
||||||
@export var game_rounds := 1 # 当前周目数
|
@export var game_rounds := 1 # 当前周目数
|
||||||
@export var current_selected_archive_id := -1: # 当前选定存档, -1 为未选择
|
@export var current_selected_archive_id := -1: # 当前选定存档, -1 为未选择
|
||||||
@ -76,4 +77,4 @@ signal auto_save_seconds_changed
|
|||||||
@export var db_game_sfx := linear_to_db(0.7) # default
|
@export var db_game_sfx := linear_to_db(0.7) # default
|
||||||
# language
|
# language
|
||||||
# -1 null; 0 zh_CN; 1 zh_SH; 2 en
|
# -1 null; 0 zh_CN; 1 zh_SH; 2 en
|
||||||
@export var language := 0
|
@export var language := 0
|
||||||
|
Loading…
Reference in New Issue
Block a user