feat: Add lobby and multiplayer room management with Nakama and ENet LAN support.
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user