feat: add player core, movement, and playerboard managers, special tile effects system, and lobby scene.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user