Garage working, ready for vehicle swap implementation
This commit is contained in:
@@ -7,6 +7,7 @@ void Systems::TriggerSystem::RegisterComponents( ComponentFactory* cf )
|
||||
cf->Register<Components::Trigger>([]() { return new Components::Trigger(); });
|
||||
cf->Register<Components::TriggerExplosion>([]() { return new Components::TriggerExplosion(); });
|
||||
cf->Register<Components::TriggerMove>([]() { return new Components::TriggerMove(); });
|
||||
cf->Register<Components::TriggerRotate>([]() { return new Components::TriggerRotate(); });
|
||||
}
|
||||
|
||||
void Systems::TriggerSystem::Initialize()
|
||||
@@ -47,44 +48,31 @@ void Systems::TriggerSystem::OnEntityRemoved( EntityID entity )
|
||||
|
||||
bool Systems::TriggerSystem::OnEnterTrigger( const Events::EnterTrigger &event )
|
||||
{
|
||||
/*auto explosionComponent1 = m_World->GetComponent<Components::TriggerExplosion>(event.Entity1);
|
||||
auto explosionComponent2 = m_World->GetComponent<Components::TriggerExplosion>(event.Entity2);
|
||||
|
||||
if(explosionComponent1)
|
||||
{
|
||||
Explosion(event.Entity2, event.Entity1);
|
||||
}
|
||||
else if (explosionComponent2)
|
||||
{
|
||||
Explosion(event.Entity1, event.Entity2);
|
||||
}*/
|
||||
|
||||
auto flagComponent1 = m_World->GetComponent<Components::Flag>(event.Entity1);
|
||||
auto flagComponent2 = m_World->GetComponent<Components::Flag>(event.Entity2);
|
||||
|
||||
|
||||
auto flagComponent1 = m_World->GetComponent<Components::Flag>(event.Trigger);
|
||||
auto flagComponent2 = m_World->GetComponent<Components::Flag>(event.Entity);
|
||||
//HACK: SIMON IS DISSING AMERICA
|
||||
if(flagComponent1)
|
||||
{
|
||||
Flag(event.Entity2, event.Entity1);
|
||||
Flag(event.Entity, event.Trigger);
|
||||
}
|
||||
else if (flagComponent2)
|
||||
{
|
||||
Flag(event.Entity1, event.Entity2);
|
||||
Flag(event.Trigger, event.Entity);
|
||||
}
|
||||
|
||||
|
||||
auto triggerComponent1 = m_World->GetComponent<Components::TriggerMove>(event.Entity1);
|
||||
auto triggerComponent2 = m_World->GetComponent<Components::TriggerMove>(event.Entity2);
|
||||
|
||||
auto playerComponent1 = m_World->GetComponent<Components::Player>(event.Entity1);
|
||||
auto playerComponent2 = m_World->GetComponent<Components::Player>(event.Entity2);
|
||||
|
||||
if(triggerComponent1 && playerComponent2)
|
||||
auto triggerMoveComponent = m_World->GetComponent<Components::TriggerMove>(event.Trigger);
|
||||
if (triggerMoveComponent)
|
||||
{
|
||||
Move(event.Entity1);
|
||||
Move(triggerMoveComponent->Entity, triggerMoveComponent->Queue, triggerMoveComponent->Swap);
|
||||
}
|
||||
else if (triggerComponent2 && playerComponent1)
|
||||
|
||||
auto triggerRotateComponent = m_World->GetComponent<Components::TriggerRotate>(event.Trigger);
|
||||
if (triggerRotateComponent)
|
||||
{
|
||||
Move(event.Entity2);
|
||||
Rotate(triggerMoveComponent->Entity, triggerMoveComponent->Queue, triggerMoveComponent->Swap);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -93,41 +81,56 @@ bool Systems::TriggerSystem::OnEnterTrigger( const Events::EnterTrigger &event )
|
||||
|
||||
bool Systems::TriggerSystem::OnLeaveTrigger( const Events::LeaveTrigger &event )
|
||||
{
|
||||
auto triggerComponent1 = m_World->GetComponent<Components::TriggerMove>(event.Entity1);
|
||||
auto triggerComponent2 = m_World->GetComponent<Components::TriggerMove>(event.Entity2);
|
||||
|
||||
auto playerComponent1 = m_World->GetComponent<Components::Player>(event.Entity1);
|
||||
auto playerComponent2 = m_World->GetComponent<Components::Player>(event.Entity2);
|
||||
|
||||
if(triggerComponent1 && playerComponent2)
|
||||
auto triggerMoveComponent = m_World->GetComponent<Components::TriggerMove>(event.Trigger);
|
||||
if (triggerMoveComponent)
|
||||
{
|
||||
Move(event.Entity1);
|
||||
Move(triggerMoveComponent->Entity, triggerMoveComponent->Queue, triggerMoveComponent->Swap);
|
||||
}
|
||||
else if (triggerComponent2 && playerComponent1)
|
||||
|
||||
auto triggerRotateComponent = m_World->GetComponent<Components::TriggerRotate>(event.Trigger);
|
||||
if (triggerRotateComponent)
|
||||
{
|
||||
Move(event.Entity2);
|
||||
Rotate(triggerMoveComponent->Entity, triggerMoveComponent->Queue, triggerMoveComponent->Swap);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Systems::TriggerSystem::Move( EntityID entity )
|
||||
void Systems::TriggerSystem::Rotate(EntityID entity, bool queue, bool swap)
|
||||
{
|
||||
auto trigger = m_World->GetComponent<Components::TriggerMove>(entity);
|
||||
auto transform = m_World->GetComponent<Components::Transform>(trigger->Entity);
|
||||
|
||||
Events::Move e;
|
||||
e.Entity = trigger->Entity;
|
||||
e.GoalPosition = trigger->GoalPosition;
|
||||
e.Speed = trigger->Speed;
|
||||
e.Queue = false;
|
||||
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||
auto rotate = m_World->GetComponent<Components::Rotate>(entity);
|
||||
|
||||
Events::Rotate e;
|
||||
e.Entity = entity;
|
||||
e.GoalRotation = rotate->GoalRotation;
|
||||
e.Time = rotate->Time;
|
||||
e.Queue = queue;
|
||||
EventBroker->Publish(e);
|
||||
|
||||
glm::vec3 temp = trigger->GoalPosition;
|
||||
trigger->GoalPosition = trigger->StartPosition;
|
||||
trigger->StartPosition = temp;
|
||||
if (swap)
|
||||
{
|
||||
std::swap(rotate->GoalRotation, rotate->StartRotation);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Systems::TriggerSystem::Move(EntityID entity, bool queue, bool swap)
|
||||
{
|
||||
auto move = m_World->GetComponent<Components::Move>(entity);
|
||||
Events::Move e;
|
||||
e.Entity = entity;
|
||||
e.GoalPosition = move->GoalPosition;
|
||||
e.Speed = move->Speed;
|
||||
e.Queue = queue;
|
||||
EventBroker->Publish(e);
|
||||
|
||||
if (swap)
|
||||
{
|
||||
std::swap(move->GoalPosition, move->StartPosition);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user