Created "EntitySystem" class as means to group a World with a SystemPipeline
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
#ifndef EntitySystem_h__
|
||||
#define EntitySystem_h__
|
||||
|
||||
#include "World.h"
|
||||
#include "SystemPipeline.h"
|
||||
|
||||
// An "EntitySystem" is defined as the combination of a World with a SystemPipeline
|
||||
template <typename WorldType>
|
||||
class EntitySystem : public WorldType, public SystemPipeline
|
||||
{
|
||||
static_assert(std::is_base_of<World, WorldType>::value, "WorldType must inherit from World");
|
||||
public:
|
||||
EntitySystem(EventBroker* eventBroker, bool isClient, bool isServer)
|
||||
: WorldType(eventBroker)
|
||||
, SystemPipeline(this, eventBroker, isClient, isServer)
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,18 @@
|
||||
#include "Core/EntitySystem.h"
|
||||
#include "Rendering/IRenderer.h"
|
||||
#include "Core/Octree.h"
|
||||
#include "Collision/EntityAABB.h"
|
||||
|
||||
class CapturePointsEntitySystem : public EntitySystem<World>
|
||||
{
|
||||
public:
|
||||
CapturePointsEntitySystem(EventBroker* eventBroker, bool isClient, bool isServer, IRenderer* renderer, RenderFrame* renderFrame);
|
||||
~CapturePointsEntitySystem();
|
||||
|
||||
private:
|
||||
IRenderer* m_Renderer;
|
||||
RenderFrame* m_RenderFrame;
|
||||
Octree<EntityAABB>* m_OctreeCollision = nullptr;
|
||||
Octree<EntityAABB>* m_OctreeTrigger = nullptr;
|
||||
Octree<EntityAABB>* m_OctreeFrustrumCulling = nullptr;
|
||||
};
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef EGameEnd_h__
|
||||
#define EGameEnd_h__
|
||||
|
||||
#include "Core/Event.h"
|
||||
|
||||
namespace Events
|
||||
{
|
||||
|
||||
struct GameEnd : Event
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef EGameStart_h__
|
||||
#define EGameStart_h__
|
||||
|
||||
#include "Core/Event.h"
|
||||
|
||||
namespace Events
|
||||
{
|
||||
|
||||
struct GameStart : Event
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -10,8 +10,8 @@ namespace Events
|
||||
//triggers when a team has captured all capturePoints
|
||||
struct Win : Event
|
||||
{
|
||||
//can be 0 = none, 1,2
|
||||
int TeamThatWon;
|
||||
// The winning team corresponding to TeamEnum
|
||||
ComponentInfo::EnumType Team;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
+3
-9
@@ -12,18 +12,16 @@
|
||||
#include "Input/InputProxy.h"
|
||||
#include "Input/KeyboardInputHandler.h"
|
||||
#include "Input/MouseInputHandler.h"
|
||||
#include "Core/EKeyDown.h"
|
||||
#include "Core/EntityFilePreprocessor.h"
|
||||
#include "Core/SystemPipeline.h"
|
||||
#include "Core/EntitySystem.h"
|
||||
#include "Systems/ExplosionEffectSystem.h"
|
||||
#include "Editor/EditorSystem.h"
|
||||
#include "Core/EntityFile.h"
|
||||
#include "Rendering/RenderSystem.h"
|
||||
#include "Core/EntityFileParser.h"
|
||||
#include "Core/Octree.h"
|
||||
#include "Rendering/Font.h"
|
||||
#include "Systems/InterpolationSystem.h"
|
||||
#include "Collision/EntityAABB.h"
|
||||
|
||||
// Network
|
||||
#include <boost/thread.hpp>
|
||||
#include "Network/Network.h"
|
||||
@@ -55,11 +53,7 @@ private:
|
||||
IRenderer* m_Renderer;
|
||||
InputManager* m_InputManager;
|
||||
InputProxy* m_InputProxy;
|
||||
World* m_World;
|
||||
Octree<EntityAABB>* m_OctreeCollision;
|
||||
Octree<EntityAABB>* m_OctreeTrigger;
|
||||
Octree<EntityAABB>* m_OctreeFrustrumCulling;
|
||||
SystemPipeline* m_SystemPipeline;
|
||||
EntitySystem<World>* m_EntitySystem;
|
||||
RenderFrame* m_RenderFrame;
|
||||
Client* m_NetworkClient = nullptr;
|
||||
Server* m_NetworkServer = nullptr;
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
#include "Core/System.h"
|
||||
#include "Engine/Collision/ETrigger.h"
|
||||
#include "Events/ECaptured.h"
|
||||
#include "Events/EWin.h"
|
||||
|
||||
#include <tuple>
|
||||
#include <vector>
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#include "Core/System.h"
|
||||
#include "Events/EGameStart.h"
|
||||
#include "Events/EGameEnd.h"
|
||||
#include "Events/ECaptured.h"
|
||||
#include "Events/EWin.h"
|
||||
|
||||
class CapturePointsGamemode : public ImpureSystem
|
||||
{
|
||||
public:
|
||||
CapturePointsGamemode(SystemParams params);
|
||||
|
||||
virtual void Update(double dt) override;
|
||||
|
||||
private:
|
||||
bool m_GameRuning = false;
|
||||
double m_GameTime = 0.0;
|
||||
|
||||
EventRelay<CapturePointsGamemode, Events::GameStart> m_EGameStart;
|
||||
bool OnGameStart(const Events::GameStart& e);
|
||||
EventRelay<CapturePointsGamemode, Events::Captured> m_ECaptured;
|
||||
bool OnCaptured(const Events::Captured& e);
|
||||
|
||||
boost::optional<ComponentWrapper> currentGamemode();
|
||||
bool isCurrentGamemode();
|
||||
boost::optional<ComponentInfo::EnumType> winCondition();
|
||||
void setRunning(bool running);
|
||||
};
|
||||
Reference in New Issue
Block a user