aboutsummaryrefslogtreecommitdiff
path: root/client/gui/menus/settings
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-22 23:13:58 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-22 23:14:21 +0200
commitfed8a4f8cd2adc9191211f74f284f93eb8f1ac53 (patch)
tree27a2db9896c112fb903b38f0cf2392b676d2270a /client/gui/menus/settings
parentaba816f923b8bcd33d53eabd93b01c6e85f4dc75 (diff)
downloadhurrycurry-fed8a4f8cd2adc9191211f74f284f93eb8f1ac53.tar
hurrycurry-fed8a4f8cd2adc9191211f74f284f93eb8f1ac53.tar.bz2
hurrycurry-fed8a4f8cd2adc9191211f74f284f93eb8f1ac53.tar.zst
Disable setting reset if default; refactor setting hook system (fix #379)
Diffstat (limited to 'client/gui/menus/settings')
-rw-r--r--client/gui/menus/settings/dropdown_setting.gd2
-rw-r--r--client/gui/menus/settings/game_setting.gd4
-rw-r--r--client/gui/menus/settings/input/input_setting.gd2
-rw-r--r--client/gui/menus/settings/number_setting.gd2
-rw-r--r--client/gui/menus/settings/range_setting.gd2
-rw-r--r--client/gui/menus/settings/settings_row.gd4
-rw-r--r--client/gui/menus/settings/text_setting.gd2
-rw-r--r--client/gui/menus/settings/toggle_setting.gd2
8 files changed, 14 insertions, 6 deletions
diff --git a/client/gui/menus/settings/dropdown_setting.gd b/client/gui/menus/settings/dropdown_setting.gd
index 69ae29b6..bf4c3d48 100644
--- a/client/gui/menus/settings/dropdown_setting.gd
+++ b/client/gui/menus/settings/dropdown_setting.gd
@@ -27,7 +27,7 @@ func create_row():
row.value_node = OptionButton.new()
row.value_node.clip_text = true
for i in options: row.value_node.add_item(tr(nskey + "." + i))
- Settings.hook_changed_init(key, true,
+ Settings.hook_changed_init(key, "preview",
func(value):
if is_instance_valid(row):
row.value_node.select(options.find(value))
diff --git a/client/gui/menus/settings/game_setting.gd b/client/gui/menus/settings/game_setting.gd
index 1dfee59e..2284f637 100644
--- a/client/gui/menus/settings/game_setting.gd
+++ b/client/gui/menus/settings/game_setting.gd
@@ -32,8 +32,12 @@ func create_row():
var row = preload("res://gui/menus/settings/settings_row.tscn").instantiate()
row.description = tr(nskey)
row.reset.connect(func(): Settings.write(key, default))
+ Settings.hook_changed_init(key, "preview_reset", func (_value): row.set_reset_disabled(is_default()))
return row
+func is_default():
+ return Settings.read(key) == default
+
func load(d: Dictionary):
if d.has(key) && typeof(d[key]) == typeof(default):
Settings.write_unchecked(key, d[key])
diff --git a/client/gui/menus/settings/input/input_setting.gd b/client/gui/menus/settings/input/input_setting.gd
index 3431ff38..3367ac8e 100644
--- a/client/gui/menus/settings/input/input_setting.gd
+++ b/client/gui/menus/settings/input/input_setting.gd
@@ -25,7 +25,7 @@ func _init(new_id: String):
func create_row():
var row = super()
row.value_node = INPUT_VALUE_NODE_SCENE.instantiate()
- Settings.hook_changed_init(key, true,
+ Settings.hook_changed_init(key, "preview",
func(value):
if is_instance_valid(row):
row.value_node.value = value
diff --git a/client/gui/menus/settings/number_setting.gd b/client/gui/menus/settings/number_setting.gd
index f729913c..48dd0a82 100644
--- a/client/gui/menus/settings/number_setting.gd
+++ b/client/gui/menus/settings/number_setting.gd
@@ -32,7 +32,7 @@ func create_row():
input.max_value = max_value
input.value_changed.connect(func(value): Settings.write(key, value as int))
- Settings.hook_changed_init(key, true,
+ Settings.hook_changed_init(key, "preview",
func(v):
if is_instance_valid(input):
input.value = v
diff --git a/client/gui/menus/settings/range_setting.gd b/client/gui/menus/settings/range_setting.gd
index a487c6b4..2d7e88b4 100644
--- a/client/gui/menus/settings/range_setting.gd
+++ b/client/gui/menus/settings/range_setting.gd
@@ -35,7 +35,7 @@ func create_row():
row.value_node.max_value = max_value
row.value_node.tick_count = abs(max_value - min_value) if tick_count == null else tick_count
row.value_node.step = 0 if smooth else (1 if tick_count == null else abs(max_value - min_value) / (tick_count - 1))
- Settings.hook_changed_init(key, true,
+ Settings.hook_changed_init(key, "preview",
func(value):
if is_instance_valid(row):
row.value_node.value = value
diff --git a/client/gui/menus/settings/settings_row.gd b/client/gui/menus/settings/settings_row.gd
index d88d49c1..a3b4f8c8 100644
--- a/client/gui/menus/settings/settings_row.gd
+++ b/client/gui/menus/settings/settings_row.gd
@@ -33,5 +33,9 @@ func _ready():
label.text = description
value_parent.add_child(c)
+func set_reset_disabled(d: bool):
+ if is_instance_valid(reset_button): reset_button.disabled = d
+ else: set_reset_disabled.call_deferred(d)
+
func _on_reset_pressed():
reset.emit()
diff --git a/client/gui/menus/settings/text_setting.gd b/client/gui/menus/settings/text_setting.gd
index 83e68539..de0ef218 100644
--- a/client/gui/menus/settings/text_setting.gd
+++ b/client/gui/menus/settings/text_setting.gd
@@ -27,7 +27,7 @@ func create_row():
var input := LineEdit.new()
input.placeholder_text = placeholder
input.text_changed.connect(func(text): Settings.write(key, text))
- Settings.hook_changed_init(key, true,
+ Settings.hook_changed_init(key, "preview",
func(text):
if is_instance_valid(input):
var pos = input.caret_column
diff --git a/client/gui/menus/settings/toggle_setting.gd b/client/gui/menus/settings/toggle_setting.gd
index dcf7dbd7..fa60ca74 100644
--- a/client/gui/menus/settings/toggle_setting.gd
+++ b/client/gui/menus/settings/toggle_setting.gd
@@ -23,7 +23,7 @@ func create_row():
var row = super()
row.value_node = CheckButton.new()
row.value_node.pressed.connect(func(): Settings.write(key, row.value_node.button_pressed))
- Settings.hook_changed_init(key, true,
+ Settings.hook_changed_init(key, "preview",
func(value):
if is_instance_valid(row):
row.value_node.button_pressed = value