From fb189ef53400c25997de21a33fa80570630dbeeb Mon Sep 17 00:00:00 2001 From: "s0wlz (Matthias Puchstein)" Date: Tue, 14 Apr 2026 03:10:36 +0200 Subject: [PATCH] feat: include room assignments in start_game RPC --- ruf-der-pilze/scripts/network_manager.gd | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ruf-der-pilze/scripts/network_manager.gd b/ruf-der-pilze/scripts/network_manager.gd index 310bacd..f4b7de7 100644 --- a/ruf-der-pilze/scripts/network_manager.gd +++ b/ruf-der-pilze/scripts/network_manager.gd @@ -118,14 +118,27 @@ func request_start_game() -> void: var requester_id := multiplayer.get_remote_sender_id() if players.get(requester_id, {}).get("role", "") != "dm": return - start_game.rpc() + var assignments := _build_room_assignments() + start_game.rpc(assignments) @rpc("authority", "call_local", "reliable") -func start_game() -> void: +func start_game(room_assignments: Dictionary) -> void: + if my_id in room_assignments: + SceneManager.pending_room_index = room_assignments[my_id] game_started.emit() +func _build_room_assignments() -> Dictionary: + var result := {} + var player_peers: Array = players.keys().filter( + func(id: int) -> bool: return players[id].role == "player" + ) + for i in player_peers.size(): + result[player_peers[i]] = i % 8 # 8 Gästezimmer (Index 0–7) + return result + + # call_remote: Server hat lokal bereits gelöscht; nur Clients führen aus @rpc("authority", "call_remote", "reliable") func _broadcast_player_left(peer_id: int) -> void: