diff options
Diffstat (limited to 'scripts/base_defender.gd')
-rw-r--r-- | scripts/base_defender.gd | 27 |
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 |