diff options
author | chai <chaifix@163.com> | 2018-07-28 13:47:51 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-07-28 13:47:51 +0800 |
commit | d033400614e7e2c0ff49e5100c81e937e5818e74 (patch) | |
tree | 82e011222e9d88b3f7dff239aefae4a2c100fef4 /src/libjin/Core | |
parent | 7b7a510321112978090575e89c3dabeba9ea9f97 (diff) |
*update
Diffstat (limited to 'src/libjin/Core')
-rw-r--r-- | src/libjin/Core/Game.cpp | 37 | ||||
-rw-r--r-- | src/libjin/Core/Game.h | 58 | ||||
-rw-r--r-- | src/libjin/Core/Thread.cpp | 0 | ||||
-rw-r--r-- | src/libjin/Core/Thread.h | 1 | ||||
-rw-r--r-- | src/libjin/Core/Timer.cpp | 0 | ||||
-rw-r--r-- | src/libjin/Core/Timer.h | 1 |
6 files changed, 59 insertions, 38 deletions
diff --git a/src/libjin/Core/Game.cpp b/src/libjin/Core/Game.cpp index 2090d64..f2223b2 100644 --- a/src/libjin/Core/Game.cpp +++ b/src/libjin/Core/Game.cpp @@ -1,17 +1,46 @@ #include "game.h" +#include "../Time/Timer.h" +#include "../input/Event.h" namespace jin { namespace core { - Game::Game() :_run(true) {}; + using namespace jin::input; + + Game::Game() :_running(true) {}; void Game::run() { + _running = true; + Event e; + while (_running) + { + while (jin::input::pollEvent(&e)) + { + if (_instance != nullptr && _onEvent) + _onEvent(&e); + } + if (!_running) + break; + } + } + + bool Game::initSystem(const SettingBase* setting) + { + if (setting == nullptr) + return false; + Game::Setting* s = (Game::Setting*) setting; + _onEvent = s->eventHandler; + _onUpdate = s->updater; + _onDraw = s->drawer; + return true; + } + void Game::quitSystem() + { } - -} -} +} // core +} // jin
\ No newline at end of file diff --git a/src/libjin/Core/Game.h b/src/libjin/Core/Game.h index becb780..e9d0340 100644 --- a/src/libjin/Core/Game.h +++ b/src/libjin/Core/Game.h @@ -1,40 +1,35 @@ #ifndef __JIN_CORE_GAME_H #define __JIN_CORE_GAME_H -#include <SDL2/SDL.h> +#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; }; + 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 diff --git a/src/libjin/Core/Thread.cpp b/src/libjin/Core/Thread.cpp deleted file mode 100644 index e69de29..0000000 --- a/src/libjin/Core/Thread.cpp +++ /dev/null diff --git a/src/libjin/Core/Thread.h b/src/libjin/Core/Thread.h deleted file mode 100644 index 6f70f09..0000000 --- a/src/libjin/Core/Thread.h +++ /dev/null @@ -1 +0,0 @@ -#pragma once diff --git a/src/libjin/Core/Timer.cpp b/src/libjin/Core/Timer.cpp deleted file mode 100644 index e69de29..0000000 --- a/src/libjin/Core/Timer.cpp +++ /dev/null diff --git a/src/libjin/Core/Timer.h b/src/libjin/Core/Timer.h deleted file mode 100644 index 6f70f09..0000000 --- a/src/libjin/Core/Timer.h +++ /dev/null @@ -1 +0,0 @@ -#pragma once |