From 06baf4555dc1c7a64bed7d059fbe34c99e9638fb Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 6 Sep 2024 23:43:42 +0200 Subject: refactor settings again (part 1) --- client/menu/settings/game_setting.gd | 52 +++++++++++++++--------------------- 1 file changed, 22 insertions(+), 30 deletions(-) (limited to 'client/menu/settings/game_setting.gd') diff --git a/client/menu/settings/game_setting.gd b/client/menu/settings/game_setting.gd index afe1fe65..2846cbe3 100644 --- a/client/menu/settings/game_setting.gd +++ b/client/menu/settings/game_setting.gd @@ -16,39 +16,31 @@ class_name GameSetting extends Object -var preset -var _value -var description: String +var default +var key: String +var nskey: String -var row: SettingsRow +var row: Node -func _init(new_description: String, new_preset): - preset = new_preset - set_value(new_preset) - description = new_description +func _init(new_id: String, new_default = null): + default = new_default + key = new_id -func reset(): - set_value(preset) - -func get_row() -> SettingsRow: - _update_row() - return row +func set_parent(parent: GameSetting): + if parent != null: key = parent.key + "." + key + nskey = "c.settings." + key func _update_row(): - if row != null: - row.queue_free() - row = preload("res://menu/settings/settings_row.tscn").instantiate() - row.description = description - row.reset.connect(reset) - -func fetch_setting(): - pass + if row == null: 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 get_value(): - return _value - -func set_value(v): - if v is Array: - _value = v.duplicate(true) - else: - _value = v +func reset(): + Global.set_setting(key, default) + +func check(): + if default != null: + if not key in Global.settings: + Global.set_setting_unchecked(key, default) + if typeof(default) != typeof(Global.settings[key]): + Global.set_setting_unchecked(key, default) -- cgit v1.2.3-70-g09d2