feat: implement obstacle manager for randomized static wall spawning, integrate into main scene, and add stop-n-go manager.

This commit is contained in:
Yogi Wiguna
2026-02-25 10:54:55 +08:00
parent e31973dfab
commit 040e6e53ce
3 changed files with 166 additions and 40 deletions
+16
View File
@@ -11,6 +11,7 @@ var screen_shake_manager
var touch_controls
var camera_context_manager
var stop_n_go_manager
var obstacle_manager
# Minimal local state
var _connection_check_timer: float = 0.0
@@ -117,6 +118,12 @@ func _init_managers():
add_child(camera_context_manager)
camera_context_manager.initialize($Camera3D200, screen_shake_manager)
# Obstacle manager for dynamic walls
obstacle_manager = load("res://scripts/managers/obstacle_manager.gd").new()
obstacle_manager.name = "ObstacleManager"
add_child(obstacle_manager)
obstacle_manager.initialize(self, $EnhancedGridMap)
# Connect signals for UI updates
goals_cycle_manager.timer_updated.connect(_on_timer_updated)
goals_cycle_manager.score_updated.connect(_on_score_updated)
@@ -591,6 +598,14 @@ func _start_game():
_assign_random_spawn_positions()
# PRE-GAME COUNTDOWN (3s)
# Spawn static obstacles before countdown starts
if obstacle_manager:
obstacle_manager.spawn_random_obstacles(15)
# Spawn mission tiles BEFORE countdown but AFTER walls (Stop n Go only)
if LobbyManager.game_mode == "Stop n Go" and stop_n_go_manager:
stop_n_go_manager.setup_mission_tiles()
await _start_pre_game_countdown()
GameStateManager.start_game()
@@ -623,6 +638,7 @@ func _start_game():
# Spawn Tekton NPC
spawn_tekton_npc()
func _assign_random_spawn_positions():
"""Assign spawn positions distributed to 4 corners (2 per corner for 8 players)."""