feat: add player core, movement, and playerboard managers, special tile effects system, and lobby scene.

This commit is contained in:
2025-12-09 21:16:06 +08:00
parent 7db63a2707
commit fe4c3eddb8
6 changed files with 332 additions and 2 deletions
+16
View File
@@ -51,6 +51,16 @@ func grab_item(grid_position: Vector2i) -> bool:
# === Optimistic Local Update (immediate visual feedback) ===
# Apply changes locally first, server will validate/sync
enhanced_gridmap.set_cell_item(cell, -1) # Remove item visually immediately
# Check if grabbed item is a holo tile (11-14) and trigger special effect
var is_holo = item >= 11 and item <= 14
if is_holo:
var special_tiles_manager = player.get_node_or_null("SpecialTilesManager")
if special_tiles_manager:
special_tiles_manager.trigger_random_effect()
# Convert holo tile to normal tile (11->7, 12->8, 13->9, 14->10)
item = item - 4
player.playerboard[target_slot] = item # Add to playerboard immediately
# Update UI immediately for responsiveness
@@ -141,6 +151,12 @@ func bot_try_grab_item() -> bool:
var empty_slot = player.playerboard.find(-1)
if empty_slot != -1:
if player.is_multiplayer_authority():
# Check if grabbed item is a holo tile (11-14)
if item >= 11 and item <= 14:
var special_tiles_manager = player.get_node_or_null("SpecialTilesManager")
if special_tiles_manager:
special_tiles_manager.trigger_random_effect()
item = item - 4 # Convert to normal tile
player.playerboard[empty_slot] = item
player.rpc("sync_grid_item", current_cell.x, current_cell.y, current_cell.z, -1)
player.rpc("sync_playerboard", player.playerboard)