feat: implement pause menu system with loadout and settings configuration management
This commit is contained in:
@@ -13,6 +13,7 @@ var _dash_icon: TextureRect
|
||||
var _grapple_label: Label
|
||||
var _dash_label: Label
|
||||
var _fps_label: Label
|
||||
var _standalone_speed_label: Label
|
||||
var _player: CharacterBody3D
|
||||
var _debug_ui_panel: PanelContainer
|
||||
|
||||
@@ -489,6 +490,17 @@ func _build_hud() -> void:
|
||||
_fps_label.position = Vector2(12, 12)
|
||||
canvas.add_child(_fps_label)
|
||||
|
||||
_standalone_speed_label = Label.new()
|
||||
_standalone_speed_label.name = "StandaloneSpeedLabel"
|
||||
_standalone_speed_label.text = "Speed: 0.0 m/s"
|
||||
_standalone_speed_label.add_theme_font_size_override("font_size", 24)
|
||||
_standalone_speed_label.add_theme_color_override("font_color", Color(0.3, 1.0, 0.5))
|
||||
_standalone_speed_label.add_theme_color_override("font_outline_color", Color(0, 0, 0))
|
||||
_standalone_speed_label.add_theme_constant_override("outline_size", 4)
|
||||
_standalone_speed_label.set_anchors_preset(Control.PRESET_TOP_LEFT)
|
||||
_standalone_speed_label.position = Vector2(12, 45)
|
||||
canvas.add_child(_standalone_speed_label)
|
||||
|
||||
_debug_ui_panel = PanelContainer.new()
|
||||
_debug_ui_panel.name = "InfoPanel"
|
||||
_debug_ui_panel.offset_left = 12
|
||||
@@ -664,6 +676,17 @@ func _process(_delta: float) -> void:
|
||||
if _speed_label:
|
||||
_speed_label.text = "Speed: %.1f m/s (total: %.1f)" % [hspeed, total_speed]
|
||||
|
||||
if _standalone_speed_label:
|
||||
if SettingsManager.show_movement_speed and not SettingsManager.show_debug_ui:
|
||||
_standalone_speed_label.visible = true
|
||||
_standalone_speed_label.text = "Speed: %.1f m/s" % hspeed
|
||||
if _fps_label and _fps_label.visible:
|
||||
_standalone_speed_label.position = Vector2(12, 45)
|
||||
else:
|
||||
_standalone_speed_label.position = Vector2(12, 12)
|
||||
else:
|
||||
_standalone_speed_label.visible = false
|
||||
|
||||
if _state_label:
|
||||
var sm = _player.get_node_or_null("MovementStateMachine")
|
||||
if sm:
|
||||
|
||||
@@ -27,6 +27,7 @@ var default_bindings = {
|
||||
|
||||
var current_bindings = {}
|
||||
var show_debug_ui: bool = false
|
||||
var show_movement_speed: bool = false
|
||||
var username: String = "Player"
|
||||
var mouse_sensitivity: float = 0.002
|
||||
var ads_sensitivity: float = 0.001
|
||||
@@ -134,6 +135,7 @@ func _save_settings() -> void:
|
||||
var save_data = {
|
||||
"bindings": current_bindings,
|
||||
"show_debug_ui": show_debug_ui,
|
||||
"show_movement_speed": show_movement_speed,
|
||||
"username": username,
|
||||
"mouse_sensitivity": mouse_sensitivity,
|
||||
"ads_sensitivity": ads_sensitivity,
|
||||
@@ -172,6 +174,7 @@ func _load_settings() -> void:
|
||||
current_bindings[action] = loaded_bindings[action]
|
||||
if data.has("username"): username = data["username"]
|
||||
if data.has("show_debug_ui"): show_debug_ui = data["show_debug_ui"]
|
||||
if data.has("show_movement_speed"): show_movement_speed = data["show_movement_speed"]
|
||||
if data.has("mouse_sensitivity"): mouse_sensitivity = data["mouse_sensitivity"]
|
||||
if data.has("ads_sensitivity"): ads_sensitivity = data["ads_sensitivity"]
|
||||
if data.has("world_fov"): world_fov = data["world_fov"]
|
||||
|
||||
@@ -10,6 +10,7 @@ var _dash_icon: TextureRect
|
||||
var _grapple_label: Label
|
||||
var _dash_label: Label
|
||||
var _fps_label: Label
|
||||
var _standalone_speed_label: Label
|
||||
var _player: CharacterBody3D
|
||||
var _debug_ui_panel: PanelContainer
|
||||
|
||||
@@ -283,6 +284,17 @@ func _build_hud() -> void:
|
||||
_fps_label.position = Vector2(12, 12)
|
||||
canvas.add_child(_fps_label)
|
||||
|
||||
_standalone_speed_label = Label.new()
|
||||
_standalone_speed_label.name = "StandaloneSpeedLabel"
|
||||
_standalone_speed_label.text = "Speed: 0.0 m/s"
|
||||
_standalone_speed_label.add_theme_font_size_override("font_size", 24)
|
||||
_standalone_speed_label.add_theme_color_override("font_color", Color(0.3, 1.0, 0.5))
|
||||
_standalone_speed_label.add_theme_color_override("font_outline_color", Color(0, 0, 0))
|
||||
_standalone_speed_label.add_theme_constant_override("outline_size", 4)
|
||||
_standalone_speed_label.set_anchors_preset(Control.PRESET_TOP_LEFT)
|
||||
_standalone_speed_label.position = Vector2(12, 45)
|
||||
canvas.add_child(_standalone_speed_label)
|
||||
|
||||
_debug_ui_panel = PanelContainer.new()
|
||||
_debug_ui_panel.name = "InfoPanel"
|
||||
_debug_ui_panel.offset_left = 12
|
||||
@@ -443,6 +455,17 @@ func _process(_delta: float) -> void:
|
||||
if _speed_label:
|
||||
_speed_label.text = "Speed: %.1f m/s (total: %.1f)" % [hspeed, total_speed]
|
||||
|
||||
if _standalone_speed_label:
|
||||
if SettingsManager.show_movement_speed and not SettingsManager.show_debug_ui:
|
||||
_standalone_speed_label.visible = true
|
||||
_standalone_speed_label.text = "Speed: %.1f m/s" % hspeed
|
||||
if _fps_label and _fps_label.visible:
|
||||
_standalone_speed_label.position = Vector2(12, 45)
|
||||
else:
|
||||
_standalone_speed_label.position = Vector2(12, 12)
|
||||
else:
|
||||
_standalone_speed_label.visible = false
|
||||
|
||||
if _state_label:
|
||||
var sm = _player.get_node_or_null("MovementStateMachine")
|
||||
if sm:
|
||||
|
||||
@@ -10,6 +10,7 @@ var _dash_icon: TextureRect
|
||||
var _grapple_label: Label
|
||||
var _dash_label: Label
|
||||
var _fps_label: Label
|
||||
var _standalone_speed_label: Label
|
||||
var _player: CharacterBody3D
|
||||
var _debug_ui_panel: PanelContainer
|
||||
|
||||
@@ -249,6 +250,17 @@ func _build_hud() -> void:
|
||||
_fps_label.position = Vector2(12, 12)
|
||||
canvas.add_child(_fps_label)
|
||||
|
||||
_standalone_speed_label = Label.new()
|
||||
_standalone_speed_label.name = "StandaloneSpeedLabel"
|
||||
_standalone_speed_label.text = "Speed: 0.0 m/s"
|
||||
_standalone_speed_label.add_theme_font_size_override("font_size", 24)
|
||||
_standalone_speed_label.add_theme_color_override("font_color", Color(0.3, 1.0, 0.5))
|
||||
_standalone_speed_label.add_theme_color_override("font_outline_color", Color(0, 0, 0))
|
||||
_standalone_speed_label.add_theme_constant_override("outline_size", 4)
|
||||
_standalone_speed_label.set_anchors_preset(Control.PRESET_TOP_LEFT)
|
||||
_standalone_speed_label.position = Vector2(12, 45)
|
||||
canvas.add_child(_standalone_speed_label)
|
||||
|
||||
_debug_ui_panel = PanelContainer.new()
|
||||
_debug_ui_panel.name = "InfoPanel"
|
||||
_debug_ui_panel.offset_left = 12
|
||||
@@ -423,6 +435,17 @@ func _process(_delta: float) -> void:
|
||||
if _speed_label:
|
||||
_speed_label.text = "Speed: %.1f m/s (total: %.1f)" % [hspeed, total_speed]
|
||||
|
||||
if _standalone_speed_label:
|
||||
if SettingsManager.show_movement_speed and not SettingsManager.show_debug_ui:
|
||||
_standalone_speed_label.visible = true
|
||||
_standalone_speed_label.text = "Speed: %.1f m/s" % hspeed
|
||||
if _fps_label and _fps_label.visible:
|
||||
_standalone_speed_label.position = Vector2(12, 45)
|
||||
else:
|
||||
_standalone_speed_label.position = Vector2(12, 12)
|
||||
else:
|
||||
_standalone_speed_label.visible = false
|
||||
|
||||
if _state_label:
|
||||
var sm = _player.get_node_or_null("MovementStateMachine")
|
||||
if sm:
|
||||
|
||||
@@ -37,6 +37,7 @@ var _resolution_opt: OptionButton
|
||||
var _fps_slider: HSlider
|
||||
var _fps_input: LineEdit
|
||||
var _show_fps_checkbox: CheckButton
|
||||
var _show_movement_speed_checkbox: CheckButton
|
||||
var _vol_master_slider: HSlider
|
||||
var _vol_master_input: LineEdit
|
||||
var _vol_sfx_slider: HSlider
|
||||
@@ -622,6 +623,15 @@ func _build_ui() -> void:
|
||||
)
|
||||
advanced_tab.add_child(_show_fps_checkbox)
|
||||
|
||||
_show_movement_speed_checkbox = CheckButton.new()
|
||||
_show_movement_speed_checkbox.text = "Show Movement Speed Indicator"
|
||||
_show_movement_speed_checkbox.button_pressed = SettingsManager.show_movement_speed
|
||||
_show_movement_speed_checkbox.toggled.connect(func(toggled_on: bool):
|
||||
SettingsManager.show_movement_speed = toggled_on
|
||||
SettingsManager._save_settings()
|
||||
)
|
||||
advanced_tab.add_child(_show_movement_speed_checkbox)
|
||||
|
||||
var spacer_adv = Control.new()
|
||||
spacer_adv.size_flags_vertical = Control.SIZE_EXPAND_FILL
|
||||
advanced_tab.add_child(spacer_adv)
|
||||
@@ -633,6 +643,8 @@ func _build_ui() -> void:
|
||||
SettingsManager.show_debug_ui = false
|
||||
_show_fps_checkbox.button_pressed = false
|
||||
SettingsManager.show_fps = false
|
||||
_show_movement_speed_checkbox.button_pressed = false
|
||||
SettingsManager.show_movement_speed = false
|
||||
SettingsManager._save_settings()
|
||||
)
|
||||
advanced_tab.add_child(reset_adv_btn)
|
||||
@@ -784,6 +796,8 @@ func _show_settings() -> void:
|
||||
_debug_ui_checkbox.button_pressed = SettingsManager.show_debug_ui
|
||||
if _show_fps_checkbox:
|
||||
_show_fps_checkbox.button_pressed = SettingsManager.show_fps
|
||||
if _show_movement_speed_checkbox:
|
||||
_show_movement_speed_checkbox.button_pressed = SettingsManager.show_movement_speed
|
||||
if _world_fov_slider:
|
||||
_world_fov_slider.value = SettingsManager.world_fov
|
||||
_world_fov_input.text = str(round(SettingsManager.world_fov))
|
||||
|
||||
Reference in New Issue
Block a user