tarting work on syncronizer node

This commit is contained in:
Chris Bell 2024-12-14 21:10:48 -06:00
parent 50f1173373
commit b9cf3ff9e1
2 changed files with 32 additions and 0 deletions

View File

@ -25,6 +25,8 @@ signal user_left_lobby(user_id: int)
signal host_left_lobby()
signal on_game_started()
signal property_update_received(node_id: int, property_name: String, value: Variant)
func _ready() -> void:
player_scene = load("res://assets/core/player-controller/scenes/player.tscn") as PackedScene
@ -300,6 +302,11 @@ func read_p2p_packet() -> void:
if "message" in readable_data and readable_data["message"] == "start_game":
print("Received game start packet.")
_on_game_started()
# 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"])
# Print the packet to output

View File

@ -0,0 +1,25 @@
extends Node
class_name Syncronizer
@export var properties_to_sync: Array = []
signal property_changed(node_id: int, property_name: String, value: Variant)
func _ready() -> void:
for property_name in properties_to_sync:
self.connect("property_changed", Callable(self, "_on_property_changed"))
NetworkManager.property_update_received.connect(Callable(self, "_on_property_update_received"))
func _on_property_changed(node_id: int, property_name: String, value: Variant) -> void:
if node_id == get_instance_id() and property_name in properties_to_sync:
self.set(property_name, value)
emit_signal("property_changed", node_id, property_name, value)
func set_property(property_name: String, value: Variant) -> void:
if property_name in properties_to_sync:
self.set(property_name, value)
emit_signal("property_changed", get_instance_id(), property_name, value)