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 | |
parent | dc46bc748d45346c8062a46121e1d0f13c8af05a (diff) |
Move targetting functions to base defender class
-rw-r--r-- | scenes/defenders/base_defender.gd | 36 | ||||
-rw-r--r-- | scenes/defenders/base_defender.gd.uid | 1 | ||||
-rw-r--r-- | scenes/defenders/warlock.gd | 42 | ||||
-rw-r--r-- | scenes/defenders/warlock.tscn | 4 |
4 files changed, 45 insertions, 38 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("../") diff --git a/scenes/defenders/base_defender.gd.uid b/scenes/defenders/base_defender.gd.uid new file mode 100644 index 0000000..8d46a61 --- /dev/null +++ b/scenes/defenders/base_defender.gd.uid @@ -0,0 +1 @@ +uid://bpiajfyx3t7qx diff --git a/scenes/defenders/warlock.gd b/scenes/defenders/warlock.gd index fbc6a3f..0178382 100644 --- a/scenes/defenders/warlock.gd +++ b/scenes/defenders/warlock.gd @@ -1,44 +1,14 @@ -extends StaticBody2D +extends "res://scenes/defenders/base_defender.gd" -@export var projectile_damage = 5 +var projectile: PackedScene = preload("res://scenes/defenders/warlock_projectile.tscn") -@onready var sprite_node = $Sprite2D -var projectile = preload("res://scenes/defenders/warlock_projectile.tscn") -var curr +func _ready(): + damage = 200 -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("../") - -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 _on_fire_rate_timeout(): +func _on_fire_timer_timeout(): if (curr != null): var tmp_projectile = projectile.instantiate() tmp_projectile.curr = curr - tmp_projectile.projectile_damage = projectile_damage + tmp_projectile.projectile_damage = damage get_node("ProjectileContainer").call_deferred("add_child", tmp_projectile) tmp_projectile.global_position = $Aim.global_position - -func handle_animation(): - if (curr == null): - sprite_node.idle_state() - else: - sprite_node.attack_state() diff --git a/scenes/defenders/warlock.tscn b/scenes/defenders/warlock.tscn index d306d41..444db16 100644 --- a/scenes/defenders/warlock.tscn +++ b/scenes/defenders/warlock.tscn @@ -26,7 +26,7 @@ shape = SubResource("CircleShape2D_rpypk") [node name="ProjectileContainer" type="Node" parent="."] -[node name="FireRate" type="Timer" parent="."] +[node name="FireTimer" type="Timer" parent="."] autostart = true [node name="Sprite2D" type="Sprite2D" parent="."] @@ -35,4 +35,4 @@ script = ExtResource("2_rpypk") [connection signal="body_entered" from="Tower" to="." method="_on_tower_body_entered"] [connection signal="body_exited" from="Tower" to="." method="_on_tower_body_exited"] -[connection signal="timeout" from="FireRate" to="." method="_on_fire_rate_timeout"] +[connection signal="timeout" from="FireTimer" to="." method="_on_fire_timer_timeout"] |