feat: Implement initial main scene, player scripts, and core game manager systems for input, actions, playerboard, special tiles, and UI.

This commit is contained in:
Yogi Wiguna
2026-03-12 12:06:32 +08:00
parent 686ea2587e
commit 412e7bdcdd
8 changed files with 9 additions and 8610 deletions
-51
View File
@@ -34,7 +34,6 @@ func _ready():
NakamaManager.match_joined.connect(_on_match_joined)
# Setup UI
ui_manager.setup_action_buttons(_set_action_state_callback)
ui_manager.setup_playerboard_ui()
ui_manager.setup_timer_labels(self )
ui_manager.setup_playerboard_label(self ) # NEW
@@ -602,7 +601,6 @@ func _setup_client_game():
touch_controls.set_player(player_character)
if camera_context_manager:
camera_context_manager.set_player(player_character)
ui_manager.update_button_states()
print("Client: Configured local player ", my_id)
# ALWAYS setup PowerUpUI when we have the local player, just in case
@@ -1180,7 +1178,6 @@ func add_player_character(peer_id: int, is_bot: bool = false):
touch_controls.set_player(player_character)
if camera_context_manager:
camera_context_manager.set_player(player_character)
ui_manager.update_button_states()
ui_manager.update_playerboard_ui()
func _on_peer_connected(new_peer_id: int):
@@ -1263,53 +1260,6 @@ func sync_game_start(player_list: Array, is_turn_based: bool):
# UI / Action State Management
# =============================================================================
func _set_action_state_callback(new_state):
_set_action_state(new_state)
func _set_action_state(new_state):
var local_player = GameStateManager.local_player_character
if not local_player or not local_player.is_multiplayer_authority():
return
if local_player.is_bot or local_player.is_in_group("Bots"):
ui_manager.current_action_state = new_state
return
if ui_manager.current_action_state == new_state or local_player.action_points <= 0:
return
ui_manager.current_action_state = new_state
local_player.clear_highlights()
local_player.clear_playerboard_highlights()
match new_state:
ui_manager.ActionState.MOVING:
local_player.highlight_movement_range()
ui_manager.ActionState.GRABBING:
local_player.highlight_adjacent_cells()
ui_manager.ActionState.PUTTING:
local_player.highlight_occupied_playerboard_slots()
ui_manager.ActionState.RANDOMIZING:
local_player.highlight_random_valid_cells()
ui_manager.ActionState.ARRANGING:
_show_arrangement_ui()
local_player.highlight_occupied_playerboard_slots()
func _show_arrangement_ui():
if ui_manager.playerboard_ui:
ui_manager.playerboard_ui.visible = true
ui_manager.update_playerboard_ui()
func _on_playerboard_slot_clicked(event, slot_index):
if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT:
var local_player = GameStateManager.local_player_character
if not local_player:
return
match ui_manager.current_action_state:
ui_manager.ActionState.ARRANGING:
local_player.arrange_playerboard_item(slot_index)
# =============================================================================
# Goal & Playerboard Sync
@@ -1527,7 +1477,6 @@ func create_specific_player(data: Dictionary):
if is_local_player and GameStateManager.local_player_character == null:
GameStateManager.local_player_character = player_character
ui_manager.set_local_player(player_character)
ui_manager.update_button_states()
# Wait for player managers to initialize (player.gd has 0.1s await in _ready)
await get_tree().create_timer(0.2).timeout