55 lines
1.8 KiB
GDScript
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()
|