feat: fix the spawn tiles
This commit is contained in:
@@ -1824,9 +1824,6 @@ func _on_goal_count_updated(peer_id: int, count: int) -> void:
|
||||
emit_signal("cleanser_granted", peer_id)
|
||||
print("[Gauntlet] Player %d granted Cleanser (mission %d)" % [peer_id, completions])
|
||||
|
||||
# Respawn mission tiles in non-sticky locations
|
||||
_respawn_mission_tiles()
|
||||
|
||||
# Sync cleanser count to HUD
|
||||
rpc("sync_cleanser_count", peer_id, player_cleansers.get(peer_id, 0))
|
||||
|
||||
@@ -1834,51 +1831,7 @@ func _on_score_updated(peer_id: int, new_score: int) -> void:
|
||||
"""Called when a player's score is updated."""
|
||||
pass # Score sync handled by GoalsCycleManager
|
||||
|
||||
func _respawn_mission_tiles() -> void:
|
||||
"""Respawn mission tiles in non-sticky locations after mission completion."""
|
||||
if not gridmap:
|
||||
gridmap = get_parent().get_node_or_null("EnhancedGridMap")
|
||||
if not gridmap:
|
||||
gridmap = get_node_or_null("/root/Main/EnhancedGridMap")
|
||||
if not gridmap: return
|
||||
|
||||
# Goal items: Heart(7), Diamond(8), Star(9), Coin(10)
|
||||
var goal_items = [7, 8, 9, 10]
|
||||
var tiles_spawned: int = 0
|
||||
|
||||
# Find empty non-sticky cells to place new tiles
|
||||
var empty_cells: Array = []
|
||||
for x in range(ARENA_COLUMNS):
|
||||
for z in range(ARENA_ROWS):
|
||||
var pos = Vector2i(x, z)
|
||||
if _is_npc_zone(pos):
|
||||
continue
|
||||
# Skip boundary walls
|
||||
if x == 0 or x == ARENA_COLUMNS - 1 or z == 0 or z == ARENA_ROWS - 1:
|
||||
continue
|
||||
# Skip sticky cells
|
||||
if sticky_cells.has(pos):
|
||||
continue
|
||||
# Check if cell is empty on Layer 1
|
||||
var current_item = gridmap.get_cell_item(Vector3i(x, 1, z))
|
||||
if current_item == -1:
|
||||
empty_cells.append(pos)
|
||||
|
||||
# Shuffle and place tiles
|
||||
empty_cells.shuffle()
|
||||
var tiles_to_place = min(empty_cells.size(), 6) # Light refill — avoid flooding the board while players collect
|
||||
|
||||
for i in range(tiles_to_place):
|
||||
var pos = empty_cells[i]
|
||||
var tile_type = goal_items[randi() % goal_items.size()]
|
||||
gridmap.set_cell_item(Vector3i(pos.x, 1, pos.y), tile_type)
|
||||
tiles_spawned += 1
|
||||
|
||||
# Sync to clients
|
||||
if main_scene:
|
||||
main_scene.rpc("sync_grid_item", pos.x, 1, pos.y, tile_type)
|
||||
|
||||
print("[Gauntlet] Respawned %d mission tiles" % tiles_spawned)
|
||||
|
||||
@rpc("authority", "call_local", "reliable")
|
||||
func sync_cleanser_count(peer_id: int, count: int) -> void:
|
||||
|
||||
Reference in New Issue
Block a user