@tool extends Control class_name GuiSettings @onready var settings : SettingsData = GameInfo.game_data.settings @export_tool_button("Open", "Callable") var open_action = open_settings @export_tool_button("Close", "Callable") var close_action = close_settings func _ready(): setup_languages() setup_sound() setup_video() if not Engine.is_editor_hint(): %SettingsWindow.close_window() show() func open_settings(): %SettingsWindow.open_window() func close_settings(): %SettingsWindow.close_window() func setup_languages(): var optionButton := (%LanguageOptionButton as OptionButton) optionButton.clear() for language in SettingsData.AVAILABLE_LANGUAGES_LABEL: optionButton.add_item(language) optionButton.selected = SettingsData.AVAILABLE_LANGUAGES.find(settings.language) func setup_sound(): %MusicSlider.value = settings.music_volume %EnvSlider.value = settings.ambiance_volume %SFXSlider.value = settings.sfx_volume func setup_video(): %FullScreenCheckBox.button_pressed = settings.full_screen func _on_language_option_button_item_selected(index: int): settings.language = SettingsData.AVAILABLE_LANGUAGES[index] func _on_full_screen_check_box_toggled(toggled_on: bool): settings.full_screen = toggled_on func _on_music_slider_value_changed(value: float): settings.music_volume = min(1.0, value) func _on_env_slider_value_changed(value: float): settings.ambiance_volume = min(1.0, value) func _on_sfx_slider_value_changed(value: float): settings.sfx_volume = min(1.0, value)