diff options
Diffstat (limited to 'Game/Network.gd')
-rw-r--r-- | Game/Network.gd | 47 |
1 files changed, 13 insertions, 34 deletions
diff --git a/Game/Network.gd b/Game/Network.gd index 1fabeaf..558c8fa 100644 --- a/Game/Network.gd +++ b/Game/Network.gd @@ -2,6 +2,7 @@ extends Node signal players_changed +signal player_joined(player: Player) func _ready(): @@ -70,6 +71,9 @@ func get_player(id: int) -> Player: return %Players.get_node(str(id)) +func get_players() -> Array[Node]: + return %Players.get_children() + func get_ordered_player_ids() -> Array: var keys = %Players.get_children().map(func(item: Player): return item.id @@ -91,42 +95,31 @@ func add_to_players(remote_data: Dictionary): %Players.add_child(player) + player_joined.emit(player) players_changed.emit() -@rpc("any_peer") -func update_player(remote_data: Dictionary): - var id = multiplayer.get_remote_sender_id() +@rpc("any_peer", "call_local") +func update_player(id: int, remote_data: Dictionary): var player = get_player(id) - player.score = remote_data.score + for property in remote_data: + if typeof(player[property]) == TYPE_INT: + player[property] += remote_data[property] + else: + player[property] = remote_data[property] players_changed.emit() @rpc("any_peer") -#func place_tower(remote_tower: Dictionary, position: Vector2): -func place_tower(remote_data: Dictionary): - print(remote_data) - var data: Tower.NetworkData = dict_to_inst(remote_data) - var remote_player_id = multiplayer.get_remote_sender_id() - - var tower = Tower.from_network_data(data) - tower.owner_id = remote_player_id - - Network.get_player(remote_player_id).towers[tower.global_position] = tower - - Client.stage.place_tower(tower, tower.global_position) - - -@rpc("any_peer") #func destroy_tower(remote_tower: Dictionary): func destroy_tower(position: Vector2): var owner_id = multiplayer.get_remote_sender_id() var player = get_player(owner_id) var tower = player.towers.get(position) - Client.stage.destroy_tower(tower) + Client.current_stage.destroy_tower(tower) @rpc("any_peer") @@ -139,20 +132,6 @@ func update_tower(remote_tower_node_path: NodePath, remote_data: Dictionary): @rpc("any_peer") -func spawn_unit(remote_data: Dictionary):#, _remote_spawn: Dictionary): - #print(remote_data) - var data: Unit.NetworkData = dict_to_inst(remote_data) - var unit := Unit.from_network_data(data) - #var spawn = from_rpc_object(remote_spawn, "res://Stages/Paths/Spawn.tscn") - - var remote_id = multiplayer.get_remote_sender_id() - unit.owner_id = remote_id - #unit.set_multiplayer_authority(remote_id) - - Client.stage.spawn_unit(unit) - - -@rpc("any_peer") func remove_unit(remote_unit_node_path): var unit = get_tree().current_scene.get_node_or_null(remote_unit_node_path) if unit: |