diff options
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("../") |