mtd/Worlds/GreenPlanet/Enemies/enemy_controller.gd

49 lines
1.1 KiB
GDScript

extends PathFollow3D
class_name EnemyController
signal reached_goal(penalty)
signal died
var alive = true
@export var stats : Enemy
@export var status_manager : StatusEffector
var movement_speed
func _ready() -> void:
$Dog/Health.max_health = stats.health
$Dog/Health.current_health = stats.health
$Dog/SubViewport/ProgressBar.max_value = stats.health
$Dog/SubViewport/ProgressBar.value = stats.health
$Dog/DirectionSprite.texture = stats.sprite.duplicate()
movement_speed = stats.movement_speed
func damage(amount):
$Dog/Hitbox.damage(amount)
func _physics_process(delta: float) -> void:
progress += movement_speed * delta
if progress_ratio >= 1:
reached_goal.emit(stats.penalty)
queue_free()
func die():
died.emit()
queue_free()
func _on_health_health_depleted() -> void:
if alive:
alive = false
die()
func _on_health_health_changed(health) -> void:
$Dog/SubViewport/ProgressBar.value = health
var percent = float($Dog/Health.current_health) / float($Dog/Health.max_health)
$Dog/SubViewport/ProgressBar.tint_progress = Color(1 - percent, percent, 0.0)
$Dog/SubViewport/ProgressBar.set_visible(true)