From 73d9d9b88b6e3da7cf45ce9639e8b4025e167e1b Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Thu, 22 Jul 2021 17:16:27 +0200 Subject: [PATCH] add basic config version checking, discarding outdated configs --- .../addons/settings-manager/settings_manager.gd | 8 ++++++-- ovr-utils/settings_definition.gd | 13 ++++++++++--- ovr-utils/settings_validator.gd | 7 +++++++ ovr-utils/ui/overlay_list_item.gd | 4 ++-- 4 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 ovr-utils/settings_validator.gd diff --git a/ovr-utils/addons/settings-manager/settings_manager.gd b/ovr-utils/addons/settings-manager/settings_manager.gd index 907e80d..a6acf44 100644 --- a/ovr-utils/addons/settings-manager/settings_manager.gd +++ b/ovr-utils/addons/settings-manager/settings_manager.gd @@ -90,6 +90,7 @@ func _save_sub_setting(val, def): func load_settings() -> void: var file = File.new() + var validator: Script = preload("res://settings_validator.gd") if not file.file_exists(SETTINGS_PATH): if DEBUG_SETTINGS: @@ -100,8 +101,11 @@ func load_settings() -> void: var new_settings = parse_json(file.get_as_text()) file.close() - for key in new_settings: - s[key] = _load_sub_setting(new_settings[key], SETTINGS_DEF[key]) + if validator.is_valid(new_settings): + for key in new_settings: + s[key] = _load_sub_setting(new_settings[key], SETTINGS_DEF[key]) + else: + print("Invalid or outdated config file, using defaults") if DEBUG_SETTINGS: print("Loaded settings from file") diff --git a/ovr-utils/settings_definition.gd b/ovr-utils/settings_definition.gd index 1df50a0..f62d959 100644 --- a/ovr-utils/settings_definition.gd +++ b/ovr-utils/settings_definition.gd @@ -1,7 +1,14 @@ extends Node -const PATH = "user://overlay_data_DEV.json" +const VERSION = 1 + +const PATH = "user://overlay_data.json" const DEF = { + "version": { + "name": "Version of save file", + "type": "int", + "default": VERSION + }, "grab_mode": { "name": "Grab mode", "description": "Grab and drag around any overlay", @@ -28,12 +35,12 @@ const DEF = { }, "width": { "name": "Width (m)", - "type": "number", + "type": "float", "default": 0.4 }, "alpha": { "name": "Alpha", - "type": "number", + "type": "float", "default": 1.0 }, "target": { diff --git a/ovr-utils/settings_validator.gd b/ovr-utils/settings_validator.gd new file mode 100644 index 0000000..4c311b1 --- /dev/null +++ b/ovr-utils/settings_validator.gd @@ -0,0 +1,7 @@ +extends Node + + +static func is_valid(to_check: Dictionary) -> bool: + if not to_check.has("version"): + return false + return to_check.version == preload("res://settings_definition.gd").VERSION diff --git a/ovr-utils/ui/overlay_list_item.gd b/ovr-utils/ui/overlay_list_item.gd index 4da9acb..a54cc86 100644 --- a/ovr-utils/ui/overlay_list_item.gd +++ b/ovr-utils/ui/overlay_list_item.gd @@ -13,8 +13,8 @@ func _ready() -> void: $BasicOptions/Label.text = overlay_name name = overlay_name -# overlay.connect("overlay_visible_changed", self, "_overlay_visible_changed") -# overlay.connect("path_changed", self, "_update_warning") + overlay.connect("overlay_visible_changed", self, "_overlay_visible_changed") + overlay.connect("path_changed", self, "_update_warning") func _apply_loaded():