feat: Implement the "Stop N Go" arena with new assets, scenes, and associated game logic and UI.

This commit is contained in:
Yogi Wiguna
2026-03-26 15:13:24 +08:00
parent ebc1c9868a
commit 18e0e8aafd
150 changed files with 7726 additions and 10357 deletions
+23 -7
View File
@@ -83,6 +83,18 @@ func _ready():
if pause_settings.pressed.is_connected(_on_settings_pressed):
pause_settings.pressed.disconnect(_on_settings_pressed)
pause_settings.pressed.connect(_on_settings_pressed)
# Connect the new top-level Help and Settings buttons
var top_help_btn = get_node_or_null("TopMenuUI/HelpBtn")
if top_help_btn:
if not top_help_btn.pressed.is_connected(_on_how_to_play_pressed):
top_help_btn.pressed.connect(_on_how_to_play_pressed)
# SettingsBtn opens the PauseMenu (acts as a pause/menu toggle)
var top_settings_btn = get_node_or_null("TopMenuUI/SettingsBtn")
if top_settings_btn:
if not top_settings_btn.pressed.is_connected(_toggle_pause_menu):
top_settings_btn.pressed.connect(_toggle_pause_menu)
func _setup_multiplayer_spawners():
# Setup MultiplayerSpawner for Static Tekton Stands
@@ -199,7 +211,9 @@ func _init_managers():
screen_shake_manager.initialize($Camera3D200)
# Touch controls for mobile
touch_controls = get_node_or_null("TouchControls")
touch_controls = get_node_or_null("TouchLayer/TouchControls")
if not touch_controls:
touch_controls = get_node_or_null("TouchControls") # fallback
if not touch_controls:
print("TouchControls node not found in scene, creating instance...")
touch_controls = load("res://scripts/managers/touch_controls.gd").new()
@@ -2040,6 +2054,12 @@ func _show_game_over_panel():
var actions_btn = get_node_or_null("TouchControls/TouchControls/ActionsBtn")
if actions_btn: actions_btn.hide()
var touch_layer = get_node_or_null("TouchLayer")
if touch_layer: touch_layer.hide()
var top_menu_ui = get_node_or_null("TopMenuUI")
if top_menu_ui: top_menu_ui.hide()
if stop_n_go_manager and stop_n_go_manager.hud_layer:
stop_n_go_manager.hud_layer.hide()
@@ -2485,20 +2505,16 @@ func _on_resume_pressed():
# get_tree().paused = false # Removed for multiplayer consistency
func _on_how_to_play_pressed():
var pause_menu = get_node_or_null("PauseMenu")
"""Open How To Play panel directly, regardless of where it was called from."""
var help_panel = get_node_or_null("HowToPlayPanel")
if pause_menu:
pause_menu.visible = false
if help_panel:
help_panel.visible = true
func _on_how_to_play_back_pressed():
var pause_menu = get_node_or_null("PauseMenu")
"""Just close the How To Play panel."""
var help_panel = get_node_or_null("HowToPlayPanel")
if help_panel:
help_panel.visible = false
if pause_menu:
pause_menu.visible = true
func _on_settings_pressed():
var pause_menu = get_node_or_null("PauseMenu")