feat: Implement the initial main game scene, including GridMap, comprehensive UI, and mobile touch controls.

This commit is contained in:
Yogi Wiguna
2026-02-10 11:26:28 +08:00
parent 65d18d8d96
commit 2c1f6746d4
4 changed files with 43 additions and 9 deletions
+9
View File
@@ -680,6 +680,15 @@ func add_player_character(peer_id: int, is_bot: bool = false):
GameStateManager.add_player(peer_id)
# Try to set name from LobbyManager data if available
var lobby_players = LobbyManager.get_players()
for p_data in lobby_players:
if p_data.get("id") == peer_id:
var p_name = p_data.get("name", "Player")
player_character.display_name = p_name
print("[Main] Set player %d name to %s from Lobby data" % [peer_id, p_name])
break
if peer_id == multiplayer.get_unique_id():
GameStateManager.local_player_character = player_character
ui_manager.set_local_player(player_character)
+23 -9
View File
@@ -1028,23 +1028,37 @@ grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("9_6gcb6")
[node name="PlayerboardPanel2" type="PanelContainer" parent="." unique_id=1458381676]
[node name="PlayeBoardPanelName" type="PanelContainer" parent="." unique_id=1458381676]
material = SubResource("ShaderMaterial_j8jky")
offset_left = 22.0
offset_top = 116.559875
offset_right = 241.46997
offset_bottom = 156.22003
offset_left = 44.0
offset_top = 113.710526
offset_right = 216.29385
offset_bottom = 153.37068
rotation = -0.10297442
theme_override_styles/panel = SubResource("StyleBoxFlat_playerboard")
[node name="PlayerName" type="Label" parent="." unique_id=254337877]
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 50.718987
offset_top = -244.58023
offset_right = 133.719
offset_bottom = -208.58023
grow_vertical = 2
rotation = -0.10297442
theme_override_fonts/font = ExtResource("13_j8jky")
theme_override_font_sizes/font_size = 32
text = "Guest"
[node name="PlayerBoardLabel" type="Label" parent="." unique_id=341385584]
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 31.000004
offset_top = -243.44012
offset_right = 71.0
offset_bottom = -207.44012
offset_left = 170.71896
offset_top = -258.02036
offset_right = 210.71896
offset_bottom = -222.02036
grow_vertical = 2
rotation = -0.10297442
theme_override_fonts/font = ExtResource("13_j8jky")
+2
View File
@@ -161,6 +161,8 @@ func _ready():
# Look up player's display name from LobbyManager
var my_id = get_multiplayer_authority()
print("[Player] _ready for %s (Auth: %s). Current display_name: '%s'" % [name, my_id, display_name])
if is_bot or is_in_group("Bots"):
# Bots get a unique name based on their Node Name (Bot ID)
var bot_id = name.to_int()
+9
View File
@@ -28,6 +28,7 @@ var action_menu_instance
var powerup_inventory_ui
var timer_label: Label
var playerboard_label: Label # Shows (xN) goal completions
var player_name_label: Label # Shows player name on main UI
var local_player_character
var _previous_playerboard_state: Array = []
@@ -58,6 +59,9 @@ func initialize(player_node):
randomize_button = button_container.get_node("RandomizeButton") # renamed main_node to player_node which is Main
arrange_button = player_node.get_node("ActionMenu/ActionButtonContainer/ArrangeButton")
playerboard_ui = player_node.get_node("PlayerboardUI")
# Connect PlayerName label (Level/XP/Name UI)
player_name_label = player_node.get_node_or_null("PlayerName")
# ... (skipping unchanged functions) ...
@@ -70,6 +74,11 @@ func set_local_player(player):
# Connect to powerup signals with deferred call (manager needs time to initialize)
_connect_powerup_manager_deferred(player)
# Update Player Name Label
if player_name_label:
player_name_label.text = player.display_name
print("[UIManager] Updated PlayerName label to: ", player.display_name)
func setup_action_buttons(action_state_callback):
move_button.pressed.connect(func(): action_state_callback.call(ActionState.MOVING))
grab_button.pressed.connect(func(): action_state_callback.call(ActionState.GRABBING))