From 8958aa246c3ecf3a39cd11dc20ffb54845c26286 Mon Sep 17 00:00:00 2001 From: "s0wlz (Matthias Puchstein)" Date: Thu, 16 Apr 2026 00:21:48 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20network=5Fmanager=20=E2=80=94=20add=20b?= =?UTF-8?q?roadcast=5Froll=20RPC=20+=20roll=5Freceived=20signal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruf-der-pilze/scripts/network_manager.gd | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ruf-der-pilze/scripts/network_manager.gd b/ruf-der-pilze/scripts/network_manager.gd index 69d24b3..61f0389 100644 --- a/ruf-der-pilze/scripts/network_manager.gd +++ b/ruf-der-pilze/scripts/network_manager.gd @@ -14,6 +14,7 @@ signal player_joined(peer_id: int, player_name: String, role: String) signal player_left(peer_id: int) signal player_list_synced() signal game_started() +signal roll_received(roller_peer_id: int, player_name: String, d20_result: int, modifier: int, total: int) func start_server(port: int, max_clients: int) -> void: @@ -164,3 +165,18 @@ func set_overlay(overlay_name: String) -> void: @rpc("any_peer", "call_remote", "unreliable") func sync_player_position(player_id: int, position: Vector3, rotation: Vector3) -> void: GameState.update_player_transform(player_id, position, rotation) + + +# Client calls this on server only (rpc_id(1, ...)) +@rpc("any_peer", "call_remote", "reliable") +func broadcast_roll(roller_peer_id: int, d20_result: int, modifier: int) -> void: + if not multiplayer.is_server(): return + _relay_roll.rpc(roller_peer_id, d20_result, modifier) + + +# Server broadcasts to all (including itself via call_local) +@rpc("authority", "call_local", "reliable") +func _relay_roll(roller_peer_id: int, d20_result: int, modifier: int) -> void: + var player_name: String = players.get(roller_peer_id, {}).get("name", "???") + var total := d20_result + modifier + roll_received.emit(roller_peer_id, player_name, d20_result, modifier, total)