feat: Add lobby and multiplayer room management with Nakama and ENet LAN support.

This commit is contained in:
Yogi Wiguna
2026-03-17 12:45:16 +08:00
parent 6eb6dfa20d
commit 1b8e411657
5 changed files with 23 additions and 38 deletions
+3 -13
View File
@@ -359,8 +359,8 @@ func sync_ready_state(player_id: int, is_ready: bool) -> void:
func _check_all_ready() -> void:
"""Check if all players are ready."""
# In LAN mode allow solo play - only 1 player needed
var min_players = 1 if is_lan_mode else 2
# Allow solo play in both LAN and Nakama modes
var min_players = 1
if players_in_room.size() < min_players:
_all_ready = false
return
@@ -373,17 +373,6 @@ func _check_all_ready() -> void:
_all_ready = true
emit_signal("all_players_ready")
func force_solo_ready() -> void:
"""Mark the local player as ready immediately (for solo LAN play)."""
if not multiplayer.has_multiplayer_peer():
return
var my_id = multiplayer.get_unique_id()
for player in players_in_room:
if player["id"] == my_id:
player["is_ready"] = true
break
_check_all_ready()
func is_all_ready() -> bool:
return _all_ready
@@ -814,6 +803,7 @@ func _on_peer_connected(peer_id: int) -> void:
# Sync player list to all clients
rpc("sync_player_list", players_in_room)
emit_signal("player_joined", new_player)
_check_all_ready()
else:
# Client: if we connected to the host (peer_id 1), request room info
if peer_id == 1 and not is_host:
+1 -1
View File
@@ -21,7 +21,7 @@ const POWERUP_SPAWN_COUNT: int = 5 # Number of power-up tiles to spawn
var powerups_spawned: bool = false
var stop_phase_occurred: bool = false
var safe_zone_wall_scene = preload("res://scenes/wall_3d.tscn")
var safe_zone_wall_scene = preload("res://scenes/safe_zone_wall.tscn")
const PERMANENT_POWERUP_LOCATIONS: Array[Vector2i] = [
Vector2i(4, 1), # Power up 1