extends CharacterBody2D @onready var sprite_node = $Sprite2D @onready var util = preload("res://scripts/util.gd") var damage : int var speed : float var max_health : float var worth : int var sprite_atlas : Vector2i var _health : float var _timer : Timer func _ready() -> void: _health = max_health sprite_node.texture = util.get_tile_texture(sprite_atlas) _timer = Timer.new() _timer.wait_time = speed / 60 _timer.autostart = true _timer.connect("timeout", Callable(self, "_on_animate_timeout")) add_child(_timer) func _process(delta): get_parent().set_progress(get_parent().get_progress() + speed * delta) if get_parent().get_progress_ratio() >= 1: GameData.subtract_morale(damage) queue_free() func deal_damage(tower_damage): _health -= tower_damage if _health <= 0: GameData.add_life(worth) queue_free() else: _update_color() func _update_color(): var ratio : float = _health / max_health var target_color = Color(1, ratio, ratio) sprite_node.modulate = target_color func _on_animate_timeout(): sprite_node.scale.x = -sprite_node.scale.x