#include "health_status.h" #include "macros.h" String HealthStatus::sig_death{ "death" }; String HealthStatus::sig_health_changed{ "health_changed" }; void HealthStatus::_bind_methods() { BIND_PROPERTY(Variant::INT, health); ADD_SIGNAL(MethodInfo(sig_death)); ADD_SIGNAL(MethodInfo(sig_health_changed, PropertyInfo(Variant::INT, "remaining"), PropertyInfo(Variant::INT, "delta"))); } void HealthStatus::ready() { this->max_health = this->health; } void HealthStatus::_notification(int what) { if (Engine::get_singleton()->is_editor_hint()) { return; } switch (what) { default: return; case NOTIFICATION_READY: ready(); return; } } void HealthStatus::set_health(int value) { this->health = value; } int HealthStatus::get_health() const { return this->health; } void HealthStatus::damage(int amount) { amount = Math::abs(amount); this->health -= amount; emit_signal(sig_health_changed, this->health, -amount); if (this->health <= 0) { emit_signal(sig_death); } }