class_name SettingsMenu extends Panel @export_group("Game Option Nodes") @export var autosaves_input: CheckButton @export var block_highlight_input: CheckButton @export var held_block_ui_input: CheckButton @export var quick_slots_ui_input: CheckButton @export var screenshot_icon_input: CheckButton @export var waila_input: CheckButton @export_group("Graphics Settings Nodes") @export var resolution_input: OptionButton @export var fullscreen_input: CheckBox @export var vsync_input: CheckBox @export var fov_slider: HSlider @export var fov_value_label: Label func _ready() -> void: apply_default_values() ## Sets the default values of all the inputs func apply_default_values() -> void: #region Game Options autosaves_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_autosaves) block_highlight_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_block_highlight) held_block_ui_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_held_block) quick_slots_ui_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_quickslots_ui) screenshot_icon_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_save_screenshots) waila_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_waila) #endregion #region Graphics Settings # Changing the FOV value should trigger the value_changed signal which should update the camera and label automatically fov_slider.value = GameSettingsManager.settings.graphics.fov fullscreen_input.set_pressed_no_signal(GameSettingsManager.settings.graphics.fullscreen) vsync_input.set_pressed_no_signal(GameSettingsManager.settings.graphics.vsync) var current_resolution_index: int = resolution_input.get_item_index(GameSettingsManager.settings.graphics.resolution_id) resolution_input.select(current_resolution_index) #endregion #region Game Settings func _on_block_highlighting_toggled(toggled_on: bool) -> void: GameSettingsManager.game_options_block_highlight_changed.emit(toggled_on) func _on_held_block_ui_toggled(toggled_on: bool) -> void: GameSettingsManager.game_options_held_block_ui_changed.emit(toggled_on) func _on_quickslots_ui_toggled(toggled_on: bool) -> void: GameSettingsManager.game_options_quickslots_ui_changed.emit(toggled_on) func _on_enable_waila_toggled(toggled_on: bool) -> void: GameSettingsManager.game_options_waila_changed.emit(toggled_on) func _on_screenshot_icon_button_toggled(toggled_on: bool) -> void: GameSettingsManager.game_options_screenshot_saves_changed.emit(toggled_on) SaveGameManager.toggle_save_icon_generation.emit(toggled_on) func _on_autosaves_button_toggled(toggled_on: bool) -> void: if toggled_on: SaveGameManager.enable_autosaves.emit() else: SaveGameManager.disable_autosaves.emit() #endregion #region Graphics Settings func _on_fov_slider_changed(value: float) -> void: fov_value_label.text = str(int(value)) GameSettingsManager.graphics_fov_changed.emit(int(fov_slider.value)) func _on_graphics_apply_button_pressed() -> void: var values: Array = resolution_input.text.split_floats("x") var id: int = resolution_input.get_selected_id() GameSettingsManager.graphics_resolution_changed.emit(Vector2i(values[0], values[1]), id) GameSettingsManager.graphics_fullscreen_changed.emit(fullscreen_input.button_pressed) GameSettingsManager.graphics_vsync_changed.emit(vsync_input.button_pressed) GameSettingsManager.apply_graphics_settings.emit() #endregion #region Audio Settings #endregion #region Input Settings #endregion func _on_close_button_pressed() -> void: SignalManager.resume_game.emit()