summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-07 03:31:25 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-07 03:31:25 +0200
commit239619be774855b372eea82213b4d8da2d906f52 (patch)
treef2e3748a4a4e818361365796db21bdf9e70fee97
parent03bdf875aec224ee8f74c259ed776da52bad54ff (diff)
downloadhurrycurry-239619be774855b372eea82213b4d8da2d906f52.tar
hurrycurry-239619be774855b372eea82213b4d8da2d906f52.tar.bz2
hurrycurry-239619be774855b372eea82213b4d8da2d906f52.tar.zst
hook changed for rows
-rw-r--r--client/global.gd2
-rw-r--r--client/menu/settings.gd6
-rw-r--r--client/menu/settings/dropdown_setting.gd16
-rw-r--r--client/menu/settings/game_setting.gd12
-rw-r--r--client/menu/settings/preset_row.gd2
-rw-r--r--client/menu/settings/range_setting.gd8
-rw-r--r--client/menu/settings/settings_category.gd13
-rw-r--r--client/menu/settings/settings_root.gd8
-rw-r--r--client/menu/settings/text_setting.gd11
-rw-r--r--client/menu/settings/toggle_setting.gd13
10 files changed, 35 insertions, 56 deletions
diff --git a/client/global.gd b/client/global.gd
index e5ae0ed6..e85bf697 100644
--- a/client/global.gd
+++ b/client/global.gd
@@ -153,7 +153,7 @@ func set_setting(key: String, value):
push_error("Tried to set setting \"%s\", which does not yet exist (missing key)" % key)
return
else: set_setting_unchecked(key, value)
-
+
func get_profile(key: String):
if profile.has(key):
return profile[key]
diff --git a/client/menu/settings.gd b/client/menu/settings.gd
index b47331c6..f035f712 100644
--- a/client/menu/settings.gd
+++ b/client/menu/settings.gd
@@ -20,9 +20,9 @@ extends Menu
func _ready():
super()
- Global.settings_tree._update_row()
- container.add_child(Global.settings_tree.row)
- container.move_child(Global.settings_tree.row, 1)
+ var row = Global.settings_tree.create_row()
+ container.add_child(row)
+ container.move_child(row, 1)
func _on_back_pressed():
exit()
diff --git a/client/menu/settings/dropdown_setting.gd b/client/menu/settings/dropdown_setting.gd
index 62162320..8dffce5a 100644
--- a/client/menu/settings/dropdown_setting.gd
+++ b/client/menu/settings/dropdown_setting.gd
@@ -22,14 +22,10 @@ func _init(new_id: String, new_default, new_options: Array):
super(new_id, new_default)
options = new_options
-func _update_row():
- super()
+func create_row():
+ var row = super()
row.value_node = OptionButton.new()
- for i in options:
- row.value_node.add_item(tr(nskey + "." + i))
- row.value_node.select(options.find(Global.get_setting(key)))
- if not row.value_node.item_selected.is_connected(from_ui):
- row.value_node.item_selected.connect(from_ui)
-
-func from_ui(index):
- Global.set_setting(key, options[index])
+ for i in options: row.value_node.add_item(tr(nskey + "." + i))
+ Settings.hook_changed_init(func (value): row.value_node.select(options.find(Global.get_setting(value))))
+ row.value_node.item_selected.connect(func(item): Global.set_setting(key, options[item]))
+ return row
diff --git a/client/menu/settings/game_setting.gd b/client/menu/settings/game_setting.gd
index 2846cbe3..a98d5abb 100644
--- a/client/menu/settings/game_setting.gd
+++ b/client/menu/settings/game_setting.gd
@@ -20,8 +20,6 @@ var default
var key: String
var nskey: String
-var row: Node
-
func _init(new_id: String, new_default = null):
default = new_default
key = new_id
@@ -30,13 +28,11 @@ func set_parent(parent: GameSetting):
if parent != null: key = parent.key + "." + key
nskey = "c.settings." + key
-func _update_row():
- if row == null: row = preload("res://menu/settings/settings_row.tscn").instantiate()
+func create_row():
+ var row = preload("res://menu/settings/settings_row.tscn").instantiate()
row.description = tr(nskey)
- if not row.reset.is_connected(reset): row.reset.connect(reset)
-
-func reset():
- Global.set_setting(key, default)
+ row.reset.connect(func(): Global.set_setting(key, default))
+ return row
func check():
if default != null:
diff --git a/client/menu/settings/preset_row.gd b/client/menu/settings/preset_row.gd
index 7eca0c3c..ab49f0d8 100644
--- a/client/menu/settings/preset_row.gd
+++ b/client/menu/settings/preset_row.gd
@@ -34,7 +34,7 @@ func apply(preset_name: String):
for i in preset.keys():
Global.set_setting(prefix + "." + i, preset[i])
-func _update_row():
+func create_row():
super()
if row.value_node == null:
row.value_node = HBoxContainer.new()
diff --git a/client/menu/settings/range_setting.gd b/client/menu/settings/range_setting.gd
index 49db7c21..adc8a28c 100644
--- a/client/menu/settings/range_setting.gd
+++ b/client/menu/settings/range_setting.gd
@@ -36,9 +36,5 @@ func _update_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))
- row.value_node.value = Global.get_setting(key)
- if not row.value_node.value_changed.is_connected(from_ui):
- row.value_node.value_changed.connect(from_ui)
-
-func from_ui(value):
- Global.set_setting(key, value)
+ Settings.hook_change_init(func(value): row.value_node.value = value)
+ row.value_node.value_changed.connect(func(value): Global.set_setting(key, value))
diff --git a/client/menu/settings/settings_category.gd b/client/menu/settings/settings_category.gd
index a80c12c9..4f5fbbc4 100644
--- a/client/menu/settings/settings_category.gd
+++ b/client/menu/settings/settings_category.gd
@@ -30,20 +30,17 @@ func set_parent(parent: GameSetting):
c.set_parent(self)
func _update_row():
- if row == null: row = ScrollContainerCustom.new()
- if options == null: options = VBoxContainer.new()
+ var row = ScrollContainerCustom.new()
+ var options = VBoxContainer.new()
row.name = tr(nskey)
row.size_flags_horizontal = Control.SIZE_EXPAND_FILL
options.size_flags_horizontal = Control.SIZE_EXPAND_FILL
-
- if options.get_parent() != row:
- row.add_child(options)
+ row.add_child(options)
for r in settings:
r._update_row()
- print(r.row)
- if r.row.get_parent() != options:
- options.add_child(r.row)
+ options.add_child(r.row)
+ return row
func check():
for c in settings:
diff --git a/client/menu/settings/settings_root.gd b/client/menu/settings/settings_root.gd
index 5acf7f11..d7dad1f7 100644
--- a/client/menu/settings/settings_root.gd
+++ b/client/menu/settings/settings_root.gd
@@ -23,13 +23,13 @@ func _init(new_children: Array):
for c in children:
c.set_parent(null)
-func _update_row():
- if row == null: row = TabContainer.new()
+func create_row():
+ var row = TabContainer.new()
row.size_flags_vertical = Control.SIZE_EXPAND_FILL
for r in children:
r._update_row()
- if r.row.get_parent() != row:
- row.add_child(r.row)
+ row.add_child(r.row)
+ return row
func check():
for c in children:
diff --git a/client/menu/settings/text_setting.gd b/client/menu/settings/text_setting.gd
index 6fa6b1ef..4cdf746f 100644
--- a/client/menu/settings/text_setting.gd
+++ b/client/menu/settings/text_setting.gd
@@ -24,12 +24,9 @@ func _init(new_id: String, new_default: String, new_placeholder: String = ""):
placeholder = new_placeholder
func _update_row():
- super()
+ var row = super()
row.value_node = LineEdit.new()
- row.value_node.text = Global.get_setting(key)
row.value_node.placeholder_text = placeholder
- if not row.value_node.text_changed.is_connected(from_ui):
- row.value_node.text_changed.connect(from_ui)
-
-func from_ui(text):
- Global.set_setting(key, text)
+ row.value_node.text_changed.connect(func(text): Global.set_setting(key, text))
+ Settings.hook_changed_init(key, func(text): row.value_node.text = text)
+ return row
diff --git a/client/menu/settings/toggle_setting.gd b/client/menu/settings/toggle_setting.gd
index 45f08d9f..c8c40469 100644
--- a/client/menu/settings/toggle_setting.gd
+++ b/client/menu/settings/toggle_setting.gd
@@ -20,12 +20,9 @@ extends GameSetting
func _init(new_id: String, new_default: bool):
super(new_id, new_default)
-func _update_row():
- super()
+func create_row():
+ var row = super()
row.value_node = CheckButton.new()
- row.value_node.button_pressed = Global.get_setting(key)
- if not row.value_node.pressed.is_connected(from_ui):
- row.value_node.pressed.connect(from_ui)
-
-func from_ui():
- Global.set_setting(key, row.value_node.button_pressed)
+ row.value_node.pressed.connect(func(): Global.set_setting(key, row.value_node.button_pressed))
+ Settings.hook_changed_init(key, func(value): row.value_node.button_pressed = value)
+ return row