summaryrefslogtreecommitdiff
path: root/scenes/defenders/base_defender.gd
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-05-20 21:19:19 -0400
committerbd <bdunahu@operationnull.com>2025-05-20 21:19:19 -0400
commiteb5ea9d42ff3363c62f11dff1c33cff84f435f7e (patch)
tree7437aac2b26b1af94ff57fbc7fcad85392b9d5c6 /scenes/defenders/base_defender.gd
parentdc46bc748d45346c8062a46121e1d0f13c8af05a (diff)
Move targetting functions to base defender class
Diffstat (limited to 'scenes/defenders/base_defender.gd')
-rw-r--r--scenes/defenders/base_defender.gd36
1 files changed, 36 insertions, 0 deletions
diff --git a/scenes/defenders/base_defender.gd b/scenes/defenders/base_defender.gd
new file mode 100644
index 0000000..14d6249
--- /dev/null
+++ b/scenes/defenders/base_defender.gd
@@ -0,0 +1,36 @@
+extends StaticBody2D
+
+@onready var sprite_node = $Sprite2D
+
+var defender_range: float
+var damage: int
+var curr : PathFollow2D
+
+func _on_tower_body_entered(_body: Node2D):
+ select_target(get_node("Tower").get_overlapping_bodies())
+ handle_animation()
+
+func _on_tower_body_exited(_body: Node2D):
+ select_target(get_node("Tower").get_overlapping_bodies())
+ handle_animation()
+
+func handle_animation():
+ if (curr == null):
+ sprite_node.idle_state()
+ else:
+ sprite_node.attack_state()
+
+func select_target(targets):
+ var tmp = []
+ for i in targets:
+ if "Crawler" in i.name:
+ tmp.append(i)
+
+ # this is all to select the furthest target on the track
+ curr = null
+ for i in tmp:
+ if curr == null:
+ curr = i.get_node("../")
+ else:
+ if i.get_parent().get_progress() > curr.get_progress():
+ curr = i.get_node("../")