feat: network_manager — overlay RPC + player position sync
This commit is contained in:
@@ -131,3 +131,23 @@ func start_game() -> void:
|
||||
func _broadcast_player_left(peer_id: int) -> void:
|
||||
players.erase(peer_id)
|
||||
player_left.emit(peer_id)
|
||||
|
||||
|
||||
@rpc("any_peer", "call_remote", "reliable")
|
||||
func request_set_overlay(target_peer_id: int, overlay_name: String) -> void:
|
||||
if not multiplayer.is_server():
|
||||
return
|
||||
var requester_id := multiplayer.get_remote_sender_id()
|
||||
if players.get(requester_id, {}).get("role", "") != "dm":
|
||||
return
|
||||
set_overlay.rpc_id(target_peer_id, overlay_name)
|
||||
|
||||
|
||||
@rpc("authority", "call_remote", "reliable")
|
||||
func set_overlay(overlay_name: String) -> void:
|
||||
GameState.set_overlay_local(my_id, overlay_name)
|
||||
|
||||
|
||||
@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)
|
||||
|
||||
Reference in New Issue
Block a user