Files
tgcc/core/game_menu/settings_menu.gd
2026-06-18 19:59:07 +00:00

55 lines
1.8 KiB
GDScript

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()