extends HBoxContainer class_name SettingsMenu @onready var audio_options_container: VBoxContainer = $%AudioOptionsContainer @onready var aliasing_checkbox: CustomCheckbox = $%AliasingCheckbox @onready var window_option_menu = $VBoxContainer/WindowOptionMenu func _ready() -> void: _refresh_audio_options() if aliasing_checkbox: aliasing_checkbox.button_pressed = GameState.save_data.anti_aliasing aliasing_checkbox.toggled.connect(_on_aliasing_toggled) if window_option_menu: var initial_res = Vector2i(GameState.save_data.resolution_x, GameState.save_data.resolution_y) window_option_menu.initialize(GameState.save_data.window_mode_index, initial_res) window_option_menu.mode_changed.connect(_on_window_mode_changed) window_option_menu.resolution_changed.connect(_on_resolution_changed) func _on_aliasing_toggled(toggled_on: bool) -> void: GameState.save_data.anti_aliasing = toggled_on GameState.save_game() GameState.apply_video_settings() func _on_window_mode_changed(mode_index: int) -> void: GameState.save_data.window_mode_index = mode_index GameState.save_game() GameState.apply_video_settings() func _on_resolution_changed(resolution: Vector2i) -> void: GameState.save_data.resolution_x = resolution.x GameState.save_data.resolution_y = resolution.y GameState.save_game() GameState.apply_video_settings() func _get_audio_options() -> Array[AudioOption]: var audio_options: Array[AudioOption] = [] for child in audio_options_container.get_children(): if child is AudioOption: audio_options.append(child) return audio_options func _refresh_audio_options() -> void: for audio_option in _get_audio_options(): audio_option.refresh() func _apply_current_audio_values() -> void: for audio_option in _get_audio_options(): audio_option.apply_current_value()