feat: Implement powerup inventory UI, settings menu, and foundational managers for input and game settings.

This commit is contained in:
Yogi Wiguna
2026-03-10 12:52:53 +08:00
parent da7192ac07
commit e1e928389c
12 changed files with 723 additions and 98 deletions
+33 -17
View File
@@ -60,6 +60,20 @@ func _ready():
# Setup global multiplayer spawners (Stands, etc.)
_setup_multiplayer_spawners()
# Connect HUD Settings button to pause menu toggle
var hud_settings = get_node_or_null("TouchControls/TouchControls/SettingsBtn")
if hud_settings:
if hud_settings.pressed.is_connected(_toggle_pause_menu):
hud_settings.pressed.disconnect(_toggle_pause_menu)
hud_settings.pressed.connect(_toggle_pause_menu)
# Programmatically connect Pause Menu Settings button to ensure it works
var pause_settings = get_node_or_null("PauseMenu/Panel/VBox/SettingsBtn")
if pause_settings:
if pause_settings.pressed.is_connected(_on_settings_pressed):
pause_settings.pressed.disconnect(_on_settings_pressed)
pause_settings.pressed.connect(_on_settings_pressed)
func _setup_multiplayer_spawners():
# Setup MultiplayerSpawner for Static Tekton Stands
@@ -2317,24 +2331,26 @@ func _on_how_to_play_back_pressed():
func _on_settings_pressed():
var pause_menu = get_node_or_null("PauseMenu")
var settings_panel = get_node_or_null("SettingsPanel")
if pause_menu:
pause_menu.visible = false
if settings_panel:
settings_panel.visible = true
# Sync settings UI with current state
var joystick_toggle = settings_panel.get_node_or_null("Panel/VBox/JoystickToggle")
if joystick_toggle and touch_controls:
joystick_toggle.set_pressed_no_signal(touch_controls.joystick_enabled)
var settings_menu = get_node_or_null("SettingsMenu")
if not settings_menu:
var scene = load("res://scenes/ui/settings_menu.tscn")
if scene:
settings_menu = scene.instantiate()
settings_menu.name = "SettingsMenu"
add_child(settings_menu)
var size_slider = settings_panel.get_node_or_null("Panel/VBox/ButtonSizeRow/ButtonSizeSlider")
if size_slider and touch_controls:
size_slider.set_value_no_signal(touch_controls.button_size)
var opacity_slider = settings_panel.get_node_or_null("Panel/VBox/OpacityRow/OpacitySlider")
if opacity_slider and touch_controls:
opacity_slider.set_value_no_signal(touch_controls.button_opacity)
# Connect close button
var close_btn = settings_menu.get_node_or_null("PanelContainer/VBoxContainer/Header/CloseButton")
if close_btn:
if close_btn.pressed.is_connected(_on_settings_back_pressed):
close_btn.pressed.disconnect(_on_settings_back_pressed)
close_btn.pressed.connect(_on_settings_back_pressed)
if settings_menu:
settings_menu.open()
func _on_quit_match_pressed():
get_tree().paused = false # Ensure unpaused when returning to menu
@@ -2345,9 +2361,9 @@ func _on_quit_match_pressed():
func _on_settings_back_pressed():
var pause_menu = get_node_or_null("PauseMenu")
var settings_panel = get_node_or_null("SettingsPanel")
if settings_panel:
settings_panel.visible = false
var settings_menu = get_node_or_null("SettingsMenu")
if settings_menu:
settings_menu.visible = false
if pause_menu:
pause_menu.visible = true