summaryrefslogtreecommitdiff
path: root/scripts/base_defender.gd
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-05-29 17:07:41 -0400
committerbd <bdunahu@operationnull.com>2025-05-29 17:07:41 -0400
commit8ec9e91860722288f844e01938b7b6489aff122a (patch)
treec04663d0e7fa8df245172520acb3a6ddbb1b34c9 /scripts/base_defender.gd
parent4a24041fdadcef8548da302922095ca2d359941a (diff)
Add visible tower range on hover
Diffstat (limited to 'scripts/base_defender.gd')
-rw-r--r--scripts/base_defender.gd27
1 files changed, 25 insertions, 2 deletions
diff --git a/scripts/base_defender.gd b/scripts/base_defender.gd
index 782fd2a..7f13a0f 100644
--- a/scripts/base_defender.gd
+++ b/scripts/base_defender.gd
@@ -4,6 +4,9 @@ extends StaticBody2D
@onready var util = preload("res://scripts/util.gd")
@onready var game_stats_config = preload("res://resources/game_stats_config.tres")
+@onready var _collision_shape = $Tower/CollisionShape2D
+@onready var _visual_shape = $Tower/Line2D
+
var tower_data : Dictionary
var tower_key : String
@@ -13,15 +16,18 @@ var _idle_texture : Texture
var _attack_texture : Texture
func set_tower_stats(tower_index : int):
- var collision_shape = $Tower/CollisionShape2D
- collision_shape.shape = CircleShape2D.new()
+ _collision_shape.shape = CircleShape2D.new()
tower_data = game_stats_config.defenders[tower_index].duplicate(true)
tower_key = tower_data["desc"]
+ _visual_shape.width = 1.0
+ _visual_shape.closed = true
+ _visual_shape.set_default_color(Color("#0f6b8a"))
reset_tower_range()
func reset_tower_range():
$Tower/CollisionShape2D.shape.radius = tower_data["range"]
+ _update_visual_circle()
func reset_tower_sprite():
_idle_texture = util.get_tile_texture(tower_data["sprite_idle"])
@@ -76,6 +82,23 @@ func apply_upgrade(effects: Dictionary):
reset_tower_range()
reset_tower_sprite()
+func _update_visual_circle() -> void:
+ var radius = _collision_shape.shape.radius
+ var points = []
+ var segments = 36 # Number of segments to approximate the circle
+ for i in range(segments):
+ var angle = (i / float(segments)) * 2 * PI
+ var x = radius * cos(angle)
+ var y = radius * sin(angle)
+ points.append(Vector2(x, y))
+ _visual_shape.points = points
+
+func hide_collision() -> void:
+ _visual_shape.hide()
+
+func show_collision() -> void:
+ _visual_shape.show()
+
# extending classes should override below
func _on_fire_timer_timeout() -> void:
pass