#include "PrecompiledHeader.h" #include "DamageSystem.h" #include "World.h" void Systems::DamageSystem::RegisterComponents( ComponentFactory* cf ) { cf->Register([]() { return new Components::Health(); }); } void Systems::DamageSystem::Initialize() { EVENT_SUBSCRIBE_MEMBER(m_EDamage, &Systems::DamageSystem::OnDamage); } bool Systems::DamageSystem::OnDamage( const Events::Damage &event ) { if(!m_World->ValidEntity(event.Entity)) return false; auto health = m_World->GetComponent(event.Entity); health->Amount -= event.Amount; if(health->Amount <= 0) { Events::OnDead e; e.Entity = event.Entity; EventBroker->Publish(e); } LOG_INFO("Damaged entity %i, Health left: %f", event.Entity, health->Amount); return true; }