summaryrefslogtreecommitdiff
path: root/Game/Client.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Game/Client.gd')
-rw-r--r--Game/Client.gd42
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))