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