From 8b00d67febf133e89f6a0bfabc41feed555dc4a9 Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 12 Jan 2019 21:48:33 +0800 Subject: =?UTF-8?q?*=E5=8E=BB=E6=8E=89=E6=96=87=E4=BB=B6=E5=89=8D=E7=BC=80?= =?UTF-8?q?je=5F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/game/application.h | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/libjin/game/application.h (limited to 'src/libjin/game/application.h') diff --git a/src/libjin/game/application.h b/src/libjin/game/application.h new file mode 100644 index 0000000..4c4f48b --- /dev/null +++ b/src/libjin/game/application.h @@ -0,0 +1,84 @@ +#ifndef __JE_CORE_GAME_H__ +#define __JE_CORE_GAME_H__ + +#include "../core/configuration.h" +#if defined(jin_game) + +#include "../common/subsystem.hpp" +#include "../utils/macros.h" +#include "../input/Event.h" + +#include "SDL2/SDL.h" + +namespace JinEngine +{ + namespace Game + { + + /// + /// Game class. + /// + class Application : public Subsystem + { + public: + typedef void(*onLoad)(); + typedef void(*onEvent)(JinEngine::Input::Event* e); + typedef void(*onUpdate)(int dt); + typedef void(*onDraw)(); + + Application(); + ~Application() {}; + + /// + /// Game setting. + /// + struct Setting : SettingBase + { + onEvent eventHandler; + onUpdate updater; + onDraw drawer; + onLoad loader; + }; + + /// + /// Main game loop. + /// + void run(); + + /// + /// Stop game. + /// + inline void stop() + { + _running = false; + }; + + /// + /// Return if game is running. + /// + /// @return True if game is running, otherwise return false. + /// + inline bool running() + { + return _running; + }; + + private: + onEvent _onEvent; + onUpdate _onUpdate; + onDraw _onDraw; + onLoad _onLoad; + + bool _running; + + bool startSystem(const SettingBase* setting); + void quitSystem(); + + }; + + } // namespace Core +} // namespace JinEngine + +#endif // jin_game + +#endif // __JE_CORE_GAME_H__ \ No newline at end of file -- cgit v1.1-26-g67d0