summaryrefslogtreecommitdiff
path: root/Towers
diff options
context:
space:
mode:
Diffstat (limited to 'Towers')
-rw-r--r--Towers/Components/TowerComponent.gd3
-rw-r--r--Towers/Components/TowerComponent.tscn1
-rw-r--r--Towers/Tower.gd56
-rw-r--r--Towers/Tower.tscn5
4 files changed, 27 insertions, 38 deletions
diff --git a/Towers/Components/TowerComponent.gd b/Towers/Components/TowerComponent.gd
index 9a16845..e9ecb94 100644
--- a/Towers/Components/TowerComponent.gd
+++ b/Towers/Components/TowerComponent.gd
@@ -13,6 +13,9 @@ enum ComponentType {
Frost,
Burn,
Poison,
+
+ Splash,
+ Aura,
}
@export var type: ComponentType
diff --git a/Towers/Components/TowerComponent.tscn b/Towers/Components/TowerComponent.tscn
index e2fbf3f..0ac2702 100644
--- a/Towers/Components/TowerComponent.tscn
+++ b/Towers/Components/TowerComponent.tscn
@@ -10,5 +10,6 @@ script = ExtResource("1_jb46t")
texture_filter = 1
offset_right = 40.0
offset_bottom = 40.0
+mouse_filter = 2
stretch_mode = 5
metadata/_edit_use_anchors_ = true
diff --git a/Towers/Tower.gd b/Towers/Tower.gd
index 141f588..0b923ca 100644
--- a/Towers/Tower.gd
+++ b/Towers/Tower.gd
@@ -5,8 +5,12 @@ extends StaticBody2D
signal selected
signal deselected
+signal selected_primary
signal selected_secondary
+signal hovered(is_hovered: bool)
+signal double_clicked
+
var is_selected := false:
set(value):
if value:
@@ -19,11 +23,8 @@ var is_selected := false:
var is_hovered := false:
set(value):
- if value:
- Input.set_default_cursor_shape(Input.CURSOR_POINTING_HAND)
- else:
- Input.set_default_cursor_shape(Input.CURSOR_ARROW)
is_hovered = value
+ hovered.emit(is_hovered)
queue_redraw()
var is_highlighted := false:
@@ -45,6 +46,9 @@ signal components_changed
@export var components: Dictionary
+@onready var ground_anchor: Marker2D = $GroundAnchor
+
+
func _init():
scale = Vector2(Client.current_stage.map.tile_set.tile_size) / Vector2(16, 16)
@@ -67,17 +71,6 @@ func _ready():
func _draw():
modulate = Color(1, 1, 1)
- if is_hovered:
- if Client.state is StateDefault:
- draw_circle(
- Vector2(Client.current_stage.map.tile_set.tile_size) / scale,
- 8 + components.get(TowerComponent.ComponentType.Range).range,
- Color(1, 1, 1, 0.5),
- false,
- 1.0
- )
- modulate = Color(1.25, 1.25, 1.25)
-
if is_selected:
modulate = Color(1.5, 1.5, 1.5)
@@ -98,19 +91,6 @@ func _process(delta: float) -> void:
component.process(delta)
-func _on_input_event(_viewport: Node, event: InputEvent, _shape_idx: int):
- # disable remote select for now
- if owner_id != multiplayer.get_unique_id():
- return
-
- if event.is_action_pressed("select_secondary"):
- selected_secondary.emit()
-
- if Client.state is StateBuild:
- if event.is_action_pressed("builder_cancel"):
- Client.remove_tower(self)
-
-
func _on_selectable_area_hover_enter() -> void:
is_hovered = true
@@ -122,14 +102,17 @@ func _on_selectable_area_select_primary(event: InputEvent) -> void:
if owner_id != multiplayer.get_unique_id():
return
- if Client.state is StateDefault:
- 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)
+ if event.is_double_click():
+ double_clicked.emit()
+ else:
+ selected_primary.emit()
+
+func _on_selectable_area_select_secondary(_event: InputEvent) -> void:
+ # disable remote select for now
+ if owner_id != multiplayer.get_unique_id():
+ return
+
+ selected_secondary.emit()
func add_component(component: TowerComponent):
@@ -176,6 +159,7 @@ func get_group_id() -> String:
func _on_tree_exiting() -> void:
if is_selected:
+ is_hovered = false
is_selected = false
diff --git a/Towers/Tower.tscn b/Towers/Tower.tscn
index 3e59980..598c37f 100644
--- a/Towers/Tower.tscn
+++ b/Towers/Tower.tscn
@@ -88,7 +88,8 @@ centered = false
position = Vector2(16, 16)
shape = SubResource("RectangleShape2D_atm5x")
-[node name="SelectableArea" parent="." instance=ExtResource("3_57d5u")]
+[node name="SelectableArea" parent="." node_paths=PackedStringArray("root") instance=ExtResource("3_57d5u")]
+root = NodePath("..")
[node name="CollisionShape2D" type="CollisionShape2D" parent="SelectableArea"]
position = Vector2(16, 16)
@@ -99,6 +100,7 @@ unique_name_in_owner = true
offset_right = 32.0
offset_bottom = 32.0
size_flags_vertical = 3
+mouse_filter = 2
theme_override_constants/h_separation = 0
theme_override_constants/v_separation = 0
reverse_fill = true
@@ -109,7 +111,6 @@ position = Vector2(16, 29)
[node name="CenterAnchor" type="Marker2D" parent="."]
position = Vector2(16, 16)
-[connection signal="input_event" from="." to="." method="_on_input_event"]
[connection signal="tree_exiting" from="." to="." method="_on_tree_exiting"]
[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"]