diff options
author | bd <bdunahu@operationnull.com> | 2025-05-20 21:19:19 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-20 21:19:19 -0400 |
commit | eb5ea9d42ff3363c62f11dff1c33cff84f435f7e (patch) | |
tree | 7437aac2b26b1af94ff57fbc7fcad85392b9d5c6 /scenes/defenders/base_defender.gd | |
parent | dc46bc748d45346c8062a46121e1d0f13c8af05a (diff) |
Move targetting functions to base defender class
Diffstat (limited to 'scenes/defenders/base_defender.gd')
-rw-r--r-- | scenes/defenders/base_defender.gd | 36 |
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("../") |