summaryrefslogtreecommitdiff
path: root/Towers
diff options
context:
space:
mode:
Diffstat (limited to 'Towers')
-rw-r--r--Towers/Tower.gd68
-rw-r--r--Towers/Tower.tscn44
2 files changed, 60 insertions, 52 deletions
diff --git a/Towers/Tower.gd b/Towers/Tower.gd
index 30af802..7eb8bf6 100644
--- a/Towers/Tower.gd
+++ b/Towers/Tower.gd
@@ -13,13 +13,12 @@ var is_selected = false :
if value:
if not Tower.selected_towers.has(self):
Tower.selected_towers.append(self)
- selected.emit()
+ selected.emit()
else:
Tower.selected_towers.erase(self)
deselected.emit()
is_selected = value
queue_redraw()
- toggle_ui()
var is_hovered = false :
set(value):
@@ -51,7 +50,10 @@ func _ready():
$Range/CollisionShape2D.shape.radius = attack_range
$ShootCooldown.wait_time = attack_speed
- toggle_ui()
+ %Data.text = "Range: %s - Power: %s - Speed: %s" % [
+ attack_range, attack_power, attack_speed
+ ]
+
#for component in [
#preload("res://Towers/Components/FrostComponent.gd").new(),
@@ -61,16 +63,9 @@ func _ready():
func _draw():
- if is_selected:
- draw_circle(
- Client.current_stage.map.tile_set.tile_size,
- 8 + attack_range,
- Color(1, 1, 1, 0.75),
- false,
- 1.0
- )
- modulate = Color(1.5, 1.5, 1.5)
- elif is_hovered:
+ modulate = Color(1, 1, 1)
+
+ if is_hovered:
if Client.state is StateDefault:
draw_circle(
Client.current_stage.map.tile_set.tile_size,
@@ -80,8 +75,9 @@ func _draw():
1.0
)
modulate = Color(1.25, 1.25, 1.25)
- else:
- modulate = Color(1, 1, 1)
+
+ if is_selected:
+ modulate = Color(1.5, 1.5, 1.5)
func _process(_delta: float) -> void:
@@ -126,16 +122,13 @@ func _on_selectable_area_select(event: InputEvent) -> void:
return
if Client.state is StateDefault:
- Client.select_tower(self)
-
- if event.is_double_click():
- var selection_area = preload("res://Game/Selection/MultiSelectArea.tscn").instantiate()
- selection_area.set_collision_mask_value(3, true)
- selection_area.select.connect(func(nodes):
- for node in nodes:
- Client.select_tower(node)
- )
- get_tree().current_scene.add_child(selection_area)
+ if Input.is_action_pressed("select_multiple") and is_selected:
+ is_selected = false
+ else:
+ Client.select_tower(self)
+
+ if event.is_double_click():
+ Client.multi_select(3)
@@ -182,8 +175,8 @@ func shoot():
target.set_hp(target.hp - 1)
-func toggle_ui():
- $HUD.visible = is_selected
+func get_hud():
+ return %HUD.get_child(0).duplicate()
func get_region():
@@ -200,15 +193,6 @@ func _on_tree_exiting() -> void:
is_selected = false
-func get_rpc_properties() -> Dictionary:
- return {
- "name": null,
- "global_position": null,
- "owner_id": null,
- "attack_range": null,
- }
-
-
func _on_h_box_container_gui_input(event: InputEvent) -> void:
if event.is_action_pressed("select"):
get_viewport().set_input_as_handled()
@@ -251,6 +235,10 @@ class NetworkData extends Resource:
var name: String
var owner_id: int
var position: Vector2
+
+ var attack_range: int
+ var attack_power: int
+ var attack_speed: int
var components: Array
var sprite_modulate: Color
@@ -262,6 +250,10 @@ func to_network_data() -> NetworkData:
data.name = name
data.owner_id = owner_id
data.position = global_position
+
+ data.attack_range = attack_range
+ data.attack_power = attack_power
+ data.attack_speed = attack_speed
data.components = components.map(func(item: TowerComponent):
return item.name
)
@@ -289,4 +281,8 @@ static func from_network_data(data: NetworkData) -> Tower:
tower.owner_id = data.owner_id
tower.global_position = data.position
+ tower.attack_range = data.attack_range
+ tower.attack_power = data.attack_power
+ tower.attack_speed = data.attack_speed
+
return tower
diff --git a/Towers/Tower.tscn b/Towers/Tower.tscn
index 43c3c35..55ae928 100644
--- a/Towers/Tower.tscn
+++ b/Towers/Tower.tscn
@@ -71,43 +71,55 @@ shape = SubResource("RectangleShape2D_312i7")
position = Vector2(0, 32)
[node name="HUD" type="CanvasLayer" parent="."]
-
-[node name="CenterContainer" type="CenterContainer" parent="HUD"]
-anchors_preset = 12
-anchor_top = 1.0
-anchor_right = 1.0
-anchor_bottom = 1.0
+unique_name_in_owner = true
+visible = false
+
+[node name="VBoxContainer" type="VBoxContainer" parent="HUD"]
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -38.0
+offset_top = -25.0
+offset_right = 38.0
+offset_bottom = 25.0
grow_horizontal = 2
-grow_vertical = 0
+grow_vertical = 2
+
+[node name="Data" type="Label" parent="HUD/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
-[node name="VBoxContainer" type="VBoxContainer" parent="HUD/CenterContainer"]
+[node name="Components" type="VBoxContainer" parent="HUD/VBoxContainer"]
+unique_name_in_owner = true
layout_mode = 2
-[node name="HBoxContainer" type="HBoxContainer" parent="HUD/CenterContainer/VBoxContainer"]
+[node name="HBoxContainer" type="HBoxContainer" parent="HUD/VBoxContainer/Components"]
layout_mode = 2
mouse_default_cursor_shape = 2
-[node name="TextureRect" type="TextureRect" parent="HUD/CenterContainer/VBoxContainer/HBoxContainer"]
+[node name="TextureRect" type="TextureRect" parent="HUD/VBoxContainer/Components/HBoxContainer"]
custom_minimum_size = Vector2(32, 0)
layout_mode = 2
texture = ExtResource("4_ccrqc")
stretch_mode = 5
-[node name="Label" type="Label" parent="HUD/CenterContainer/VBoxContainer/HBoxContainer"]
+[node name="Label" type="Label" parent="HUD/VBoxContainer/Components/HBoxContainer"]
layout_mode = 2
text = "Frost"
-[node name="HBoxContainer2" type="HBoxContainer" parent="HUD/CenterContainer/VBoxContainer"]
+[node name="HBoxContainer2" type="HBoxContainer" parent="HUD/VBoxContainer/Components"]
layout_mode = 2
mouse_default_cursor_shape = 2
-[node name="TextureRect" type="TextureRect" parent="HUD/CenterContainer/VBoxContainer/HBoxContainer2"]
+[node name="TextureRect" type="TextureRect" parent="HUD/VBoxContainer/Components/HBoxContainer2"]
custom_minimum_size = Vector2(32, 0)
layout_mode = 2
texture = ExtResource("5_y7tf5")
stretch_mode = 5
-[node name="Label" type="Label" parent="HUD/CenterContainer/VBoxContainer/HBoxContainer2"]
+[node name="Label" type="Label" parent="HUD/VBoxContainer/Components/HBoxContainer2"]
layout_mode = 2
text = "Burn"
@@ -121,5 +133,5 @@ replication_config = SubResource("SceneReplicationConfig_spp26")
[connection signal="hover_enter" from="SelectableArea" to="." method="_on_selectable_area_hover_enter"]
[connection signal="hover_exit" from="SelectableArea" to="." method="_on_selectable_area_hover_exit"]
[connection signal="select" from="SelectableArea" to="." method="_on_selectable_area_select"]
-[connection signal="gui_input" from="HUD/CenterContainer/VBoxContainer/HBoxContainer" to="." method="_on_h_box_container_gui_input"]
-[connection signal="gui_input" from="HUD/CenterContainer/VBoxContainer/HBoxContainer2" to="." method="_on_h_box_container_2_gui_input"]
+[connection signal="gui_input" from="HUD/VBoxContainer/Components/HBoxContainer" to="." method="_on_h_box_container_gui_input"]
+[connection signal="gui_input" from="HUD/VBoxContainer/Components/HBoxContainer2" to="." method="_on_h_box_container_2_gui_input"]