diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-19 13:59:16 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-19 13:59:16 +0200 |
commit | e89f80d563f98b8911c794e4add645a6a811d718 (patch) | |
tree | 286a5be84b623c862a04c1ecbc4336801f650889 | |
parent | ba5a51f5fabb68f0e103e41a593b2259ba2a013a (diff) | |
download | hurrycurry-e89f80d563f98b8911c794e4add645a6a811d718.tar hurrycurry-e89f80d563f98b8911c794e4add645a6a811d718.tar.bz2 hurrycurry-e89f80d563f98b8911c794e4add645a6a811d718.tar.zst |
only save settings with non-default values
-rw-r--r-- | client/global.gd | 5 | ||||
-rw-r--r-- | client/menu/settings/game_setting.gd | 4 | ||||
-rw-r--r-- | client/menu/settings/input/input_setting.gd | 3 | ||||
-rw-r--r-- | client/menu/settings/preset_row.gd | 2 | ||||
-rw-r--r-- | client/menu/settings/settings_category.gd | 6 | ||||
-rw-r--r-- | client/menu/settings/settings_root.gd | 6 |
6 files changed, 25 insertions, 1 deletions
diff --git a/client/global.gd b/client/global.gd index 0923b457..404b4a8b 100644 --- a/client/global.gd +++ b/client/global.gd @@ -96,7 +96,10 @@ func save_profile(): save_dict("user://profile", profile) func save_settings(): - save_dict("user://settings", settings) + var saved = {} + for key in settings_tree.changed_keys(): + saved[key] = Global.get_setting(key) + save_dict("user://settings", saved) func save_dict(path: String, dict: Dictionary): var f = FileAccess.open(path, FileAccess.WRITE) diff --git a/client/menu/settings/game_setting.gd b/client/menu/settings/game_setting.gd index a98d5abb..1698a963 100644 --- a/client/menu/settings/game_setting.gd +++ b/client/menu/settings/game_setting.gd @@ -40,3 +40,7 @@ func check(): Global.set_setting_unchecked(key, default) if typeof(default) != typeof(Global.settings[key]): Global.set_setting_unchecked(key, default) + +func changed_keys(): + if Global.get_setting(key) != default: return [key] + else: return [] diff --git a/client/menu/settings/input/input_setting.gd b/client/menu/settings/input/input_setting.gd index 7388af78..0ea83955 100644 --- a/client/menu/settings/input/input_setting.gd +++ b/client/menu/settings/input/input_setting.gd @@ -25,3 +25,6 @@ func create_row(): Settings.hook_changed_init(key, true, func(value): row.value_node.value = value) row.value_node.changed.connect(func(): Global.set_setting(key, row.value_node.value)) return row + +func changed_keys(): + return [key] # TODO only if changed diff --git a/client/menu/settings/preset_row.gd b/client/menu/settings/preset_row.gd index af6cfe0e..7bf617e7 100644 --- a/client/menu/settings/preset_row.gd +++ b/client/menu/settings/preset_row.gd @@ -43,3 +43,5 @@ func create_row(): button.text = tr(nskey + "." + i) row.value_node.add_child(button) return row + +func changed_keys(): return [] diff --git a/client/menu/settings/settings_category.gd b/client/menu/settings/settings_category.gd index 9a7a57c2..ec6d58e7 100644 --- a/client/menu/settings/settings_category.gd +++ b/client/menu/settings/settings_category.gd @@ -41,3 +41,9 @@ func create_row(): func check(): for c in settings: c.check() + +func changed_keys(): + var changed = [] + for c in settings: + changed.append_array(c.changed_keys()) + return changed diff --git a/client/menu/settings/settings_root.gd b/client/menu/settings/settings_root.gd index 1beb0d9b..30b688f0 100644 --- a/client/menu/settings/settings_root.gd +++ b/client/menu/settings/settings_root.gd @@ -32,3 +32,9 @@ func create_row(): func check(): for c in children: c.check() + +func changed_keys(): + var changed = [] + for c in children: + changed.append_array(c.changed_keys()) + return changed |