X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Fsystem.h;h=3b379178c1b6e27972cd60f9bfa31441bafbebe2;hb=c7177adc21993307482b2c18dc4db6a03361586d;hp=88ba291fb50bcb05e9881014f5e6096f34939daa;hpb=248d62f7240d342982ade65a510be912b867fe49;p=libs%2Fgame.git diff --git a/source/game/system.h b/source/game/system.h index 88ba291..3b37917 100644 --- a/source/game/system.h +++ b/source/game/system.h @@ -1,6 +1,7 @@ #ifndef MSP_GAME_SYSTEM_H_ #define MSP_GAME_SYSTEM_H_ +#include #include namespace Msp::Game { @@ -11,14 +12,20 @@ class System { protected: Stage &stage; + std::vector> deferred_queue; System(Stage &s): stage(s) { } public: virtual ~System() = default; - virtual void pre_tick() = 0; + Stage &get_stage() const { return stage; } + virtual void tick(Time::TimeDelta) = 0; - virtual void post_tick() = 0; + virtual void deferred_tick(); + +protected: + template + void defer(F &&f) { deferred_queue.emplace_back(std::forward(f)); } }; } // namespace Msp::Game