feat: implement core game scene, player logic, and modular manager architecture for Tekton Dash

This commit is contained in:
Yogi Wiguna
2026-03-31 22:08:57 +08:00
parent 1c4d3170ef
commit a88839b396
4 changed files with 38 additions and 61 deletions
+10 -16
View File
@@ -1171,7 +1171,7 @@ func _precalculate_static_positions():
# Calculate 3 spots and STORE them
var points: Array[Vector2i] = []
points = static_tekton_manager.calculate_spawn_points(3, enhanced_gridmap)
points = static_tekton_manager.calculate_spawn_points(5, enhanced_gridmap)
reserved_static_positions = points
print("[Main] Pre-calculated Static Tekton Positions: %s" % str(reserved_static_positions))
@@ -1193,22 +1193,16 @@ func spawn_static_tektons():
# Use pre-calculated points if available
var spawn_points: Array[Vector2i] = []
if not reserved_static_positions.is_empty():
spawn_points = reserved_static_positions
# Pick exactly 3 from the 5 reserved potential spots as requested
var possible_points = reserved_static_positions.duplicate()
possible_points.shuffle()
spawn_points = possible_points.slice(0, 3)
else:
# If pre-calculation failed, we MUST check for player overlaps now
var raw_points = static_tekton_manager.calculate_spawn_points(3, enhanced_gridmap)
var all_players = get_tree().get_nodes_in_group("Players")
for p_spot in raw_points:
var is_overlapping = false
for player in all_players:
if abs(p_spot.x - player.current_position.x) <= 2 and abs(p_spot.y - player.current_position.y) <= 2:
is_overlapping = true
break
if not is_overlapping:
spawn_points.append(p_spot)
reserved_static_positions = spawn_points # Save them
# Fallback if not pre-calculated
var raw_points = static_tekton_manager.calculate_spawn_points(5, enhanced_gridmap)
raw_points.shuffle()
spawn_points = raw_points.slice(0, 3)
reserved_static_positions = raw_points # Save all 5 for player avoidance
print("[Main] Spawning Static Tektons at: %s" % str(spawn_points))