aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Game/Game.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Game/Game.h')
-rw-r--r--src/libjin/Game/Game.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/libjin/Game/Game.h b/src/libjin/Game/Game.h
new file mode 100644
index 0000000..725c62c
--- /dev/null
+++ b/src/libjin/Game/Game.h
@@ -0,0 +1,58 @@
+#ifndef __LIBJIN_CORE_GAME_H
+#define __LIBJIN_CORE_GAME_H
+
+#include "SDL2/SDL.h"
+
+#include "../Common/Subsystem.hpp"
+#include "../utils/macros.h"
+#include "../Input/Event.h"
+
+namespace jin
+{
+namespace core
+{
+
+ class Game : public Subsystem<Game>
+ {
+ public:
+
+ typedef void(*onLoad)();
+ typedef void(*onEvent)(jin::input::Event* e);
+ typedef void(*onUpdate)(int dt);
+ typedef void(*onDraw)();
+
+ struct Setting : SettingBase
+ {
+ onEvent eventHandler;
+ onUpdate updater;
+ onDraw drawer;
+ onLoad loader;
+ };
+
+ void run();
+ inline void stop() { _running = false; };
+ inline bool running() { return _running; };
+
+ private:
+
+ Game();
+ ~Game() {};
+
+ SINGLETON(Game);
+
+ onEvent _onEvent;
+ onUpdate _onUpdate;
+ onDraw _onDraw;
+ onLoad _onLoad;
+
+ bool _running;
+
+ bool initSystem(const SettingBase* setting);
+ void quitSystem();
+
+ };
+
+} // core
+} // jin
+
+#endif // __LIBJIN_CORE_GAME_H