Player/Team specific triggers
This commit is contained in:
@@ -34,6 +34,14 @@ bool Systems::GarageSystem::OnEnterTrigger(const Events::EnterTrigger &event)
|
||||
if (!garageComponent)
|
||||
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;
|
||||
|
||||
std::string name = m_World->GetProperty<std::string>(event.Trigger, "Name");
|
||||
|
||||
if (name == "BoundsTrigger")
|
||||
@@ -56,6 +64,15 @@ bool Systems::GarageSystem::OnLeaveTrigger(const Events::LeaveTrigger &event)
|
||||
if (!garageComponent)
|
||||
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;
|
||||
|
||||
|
||||
std::string name = m_World->GetProperty<std::string>(event.Trigger, "Name");
|
||||
|
||||
if (name == "BoundsTrigger")
|
||||
@@ -76,18 +93,24 @@ bool Systems::GarageSystem::OnCommand(const Events::InputCommand &event)
|
||||
{
|
||||
EntityID trigger = pair.first;
|
||||
auto entities = pair.second;
|
||||
|
||||
std::string name = m_World->GetProperty<std::string>(trigger, "Name");
|
||||
if (name != "ElevatorShaftTrigger")
|
||||
continue;
|
||||
|
||||
auto triggerBaseParent = m_World->GetEntityBaseParent(trigger);
|
||||
auto triggerPlayerComponent = m_World->GetComponent<Components::Player>(triggerBaseParent);
|
||||
auto triggerTeamComponent = m_World->GetComponent<Components::Team>(trigger);
|
||||
if (!triggerTeamComponent)
|
||||
continue;
|
||||
|
||||
for (EntityID entity : entities)
|
||||
{
|
||||
auto entityPlayerComponent = m_World->GetComponent<Components::Player>(triggerBaseParent);
|
||||
if (triggerPlayerComponent == entityPlayerComponent)
|
||||
auto entityPlayerComponent = m_World->GetComponent<Components::Player>(entity);
|
||||
if(!entityPlayerComponent)
|
||||
continue;
|
||||
|
||||
if (entityPlayerComponent->ID != event.PlayerID)
|
||||
continue;
|
||||
|
||||
if (triggerTeamComponent->TeamID == entityPlayerComponent->ID)
|
||||
{
|
||||
EntityID garage = m_World->GetEntityParent(trigger);
|
||||
auto garageComponent = m_World->GetComponent<Components::Garage>(garage);
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "Events/Rotate.h"
|
||||
#include "Components/Move.h"
|
||||
#include "Components/Rotate.h"
|
||||
#include "Components/Team.h"
|
||||
|
||||
namespace Systems
|
||||
{
|
||||
|
||||
@@ -66,9 +66,17 @@ bool Systems::JeepSteeringSystem::OnSpawnVehicle(const Events::SpawnVehicle &eve
|
||||
{
|
||||
auto spawnPoint = component->Entity;
|
||||
auto spawnPointComponent = std::dynamic_pointer_cast<Components::SpawnPoint>(component);
|
||||
auto playerComponent = m_World->GetComponent<Components::Player>(spawnPointComponent->Player);
|
||||
if (!playerComponent || playerComponent->ID != event.PlayerID)
|
||||
auto teamComponent = m_World->GetComponent<Components::Team>(spawnPoint);
|
||||
|
||||
if(!teamComponent)
|
||||
{
|
||||
LOG_ERROR("SpawnPoint has no TeamComponent");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (teamComponent->TeamID != event.PlayerID)
|
||||
continue;
|
||||
|
||||
|
||||
Components::Transform absoluteTransform = m_World->GetSystem<Systems::TransformSystem>()->AbsoluteTransform(spawnPoint);
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "Components/Input.h"
|
||||
#include "Components/JeepSteering.h"
|
||||
#include "Events/JeepSteer.h"
|
||||
#include "Components/Team.h"
|
||||
|
||||
#include "Events/SetViewportCamera.h"
|
||||
|
||||
|
||||
@@ -375,7 +375,7 @@ bool Systems::TankSteeringSystem::OnSpawnVehicle(const Events::SpawnVehicle &eve
|
||||
{
|
||||
if (event.VehicleType != "Tank")
|
||||
return false;
|
||||
|
||||
|
||||
auto spawnPointComponents = m_World->GetComponentsOfType<Components::SpawnPoint>();
|
||||
if (!spawnPointComponents)
|
||||
{
|
||||
@@ -387,8 +387,15 @@ bool Systems::TankSteeringSystem::OnSpawnVehicle(const Events::SpawnVehicle &eve
|
||||
{
|
||||
auto spawnPoint = component->Entity;
|
||||
auto spawnPointComponent = std::dynamic_pointer_cast<Components::SpawnPoint>(component);
|
||||
auto playerComponent = m_World->GetComponent<Components::Player>(spawnPointComponent->Player);
|
||||
if (!playerComponent || playerComponent->ID != event.PlayerID)
|
||||
auto teamComponent = m_World->GetComponent<Components::Team>(spawnPoint);
|
||||
|
||||
if(!teamComponent)
|
||||
{
|
||||
LOG_ERROR("SpawnPoint has no TeamComponent");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (teamComponent->TeamID != event.PlayerID)
|
||||
continue;
|
||||
|
||||
Components::Transform absoluteTransform = m_World->GetSystem<Systems::TransformSystem>()->AbsoluteTransform(spawnPoint);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "Components/Vehicle.h"
|
||||
#include "Components/Player.h"
|
||||
#include "Components/Model.h"
|
||||
#include "Components/Team.h"
|
||||
#include "Systems/TransformSystem.h"
|
||||
#include "Systems/ParticleSystem.h"
|
||||
#include "InputController.h"
|
||||
|
||||
@@ -44,10 +44,18 @@ void Systems::TriggerSystem::OnEntityRemoved( EntityID entity )
|
||||
|
||||
bool Systems::TriggerSystem::OnEnterTrigger( const Events::EnterTrigger &event )
|
||||
{
|
||||
|
||||
|
||||
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 flagComponent1 = m_World->GetComponent<Components::Flag>(event.Trigger);
|
||||
auto flagComponent2 = m_World->GetComponent<Components::Flag>(event.Entity);
|
||||
|
||||
//HACK: SIMON IS DISSING AMERICA
|
||||
if(flagComponent1)
|
||||
{
|
||||
@@ -77,6 +85,17 @@ bool Systems::TriggerSystem::OnEnterTrigger( const Events::EnterTrigger &event )
|
||||
|
||||
bool Systems::TriggerSystem::OnLeaveTrigger( const Events::LeaveTrigger &event )
|
||||
{
|
||||
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 flagComponent1 = m_World->GetComponent<Components::Flag>(event.Trigger);
|
||||
auto flagComponent2 = m_World->GetComponent<Components::Flag>(event.Entity);
|
||||
|
||||
auto triggerMoveComponent = m_World->GetComponent<Components::TriggerMove>(event.Trigger);
|
||||
if (triggerMoveComponent)
|
||||
{
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "Components/Move.h"
|
||||
#include "Components/Rotate.h"
|
||||
#include "Components/Player.h"
|
||||
#include "Components/Team.h"
|
||||
#include "Events/Move.h"
|
||||
#include "Events/Rotate.h"
|
||||
#include <math.h>
|
||||
|
||||
Reference in New Issue
Block a user