diff options
Diffstat (limited to 'libjin/Core/Game.h')
-rw-r--r-- | libjin/Core/Game.h | 56 |
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 |