SchildDerStaerke/scripts/item.gd

38 lines
783 B
GDScript

class_name Item
extends Node3D
@export var unit_name: String
@export var maximum_health := 10
@export var health := maximum_health
enum States {
hidden,
idle,
closed,
opened,
destroyed
}
var state = States.idle:
get:
return state
set(value):
state = value
print("Item state " + str(state) + "...")
state_changed.emit(value)
signal name_changed(unit_name: String)
signal health_changed(current_health: int, maximum_health: int)
signal state_changed(new_state: States)
func _ready() -> void:
name_changed.emit(unit_name)
health_changed.emit(health, maximum_health)
func take_damage(damage_amount: int) -> void:
health -= damage_amount
clampi(health, 0, maximum_health)
health_changed.emit(health, maximum_health)
if health <= 0:
state = States.destroyed