feat: Introduce lobby functionality with UI, server selection, and game state management.

This commit is contained in:
Yogi Wiguna
2026-02-06 13:48:18 +08:00
parent fb0d27ce43
commit 10aa309148
4 changed files with 352 additions and 68 deletions
+21 -9
View File
@@ -41,6 +41,7 @@ extends Control
# UI References - Player Slots
@onready var players_container = $LobbyPanel/PlayersContainer
@onready var players_container2 = $LobbyPanel/PlayersContainer2
@onready var player_slots: Array[Control] = []
# UI References - Area Selector
@@ -224,23 +225,34 @@ func _setup_scarcity_ui() -> void:
# Add to scene
settings_section.add_child(scarcity_option)
settings_section.add_child(scarcity_label)
# Initial visibility update will handle showing correct one
func _setup_player_slots() -> void:
"""Get references to all player slot nodes."""
player_slots.clear()
# Slots 1-4 in Container 1
for i in range(1, 5):
var slot = players_container.get_node_or_null("PlayerSlot%d" % i)
if slot:
player_slots.append(slot)
# Connect character navigation buttons for all slots
var left_btn = slot.get_node_or_null("CharacterNav%d/CharLeftBtn%d" % [i, i])
var right_btn = slot.get_node_or_null("CharacterNav%d/CharRightBtn%d" % [i, i])
if left_btn:
left_btn.pressed.connect(func(): LobbyManager.cycle_character(-1))
if right_btn:
right_btn.pressed.connect(func(): LobbyManager.cycle_character(1))
_connect_slot_signals(slot, i)
# Slots 5-8 in Container 2
if players_container2:
for i in range(5, 9):
var slot = players_container2.get_node_or_null("PlayerSlot%d" % i)
if slot:
player_slots.append(slot)
_connect_slot_signals(slot, i)
func _connect_slot_signals(slot: Control, i: int):
# Connect character navigation buttons for all slots
var left_btn = slot.get_node_or_null("CharacterNav%d/CharLeftBtn%d" % [i, i])
var right_btn = slot.get_node_or_null("CharacterNav%d/CharRightBtn%d" % [i, i])
if left_btn:
left_btn.pressed.connect(func(): LobbyManager.cycle_character(-1))
if right_btn:
right_btn.pressed.connect(func(): LobbyManager.cycle_character(1))
# =============================================================================
# Panel Management