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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user