SchildDerStaerke/scripts/item.gd

41 lines
941 B
GDScript

class_name Item extends Node3D
@export var item_name: String
@export var maximum_health := 10
@export var health := maximum_health
enum States {
hidden,
idle,
closed,
opened,
looted,
destroyed
}
@export var state = States.idle:
get:
return state
set(value):
state = value
state_changed.emit(value)
signal name_changed(item_name: String)
signal health_changed(current_health: int, maximum_health: int)
signal state_changed(new_state: States)
signal recalculate_navigation_map()
func _ready() -> void:
name_changed.emit(item_name)
health_changed.emit(health, maximum_health)
func take_damage(damage_amount: int) -> void:
health = clamp(health - damage_amount, 0, maximum_health)
health_changed.emit(health, maximum_health)
if health <= 0:
state = States.destroyed
func destroy_item() -> void:
recalculate_navigation_map.emit(self)
queue_free()