@tool extends Control class_name GuiSettings @onready var settings : SettingsData = GameInfo.settings_data @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() setup_controls() show() %SettingsWindow.hide() %SettingsWindow.closed.connect( func(): GameInfo.save_settings() ) func open_settings(): setup_languages() setup_sound() setup_controls() show() %SettingsWindow.open_window() func close_settings(): GameInfo.save_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 setup_controls(): %AutoPickupCheckBox.button_pressed = settings.auto_pickup %FovSlider.value = settings.fov %SensibilitySlider.value = settings.mouse_sensivity 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): if value != settings.music_volume: %MusicTestPlayer.play() settings.music_volume = min(1.0, value) func _on_env_slider_value_changed(value: float): if value != settings.ambiance_volume: %AudioStreamPlayer.play() settings.ambiance_volume = min(1.0, value) func _on_sfx_slider_value_changed(value: float): if value != settings.sfx_volume: %SfxTestPlayer.play() settings.sfx_volume = min(1.0, value) func _on_auto_pickup_check_box_toggled(toggled_on: bool): settings.auto_pickup = toggled_on func _on_fov_slider_value_changed(value): if is_node_ready(): settings.fov = value func _on_sensibility_slider_value_changed(value: float): settings.mouse_sensivity = value