feat: implement core lobby management system with Nakama integration, player state, and game settings.

This commit is contained in:
2026-03-13 03:46:04 +08:00
parent a06e04e14b
commit 74a81425c5
7 changed files with 203 additions and 18 deletions
+10
View File
@@ -186,6 +186,7 @@ func _ready():
LobbyManager.room_list_updated.connect(_on_room_list_updated)
LobbyManager.room_joined.connect(_on_room_joined)
LobbyManager.room_left.connect(_on_room_left)
LobbyManager.host_disconnected.connect(_on_host_disconnected)
LobbyManager.player_joined.connect(_on_player_joined)
LobbyManager.player_left.connect(_on_player_left)
LobbyManager.ready_state_changed.connect(_on_ready_state_changed)
@@ -216,6 +217,11 @@ func _ready():
# Show main menu initially
_show_panel("main_menu")
# Check for disconnection reason from manager
if not LobbyManager.disconnect_reason.is_empty():
connection_status.text = LobbyManager.disconnect_reason
LobbyManager.disconnect_reason = ""
# =============================================================================
# Setup
@@ -672,6 +678,10 @@ func _on_room_left() -> void:
_show_panel("main_menu")
connection_status.text = "Left room"
func _on_host_disconnected() -> void:
_show_panel("main_menu")
connection_status.text = "Host disconnected. Match terminated."
func _on_player_joined(player_data: Dictionary) -> void:
_update_player_slots()
status_label.text = "%s joined!" % player_data.get("name", "Player")