add graphics settings save
This commit is contained in:
@@ -5,18 +5,36 @@ 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 = get_viewport().use_taa or get_viewport().msaa_3d != Viewport.MSAA_DISABLED
|
||||
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:
|
||||
get_viewport().use_taa = toggled_on
|
||||
var msaa_mode = Viewport.MSAA_2X if toggled_on else Viewport.MSAA_DISABLED
|
||||
get_viewport().msaa_3d = msaa_mode
|
||||
get_viewport().msaa_2d = msaa_mode
|
||||
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] = []
|
||||
|
||||
@@ -6,6 +6,7 @@ signal resolution_changed(resolution: Vector2i)
|
||||
@export var window_option_menu_button_scene: PackedScene
|
||||
|
||||
var current_mode_index: int = 0
|
||||
var current_resolution: Vector2i = Vector2i.ZERO
|
||||
|
||||
var available_resolutions: Array[Vector2i] = [
|
||||
Vector2i(1280, 720),
|
||||
@@ -37,6 +38,11 @@ func _ready() -> void:
|
||||
_populate_resolutions()
|
||||
_update_ui()
|
||||
|
||||
func initialize(mode_index: int, res: Vector2i) -> void:
|
||||
current_mode_index = mode_index
|
||||
current_resolution = res
|
||||
_update_ui()
|
||||
|
||||
func _populate_resolutions() -> void:
|
||||
var screen_size = DisplayServer.screen_get_size()
|
||||
|
||||
@@ -63,6 +69,7 @@ func _on_resolution_selected(res: Vector2i, btn) -> void:
|
||||
button.deselect()
|
||||
|
||||
btn.select()
|
||||
current_resolution = res
|
||||
resolution_changed.emit(res)
|
||||
|
||||
func _on_left_arrow_pressed() -> void:
|
||||
@@ -95,7 +102,16 @@ func _update_ui() -> void:
|
||||
else:
|
||||
button.disable()
|
||||
|
||||
var btn = res_buttons[0]
|
||||
btn.select()
|
||||
if show_res:
|
||||
resolution_changed.emit(available_resolutions[0])
|
||||
if res_buttons.size() > 0:
|
||||
var target_index = 0
|
||||
for idx in range(_valid_resolutions.size()):
|
||||
if _valid_resolutions[idx] == current_resolution:
|
||||
target_index = idx
|
||||
break
|
||||
|
||||
var btn = res_buttons[target_index]
|
||||
btn.select()
|
||||
current_resolution = _valid_resolutions[target_index]
|
||||
|
||||
if show_res:
|
||||
resolution_changed.emit(current_resolution)
|
||||
|
||||
Reference in New Issue
Block a user