extends Control const WINDOW_FACTOR = "window_factor" signal back @onready var fullscreen_button : CheckButton = $%FullscreenCheckButton @onready var window_factor_buttons : HBoxContainer = $%WindowFactorContainer @onready var back_button : Button = $%BackButton @onready var master_slider : Slider = $%MasterSlider @onready var ui_slider : Slider = $%UISlider @onready var sfx_slider : Slider = $%SFXSlider @onready var music_slider : Slider = $%MusicSlider func _ready() -> void: _connect_window_factor_buttons() _load_current_settings() _init_focus() _setup_neighbors() func _connect_window_factor_buttons() -> void: for child in window_factor_buttons.get_children(): if child is Button: var button : Button = child button.pressed.connect(_on_window_factor_button_pressed.bind(button)) func _on_visibility_changed() -> void: if not is_node_ready(): return if not visible: return _load_current_settings() _init_focus() _setup_neighbors() func _init_focus() -> void: fullscreen_button.grab_focus() func _setup_neighbors() -> void: music_slider.focus_neighbor_bottom = back_button.get_path() func _load_current_settings() -> void: fullscreen_button.button_pressed = SettingsManager.fullscreen for child in window_factor_buttons.get_children(): if child is Button: var button : Button = child var window_factor : int = button.get_meta(WINDOW_FACTOR, 0) if window_factor == SettingsManager.window_factor: button.button_pressed = true _update_window_factor_disabled() master_slider.value = SettingsManager.master_volume ui_slider.value = SettingsManager.ui_volume sfx_slider.value = SettingsManager.sfx_volume music_slider.value = SettingsManager.music_volume func _update_window_factor_disabled() -> void: for child in window_factor_buttons.get_children(): if not child is Button: continue child.disabled = SettingsManager.fullscreen child.focus_mode = Control.FOCUS_NONE if SettingsManager.fullscreen else Control.FOCUS_ALL func _on_fullscreen_check_button_toggled(toggled: bool) -> void: SettingsManager.fullscreen = toggled _update_window_factor_disabled() func _on_back_button_pressed() -> void: back.emit() func _on_window_factor_button_pressed(button: Button) -> void: var window_factor : int = button.get_meta(WINDOW_FACTOR, 0) if window_factor > 0: SettingsManager.window_factor = window_factor func _on_master_volume_changed(value: float) -> void: SettingsManager.master_volume = floor(value) func _on_ui_volume_changed(value: float) -> void: SettingsManager.ui_volume = floor(value) func _on_sfx_volume_changed(value: float) -> void: SettingsManager.sfx_volume = floor(value) func _on_music_volume_changed(value: float) -> void: SettingsManager.music_volume = floor(value)