aboutsummaryrefslogtreecommitdiffstats
path: root/include/engine.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/engine.hpp')
-rw-r--r--include/engine.hpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/engine.hpp b/include/engine.hpp
index 0fabdb3..2bde6de 100644
--- a/include/engine.hpp
+++ b/include/engine.hpp
@@ -5,13 +5,49 @@
#include <events.hpp>
+class Engine : public entityx::Receiver<Engine> {
+private:
+ bool gameRunning;
+
+public:
+ entityx::SystemManager systems;
+
+ explicit Engine(void);
+
+ void init(void);
+ void render(entityx::TimeDelta dt);
+ void update(entityx::TimeDelta dt);
+
+ template<typename T>
+ inline T* getSystem(void) {
+ return dynamic_cast<T*>(systems.system<T>().get());
+ }
+
+ /*void configure(entityx::EventManager &ev) {
+ (void)ev;
+ }*/
+
+ inline void receive(const GameEndEvent &gee) {
+ gameRunning = !(gee.really);
+ }
+
+ inline bool shouldRun(void) const {
+ return gameRunning;
+ }
+};
+
+
namespace game {
extern entityx::EventManager events;
extern entityx::EntityManager entities;
+ extern Engine engine;
+
inline void endGame(void) {
events.emit<GameEndEvent>();
}
}
+
+
#endif // ENGINE_HPP_