mtd/Worlds/GreenPlanet/Enemies/enemy_controller.gd

49 lines
1.1 KiB
GDScript3
Raw Normal View History

extends CharacterBody3D
class_name EnemyController
2023-11-09 17:56:08 +11:00
signal reached_goal(enemy, penalty)
signal died(enemy)
@export var stats : Enemy
@export var status_manager : StatusEffector
@export var movement_controller : EnemyMovement
@export var health : Health
var movement_speed
var movement_speed_penalty := 1.0
var alive = true
func _ready() -> void:
health.max_health = stats.health
health.current_health = stats.health
$SubViewport/ProgressBar.max_value = stats.health
$SubViewport/ProgressBar.value = stats.health
$DirectionSprite.texture = stats.sprite.duplicate()
movement_speed = stats.movement_speed
func damage(amount):
$Hitbox.damage(amount)
func goal_entered():
if alive:
alive = false
2023-11-09 17:56:08 +11:00
reached_goal.emit(stats, stats.penalty)
queue_free()
func die():
if alive:
alive = false
died.emit(stats)
queue_free()
func _on_health_health_changed(value) -> void:
$SubViewport/ProgressBar.value = value
var percent = float(health.current_health) / float(health.max_health)
$SubViewport/ProgressBar.tint_progress = Color(1 - percent, percent, 0.0)
$SubViewport/ProgressBar.set_visible(true)