From 1bec9f241fae22b7a7cb809a3cb6f96c1d5622a1 Mon Sep 17 00:00:00 2001 From: "s0wlz (Matthias Puchstein)" Date: Thu, 16 Apr 2026 00:52:02 +0200 Subject: [PATCH] net: add request_update_character RPC + character_updated signal --- ruf-der-pilze/scripts/network_manager.gd | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ruf-der-pilze/scripts/network_manager.gd b/ruf-der-pilze/scripts/network_manager.gd index f4b7de7..fca6e1a 100644 --- a/ruf-der-pilze/scripts/network_manager.gd +++ b/ruf-der-pilze/scripts/network_manager.gd @@ -144,3 +144,22 @@ func _build_room_assignments() -> Dictionary: func _broadcast_player_left(peer_id: int) -> void: players.erase(peer_id) player_left.emit(peer_id) + + +signal character_updated(peer_id: int, data: Dictionary) + +# Client → Server +@rpc("any_peer", "call_remote", "reliable") +func request_update_character(data: Dictionary) -> void: + if not multiplayer.is_server(): return + var peer_id := multiplayer.get_remote_sender_id() + if not players.has(peer_id): return + players[peer_id]["char"] = data + _relay_character_update.rpc(peer_id, data) + +# Server → All +@rpc("authority", "call_local", "reliable") +func _relay_character_update(peer_id: int, data: Dictionary) -> void: + if players.has(peer_id): + players[peer_id]["char"] = data + character_updated.emit(peer_id, data)