From 13dda87ea692b96d6a710d32c27412be43f4248b Mon Sep 17 00:00:00 2001 From: Chris Bell Date: Sun, 15 Dec 2024 00:04:23 -0600 Subject: [PATCH] nodes n stuff --- assets/core/networking/scripts/NetworkManager.gd | 15 ++++++++++++++- assets/core/player-controller/scripts/player.gd | 13 ++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/assets/core/networking/scripts/NetworkManager.gd b/assets/core/networking/scripts/NetworkManager.gd index e289fd1..a64dcea 100644 --- a/assets/core/networking/scripts/NetworkManager.gd +++ b/assets/core/networking/scripts/NetworkManager.gd @@ -18,6 +18,8 @@ var steam_username: String = "" var avatar_texture_cache: Dictionary = {} var host_id: int = 0 +var node_map: Dictionary = {} + signal lobby_created(lobby_id: int) signal lobby_joined(lobby_id: int) signal user_joined_lobby(user_id: int) @@ -306,13 +308,22 @@ func read_p2p_packet() -> void: # Property update packet if "message" in readable_data and readable_data["message"] == "property_update": if "node_id" in readable_data and "property_name" in readable_data and "value" in readable_data: - property_update_received.emit(readable_data["node_id"], readable_data["property_name"], readable_data["value"]) + emit_signal("property_update_received", readable_data["node_id"], readable_data["property_name"], readable_data["value"]) + print("Received property update packet for node %d: %s = %s" % [readable_data["node_id"], readable_data["property_name"], readable_data["value"]])) # Print the packet to output print("Packet: %s" % readable_data) +func register_node(node_id: int, node: Node): + if node_id in node_map: + printerr("Node ID already registered.") + else: + node_map[node_id] = node + + + func request_player_avatar(user_id: int, size: int = 128) -> void: var avatar_texture: ImageTexture = null Steam.getPlayerAvatar(Steam.AVATAR_LARGE, user_id) @@ -370,3 +381,5 @@ func _on_game_started(): func sync_property(node_id: int, property_name: String, value: Variant): var packet_data = {"message":"property_update", "node_id":node_id, "property_name":property_name, "value":value} send_p2p_packet(0, packet_data) + + diff --git a/assets/core/player-controller/scripts/player.gd b/assets/core/player-controller/scripts/player.gd index dc5233d..45b02f3 100644 --- a/assets/core/player-controller/scripts/player.gd +++ b/assets/core/player-controller/scripts/player.gd @@ -32,6 +32,7 @@ var previous_global_rotation: Vector3 func _ready() -> void: NetworkManager.property_update_received.connect(_on_property_update) + NetworkManager.register_node(get_instance_id(), "Player") func _enter_tree() -> void: player_tag = get_node("PlayerTag") @@ -149,10 +150,12 @@ func set_is_piloting(state: bool): if !is_network_authority: return is_piloting = state GameConsole.log_debug("player pilot state" + str(is_piloting)) - - + + func _on_property_update(node_id: int, property_name: String, value: Variant) -> void: - printerr("Recieved property update but node_id is wrong?: " + property_name + " = " + str(value)) - if node_id == get_instance_id(): + if NetworkManager.node_map.has(node_id): + var node = NetworkManager.node_map[node_id] + node.set(property_name, value) print("Received property update: " + property_name + " = " + str(value)) - set(property_name, value) + else: + printerr("Received property update but node_id is wrong? Got " + str(get_instance_id()) + " but got " + str(node_id))