feat: Introduce Stop N Go game mode with new managers for phases, missions, and special tiles.
This commit is contained in:
@@ -29,7 +29,7 @@ const PERMANENT_POWERUP_LOCATIONS: Array[Vector2i] = [
|
||||
]
|
||||
|
||||
var current_phase: Phase = Phase.GO
|
||||
var phase_timer: float = 15.0 # Initialized dynamically later
|
||||
var phase_timer: float = 20.0 # Initialized dynamically later
|
||||
var is_active: bool = false
|
||||
|
||||
var player_missions: Dictionary = {} # player_id -> {target_tile: int, required: int, current: int}
|
||||
@@ -667,16 +667,28 @@ func _scatter_player_tiles(player_node: Node):
|
||||
|
||||
var peer_id = player_node.name.to_int()
|
||||
var playerboard = player_node.playerboard
|
||||
var tiles_to_scatter: Array[int] = []
|
||||
|
||||
# Collect all non-empty tiles from playerboard
|
||||
# Collect all non-empty tile indices from playerboard
|
||||
var occupied_indices: Array[int] = []
|
||||
for i in range(playerboard.size()):
|
||||
if playerboard[i] != -1:
|
||||
tiles_to_scatter.append(playerboard[i])
|
||||
playerboard[i] = -1
|
||||
occupied_indices.append(i)
|
||||
|
||||
if tiles_to_scatter.is_empty():
|
||||
if occupied_indices.is_empty():
|
||||
return # Nothing to scatter
|
||||
|
||||
# Select up to 3 random tiles to scatter
|
||||
var rng = RandomNumberGenerator.new()
|
||||
rng.randomize()
|
||||
occupied_indices.shuffle()
|
||||
|
||||
var tiles_to_scatter: Array[int] = []
|
||||
var scatter_count = min(occupied_indices.size(), 3)
|
||||
|
||||
for i in range(scatter_count):
|
||||
var board_idx = occupied_indices[i]
|
||||
tiles_to_scatter.append(playerboard[board_idx])
|
||||
playerboard[board_idx] = -1 # Remove only the scattered tiles from board
|
||||
|
||||
# Find valid nearby positions to drop tiles (within radius 3 of player)
|
||||
var center = player_node.current_position
|
||||
@@ -698,7 +710,6 @@ func _scatter_player_tiles(player_node: Node):
|
||||
valid_drop_positions.append(pos)
|
||||
|
||||
# Scatter tiles onto valid positions
|
||||
var rng = RandomNumberGenerator.new()
|
||||
rng.randomize()
|
||||
|
||||
for tile in tiles_to_scatter:
|
||||
|
||||
Reference in New Issue
Block a user