Files
fishtanks/src/Systems/DamageSystem.cpp
T
ViktorLjung e4a59cec61 Merge remote-tracking branch 'origin/master' into havok
Conflicts:
	src/GameWorld.cpp
	vs11/Returngeance/Returngeance.vcxproj.filters
2014-06-05 06:01:49 +02:00

32 lines
869 B
C++

#include "PrecompiledHeader.h"
#include "DamageSystem.h"
#include "World.h"
void Systems::DamageSystem::RegisterComponents( ComponentFactory* cf )
{
cf->Register<Components::Health>([]() { return new Components::Health(); });
cf->Register<Components::DamageModel>([]() { return new Components::DamageModel(); });
}
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<Components::Health>(event.Entity);
health->Amount -= event.Amount;
if(health->Amount <= 0)
{
Events::Dead e;
e.Entity = event.Entity;
EventBroker->Publish(e);
}
LOG_INFO("Damaged entity %i, Health left: %f", event.Entity, health->Amount);
return true;
}