diff options
author | Andy <drumsetmonkey@gmail.com> | 2019-08-29 13:07:45 -0400 |
---|---|---|
committer | Andy <drumsetmonkey@gmail.com> | 2019-08-29 13:07:45 -0400 |
commit | 4ac4b280abf2ffa28caa5a532353115a3033444f (patch) | |
tree | 2a13d658bb454360b2faf401244bb0321d3460d4 /src/engine.hpp | |
parent | e9758416b18b27a65337c28d9641afc0ee89b34b (diff) | |
parent | 7a46fa2dd3dad3f038bf8e7339bc67abca428ae6 (diff) |
Started creating scripting library/namespace and added sol2 for interfacing
Diffstat (limited to 'src/engine.hpp')
-rw-r--r-- | src/engine.hpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/engine.hpp b/src/engine.hpp new file mode 100644 index 0000000..fb14093 --- /dev/null +++ b/src/engine.hpp @@ -0,0 +1,65 @@ +/** + * @file window.hpp + * Manages all game systems. + * + * Copyright (C) 2019 Clyne Sullivan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +#ifndef ENGINE_HPP_ +#define ENGINE_HPP_ + +#include <entityx/entityx.h> + +#include <thread> + +/** + * @class Engine + * Manages all game entities, events, and systems. + */ +class Engine +{ +private: + entityx::EventManager events; + entityx::EntityManager entities; + entityx::SystemManager systems; + + std::thread logicThread; + + void logicLoop(void); + void renderLoop(void); + + bool shouldRun(void); + +public: + Engine(void) : + entities(events), + systems(entities, events) {} + + /** + * Initializes the game engine. + * @return Zero on success, non-zero otherwise + */ + int init(void); + + /** + * Runs the game engine. + * Function returns when game is told to end/exit. + */ + void run(void); +}; + +#endif // ENGINE_HPP_ + |