1 | #ifndef ENGINE_HPP_ |
2 | #define ENGINE_HPP_ |
3 |
|
4 |
|
5 | #include <chrono> |
6 | #include <atomic> |
7 | #include <vector> |
8 |
|
9 | #include "ZydecoCommon.hpp" |
10 | #include "ThreadLooping.hpp" |
11 | #include "IEventQuitSubscriber.hpp" |
12 | #include "IUpdateable.hpp" |
13 |
|
14 |
|
15 | class IEventHandler; |
16 | class ITimer; |
17 | class Renderer; |
18 |
|
19 |
|
20 | class Engine : public IEventQuitSubscriber |
21 | { |
22 | public: |
23 | Engine(IEventHandler& r_event_handler, ITimer& r_core_timer, Renderer& r_renderer); |
24 | ~Engine(); |
25 |
|
26 | void OnQuitEvent() override; |
27 |
|
28 | void Execute(); |
29 |
|
30 | protected: |
31 | IEventHandler& m_rEventHandler; |
32 | ITimer& m_rCoreTimer; |
33 | Renderer& m_rRenderer; |
34 |
|
35 | std::vector<ThreadLooping*> m_threads; |
36 | std::atomic<bool> m_aIsExiting; |
37 | }; |
38 |
|
39 |
|
40 | #endif /* ENGINE_HPP_ */ |
41 |
|