diff options
Diffstat (limited to 'scenes/defenders/base_defender.gd')
-rw-r--r-- | scenes/defenders/base_defender.gd | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/scenes/defenders/base_defender.gd b/scenes/defenders/base_defender.gd deleted file mode 100644 index 66be11d..0000000 --- a/scenes/defenders/base_defender.gd +++ /dev/null @@ -1,49 +0,0 @@ -extends StaticBody2D - -@onready var sprite_node = $Sprite2D - -var defender_range : float -var fire_rate : float -var damage : int -var target : CharacterBody2D - -func _on_fire_timer_timeout() -> void: - # extending classes override here - pass - -func select_target() -> void: - var targets : Array = _find_targets() - - # this is all to select the furthest target on the track - var curr : PathFollow2D = null - for i in targets: - if curr == null: - curr = i.get_node("../") - else: - if i.get_parent().get_progress() > curr.get_progress(): - curr = i.get_node("../") - - _update_state_machine(curr) - -func _find_targets() -> Array: - var targets : Array = get_node("Tower").get_overlapping_bodies() - var tmp : Array = [] - for i in targets: - if "Crawler" in i.name: - tmp.append(i) - return tmp - -func _update_state_machine(curr : PathFollow2D) -> void: - if (curr == null): - target = null - sprite_node.idle_state() - else: - target = curr.get_child(0) - sprite_node.attack_state() - -func _on_tower_body_entered(_body: Node2D) -> void: - var old_target : CharacterBody2D = target - select_target() - if old_target == null && old_target != target: - $FireTimer.start(fire_rate) - _on_fire_timer_timeout() |