Files
fishtanks/src/Systems/FlagSystem.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

64 lines
1.7 KiB
C++

#include "PrecompiledHeader.h"
#include "FlagSystem.h"
#include "World.h"
void Systems::FlagSystem::RegisterComponents( ComponentFactory* cf )
{
cf->Register<Components::Flag>([]() { return new Components::Flag(); });
}
void Systems::FlagSystem::Initialize()
{
EVENT_SUBSCRIBE_MEMBER(m_EEnterTrigger, &Systems::FlagSystem::OnEnterTrigger);
}
void Systems::FlagSystem::Update( double dt )
{
}
void Systems::FlagSystem::UpdateEntity( double dt, EntityID entity, EntityID parent )
{
}
bool Systems::FlagSystem::OnEnterTrigger( const Events::EnterTrigger &event )
{
auto JeepSteeringComponent = m_World->GetComponent<Components::JeepSteering>(event.Entity);
if(!JeepSteeringComponent)
return false;
auto teamComponent = m_World->GetComponent<Components::Team>(event.Trigger);
auto playerComponent = m_World->GetComponent<Components::Player>(event.Entity);
if(!teamComponent || !playerComponent)
return false;
if (teamComponent->TeamID == playerComponent->ID)
return false;
auto flagComponent = m_World->GetComponent<Components::Flag>(event.Trigger);
if(!flagComponent)
return false;
PickUpFlag(event.Entity, event.Trigger);
return true;
}
void Systems::FlagSystem::PickUpFlag( EntityID entity, EntityID trigger )
{
m_World->RemoveComponent<Components::Trigger>(trigger);
m_World->SetEntityParent(trigger, entity);
auto triggerTransform = m_World->GetComponent<Components::Transform>(trigger);
triggerTransform->Position = glm::vec3(-1.5f, 0.1f, 2.f);
auto teamComponent = m_World->GetComponent<Components::Team>(trigger);
auto playerComponent = m_World->GetComponent<Components::Player>(entity);
Events::FlagPickup ePickup;
ePickup.Player = playerComponent->ID;
EventBroker->Publish(ePickup);
}