1 #ifndef MSP_GAME_SYSTEM_H_
2 #define MSP_GAME_SYSTEM_H_
5 #include <msp/time/timedelta.h>
15 std::vector<std::function<void()>> deferred_queue;
17 System(Stage &s): stage(s) { }
19 virtual ~System() = default;
21 Stage &get_stage() const { return stage; }
23 virtual void tick(Time::TimeDelta) = 0;
24 virtual void deferred_tick();
28 void defer(F &&f) { deferred_queue.emplace_back(std::forward<F>(f)); }
31 } // namespace Msp::Game