diff options
Diffstat (limited to 'Game/Client.gd')
-rw-r--r-- | Game/Client.gd | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/Game/Client.gd b/Game/Client.gd index 77ce500..3d9cf34 100644 --- a/Game/Client.gd +++ b/Game/Client.gd @@ -1,37 +1,50 @@ extends Node -var state: State +signal stage_state_changed(state: State) + +var state: State : + set(value): + state = value + stage_state_changed.emit(value) + var stage: Stage -var player: Player = Player.new() +var player: Player -func update_player(local_player: Player): - player = local_player - Network.players[multiplayer.get_unique_id()] = local_player +func _ready(): + player = Player.new() + player.id = multiplayer.get_unique_id() + + +func update_player(): + Network.players[multiplayer.get_unique_id()] = player + Network.update_player.rpc(Network.to_rpc_object(player)) func initialize_stage(current_stage: Stage): stage = current_stage - player = Player.new() func place_tower(tower: Tower, position: Vector2): - tower.owner_id = multiplayer.get_unique_id() + var network_id = multiplayer.get_unique_id() + tower.owner_id = network_id + tower.set_multiplayer_authority(network_id) + tower.name = "Tower@" + str(network_id) + "@" + str(Time.get_ticks_usec()) stage.place_tower(tower, position) Network.place_tower.rpc(Network.to_rpc_object(tower), position) player.towers[position] = tower player.score += 1 - update_player(player) + update_player() func remove_tower(tower: Tower): if tower.owner_id == multiplayer.get_unique_id(): destroy_tower(tower) player.score -= 1 - update_player(player) + update_player() func destroy_tower(tower: Tower): @@ -39,7 +52,7 @@ func destroy_tower(tower: Tower): Network.destroy_tower.rpc(Network.to_rpc_object(tower)) player.towers.erase(tower.global_position) - update_player(player) + update_player() func select_tower(tower: Tower): @@ -54,10 +67,15 @@ func deselect_tower(): func spawn_unit(unit: Unit, spawn: Spawn): + var network_id = multiplayer.get_unique_id() + unit.owner_id = network_id + unit.set_multiplayer_authority(network_id) + unit.name = "Unit@" + str(network_id) + "@" + str(Time.get_ticks_usec()) + unit.global_position = spawn.spawn_position unit.target = spawn.next_node - unit.hp = 20000 - unit.speed = randi_range(50, 150) + unit.hp = randi_range(50, 150) #20000b + unit.speed = randi_range(100, 150) stage.spawn_unit(unit, spawn) Network.spawn_unit.rpc(Network.to_rpc_object(unit), Network.to_rpc_object(spawn)) |