summaryrefslogtreecommitdiff
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
parentdc46bc748d45346c8062a46121e1d0f13c8af05a (diff)
Move targetting functions to base defender class
-rw-r--r--scenes/defenders/base_defender.gd36
-rw-r--r--scenes/defenders/base_defender.gd.uid1
-rw-r--r--scenes/defenders/warlock.gd42
-rw-r--r--scenes/defenders/warlock.tscn4
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"]