Add saves, settings, and multiplayer-safe menus
This commit is contained in:
parent
e2067e3bf4
commit
0d050b08cc
32 changed files with 2468 additions and 49 deletions
80
ui/settings_panel.gd
Normal file
80
ui/settings_panel.gd
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
class_name SettingsPanel
|
||||
extends PanelContainer
|
||||
|
||||
const SettingsManagerType = preload(
|
||||
"res://settings/player_settings_manager.gd"
|
||||
)
|
||||
|
||||
signal applied
|
||||
signal closed
|
||||
|
||||
@onready var _auto_click_toggle: CheckButton = %AutoClickToggle
|
||||
@onready var _auto_click_interval: HSlider = %AutoClickInterval
|
||||
@onready var _auto_click_interval_value: Label = %AutoClickIntervalValue
|
||||
@onready var _mouse_sensitivity: HSlider = %MouseSensitivity
|
||||
@onready var _mouse_sensitivity_value: Label = %MouseSensitivityValue
|
||||
@onready var _controller_sensitivity: HSlider = %ControllerSensitivity
|
||||
@onready var _controller_sensitivity_value: Label = %ControllerSensitivityValue
|
||||
@onready var _invert_y_toggle: CheckButton = %InvertYToggle
|
||||
@onready var _feedback: Label = %SettingsFeedback
|
||||
|
||||
var _settings_manager: SettingsManagerType
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
%ApplySettingsButton.pressed.connect(_apply_settings)
|
||||
%CancelSettingsButton.pressed.connect(close_panel)
|
||||
_auto_click_interval.value_changed.connect(_refresh_value_labels)
|
||||
_mouse_sensitivity.value_changed.connect(_refresh_value_labels)
|
||||
_controller_sensitivity.value_changed.connect(_refresh_value_labels)
|
||||
|
||||
|
||||
func open_panel(settings_manager: SettingsManagerType) -> void:
|
||||
_settings_manager = settings_manager
|
||||
_load_controls()
|
||||
_feedback.text = ""
|
||||
show()
|
||||
_auto_click_toggle.grab_focus()
|
||||
|
||||
|
||||
func close_panel() -> void:
|
||||
if not visible:
|
||||
return
|
||||
hide()
|
||||
_load_controls()
|
||||
closed.emit()
|
||||
|
||||
|
||||
func _apply_settings() -> void:
|
||||
if _settings_manager == null:
|
||||
_feedback.text = "Settings are unavailable."
|
||||
return
|
||||
var edited := PlayerSettings.new()
|
||||
edited.auto_click_enabled = _auto_click_toggle.button_pressed
|
||||
edited.auto_click_interval = float(_auto_click_interval.value)
|
||||
edited.mouse_camera_sensitivity = float(_mouse_sensitivity.value)
|
||||
edited.controller_camera_sensitivity = float(_controller_sensitivity.value)
|
||||
edited.invert_camera_y = _invert_y_toggle.button_pressed
|
||||
if _settings_manager.apply_settings(edited):
|
||||
hide()
|
||||
applied.emit()
|
||||
else:
|
||||
_feedback.text = "Failed to save settings."
|
||||
|
||||
|
||||
func _load_controls() -> void:
|
||||
if _settings_manager == null or not is_node_ready():
|
||||
return
|
||||
var settings: PlayerSettings = _settings_manager.current_settings
|
||||
_auto_click_toggle.button_pressed = settings.auto_click_enabled
|
||||
_auto_click_interval.value = settings.auto_click_interval
|
||||
_mouse_sensitivity.value = settings.mouse_camera_sensitivity
|
||||
_controller_sensitivity.value = settings.controller_camera_sensitivity
|
||||
_invert_y_toggle.button_pressed = settings.invert_camera_y
|
||||
_refresh_value_labels(0.0)
|
||||
|
||||
|
||||
func _refresh_value_labels(_unused: float) -> void:
|
||||
_auto_click_interval_value.text = "%.2f s" % _auto_click_interval.value
|
||||
_mouse_sensitivity_value.text = "%.4f" % _mouse_sensitivity.value
|
||||
_controller_sensitivity_value.text = "%.1f" % _controller_sensitivity.value
|
||||
Loading…
Add table
Add a link
Reference in a new issue