diff options
Diffstat (limited to 'Game')
-rw-r--r-- | Game/Client.gd | 6 | ||||
-rw-r--r-- | Game/Network.gd | 4 | ||||
-rw-r--r-- | Game/Selection/selection_rectangle.gd | 2 | ||||
-rw-r--r-- | Game/States/Build/BuilderElement.gd | 5 | ||||
-rw-r--r-- | Game/States/Build/build_grid.gd | 21 |
5 files changed, 26 insertions, 12 deletions
diff --git a/Game/Client.gd b/Game/Client.gd index db33a26..60efbb8 100644 --- a/Game/Client.gd +++ b/Game/Client.gd @@ -24,6 +24,9 @@ func initialize_stage(stage: Stage): func place_tower(tower: Tower): + if not current_stage.can_place_tower(): + return + var network_id = multiplayer.get_unique_id() tower.owner_id = network_id tower.name = "Tower@" + str(network_id) + "@" + str(Time.get_ticks_usec()) @@ -59,6 +62,9 @@ func update_tower(path: NodePath, data: Tower.NetworkData): func spawn_unit(unit: Unit, spawn: Spawn, overwrite_target: PathNode = null): + if not current_stage.can_spawn_unit(): + return + var network_id = multiplayer.get_unique_id() unit.owner_id = network_id unit.name = "Unit@" + str(network_id) + "@" + str(Time.get_ticks_usec()) diff --git a/Game/Network.gd b/Game/Network.gd index 558c8fa..5a435b7 100644 --- a/Game/Network.gd +++ b/Game/Network.gd @@ -74,8 +74,8 @@ func get_player(id: int) -> Player: func get_players() -> Array[Node]: return %Players.get_children() -func get_ordered_player_ids() -> Array: - var keys = %Players.get_children().map(func(item: Player): +func get_ordered_player_ids(players = get_players()) -> Array: + var keys = players.map(func(item: Player): return item.id ) keys.sort_custom(func(a: int, b: int): diff --git a/Game/Selection/selection_rectangle.gd b/Game/Selection/selection_rectangle.gd index 5e7d1c1..944372d 100644 --- a/Game/Selection/selection_rectangle.gd +++ b/Game/Selection/selection_rectangle.gd @@ -16,7 +16,7 @@ var is_active: bool : get(): return abs(size) > Vector2(1, 1) and Client.state is StateDefault -@onready var camera: Camera2D = get_tree().get_first_node_in_group("camera") +@onready var camera: Camera = get_viewport().get_camera_2d() func _process(_delta: float) -> void: diff --git a/Game/States/Build/BuilderElement.gd b/Game/States/Build/BuilderElement.gd index eb5ae12..38417ff 100644 --- a/Game/States/Build/BuilderElement.gd +++ b/Game/States/Build/BuilderElement.gd @@ -88,10 +88,9 @@ func can_build(): if area.get_overlapping_bodies().size() > 0: return false - - if Client.current_stage.has_method("can_build"): - return Client.current_stage.can_build() + #if Client.current_stage.has_method("can_build"): + #return Client.current_stage.can_build() return true diff --git a/Game/States/Build/build_grid.gd b/Game/States/Build/build_grid.gd index 766c79b..67c962e 100644 --- a/Game/States/Build/build_grid.gd +++ b/Game/States/Build/build_grid.gd @@ -1,21 +1,30 @@ extends Node2D +@onready var camera: Camera = get_viewport().get_camera_2d() + + +func _ready() -> void: + camera.zoomed.connect(func(_zoom): + queue_redraw() + ) + + func _draw(): var area = Client.current_stage.map.get_used_rect() var cell_size = Client.current_stage.map.tile_set.tile_size var offset = area.position for row in range(0, area.size.y + 1): draw_line( - Vector2(offset.x * cell_size.x, offset.y + row * cell_size.y), - Vector2(offset.x * cell_size.x + area.size.x * cell_size.x, offset.y + row * cell_size.y), + Vector2(offset.x * cell_size.x, offset.y * cell_size.y + row * cell_size.y), + Vector2(offset.x * cell_size.x + area.size.x * cell_size.x, offset.y * cell_size.y + row * cell_size.y), Color(1, 1, 1, 0.25), - 1.0 + 1.0 / camera.zoom.x ) for column in range(0, area.size.x + 1): draw_line( - Vector2(offset.x * cell_size.x + column * cell_size.x, offset.y), - Vector2(offset.x * cell_size.x + column * cell_size.x, offset.y + area.size.y * cell_size.y), + Vector2(offset.x * cell_size.x + column * cell_size.x, offset.y * cell_size.y), + Vector2(offset.x * cell_size.x + column * cell_size.x, offset.y * cell_size.y + area.size.y * cell_size.y), Color(1, 1, 1, 0.25), - 1.0 + 1.0 / camera.zoom.x ) |