diff options
Diffstat (limited to 'client/menu/settings.gd')
| -rw-r--r-- | client/menu/settings.gd | 56 | 
1 files changed, 56 insertions, 0 deletions
| diff --git a/client/menu/settings.gd b/client/menu/settings.gd new file mode 100644 index 00000000..66b53f64 --- /dev/null +++ b/client/menu/settings.gd @@ -0,0 +1,56 @@ +# Undercooked - a game about cooking +# Copyright 2024 metamuffin +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, version 3 of the License only. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program.  If not, see <https://www.gnu.org/licenses/>. +# +extends Menu + +@onready var options: VBoxContainer = $OuterGap/Panel/InnerGap/VBoxContainer/ScrollContainer/Options + +var settings: Dictionary + +func _on_back_pressed(): +	for k in settings.keys(): +		Global.set_setting(k, settings[k].get_value()) +	Global.save_settings() +	Global.update_language() +	Global.update_fullscreen() +	exit() + +func _ready(): +	super() +	update_rows() + +func update_rows(fix_focus = false): +	for c in options.get_children(): +		c.queue_free() +	 +	for k in Global.settings.keys(): +		var row: SettingsRow = preload("res://menu/settings_row.tscn").instantiate() +		row.setup(k, Global.settings, Global.default_settings) +		row.connect("apply_preset", apply_preset) +		options.add_child(row) +		settings[k] = row +	 +	if fix_focus: +		await get_tree().process_frame +		Global.focus_first_button(self) + +func apply_preset(preset: Dictionary): +	for k in settings.keys(): +		Global.set_setting(k, settings[k].get_value()) +	 +	for k in preset.keys(): +		Global.set_setting(k, preset[k]) +	 +	update_rows(true) | 
