feat: include room assignments in start_game RPC
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user