aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/global.gd5
-rw-r--r--client/menu/settings/game_setting.gd4
-rw-r--r--client/menu/settings/input/input_setting.gd3
-rw-r--r--client/menu/settings/preset_row.gd2
-rw-r--r--client/menu/settings/settings_category.gd6
-rw-r--r--client/menu/settings/settings_root.gd6
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