X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Fsystem.h;h=3b379178c1b6e27972cd60f9bfa31441bafbebe2;hb=c7177adc21993307482b2c18dc4db6a03361586d;hp=9e6ec2a6e923e7ca6befd3f66ae0c67aa0119099;hpb=76d859d1429782901799c9886f833cd331b670ce;p=libs%2Fgame.git diff --git a/source/game/system.h b/source/game/system.h index 9e6ec2a..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,6 +12,7 @@ class System { protected: Stage &stage; + std::vector> deferred_queue; System(Stage &s): stage(s) { } public: @@ -19,6 +21,11 @@ public: Stage &get_stage() const { return stage; } virtual void tick(Time::TimeDelta) = 0; + virtual void deferred_tick(); + +protected: + template + void defer(F &&f) { deferred_queue.emplace_back(std::forward(f)); } }; } // namespace Msp::Game