aboutsummaryrefslogtreecommitdiff
path: root/libjin/Core/Game.h
diff options
context:
space:
mode:
Diffstat (limited to 'libjin/Core/Game.h')
-rw-r--r--libjin/Core/Game.h56
1 files changed, 25 insertions, 31 deletions
diff --git a/libjin/Core/Game.h b/libjin/Core/Game.h
index 3928943..7ae1855 100644
--- a/libjin/Core/Game.h
+++ b/libjin/Core/Game.h
@@ -3,38 +3,33 @@
#include "SDL2/SDL.h"
-#include "../common/singleton.h"
+#include "../Common/Subsystem.hpp"
#include "../utils/macros.h"
+#include "../Input/Event.h"
namespace jin
{
namespace core
{
- class Game : public Singleton<Game>
+
+ class Game : public Subsystem<Game>
{
public:
- struct Setting
- {
+ typedef void(*onEvent)(jin::input::Event* e);
+ typedef void(*onUpdate)(float dt);
+ typedef void(*onDraw)();
- };
-
- inline void quit()
+ struct Setting : SettingBase
{
- CALLONCE(_quit());
- }
-
- inline bool running()
- {
- return run;
- }
-
- inline void exit()
- {
- CALLONCE(_exit());
- }
+ onEvent eventHandler;
+ onUpdate updater;
+ onDraw drawer;
+ };
void run();
+ inline void stop() { _running = false; };
+ inline bool running() { return _running; };
private:
@@ -43,19 +38,18 @@ namespace core
SINGLETON(Game);
- bool _run;
+ onEvent _onEvent;
+ onUpdate _onUpdate;
+ onDraw _onDraw;
- inline void _exit()
- {
- SDL_Quit();
- }
+ bool _running;
+
+ onlyonce bool initSystem(const SettingBase* setting);
+ onlyonce void quitSystem();
- inline void _quit()
- {
- _run = false;
- }
};
-}
-}
-#endif \ No newline at end of file
+} // core
+} // jin
+
+#endif // __JIN_CORE_GAME_H \ No newline at end of file