X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Fsystem.h;h=09ee157a6953916522702cf0543ac75872f8ac78;hb=e4f03880d49bdbe0c7269be0f40f23b197bcea77;hp=8c9c8b1316428258c2c4e3f84858386a75f73a20;hpb=423b49f2857f8e1597b652bfd41dbf3ae45f7ec5;p=libs%2Fgame.git diff --git a/source/game/system.h b/source/game/system.h index 8c9c8b1..09ee157 100644 --- a/source/game/system.h +++ b/source/game/system.h @@ -27,8 +27,11 @@ public: ORDER_MASK = 24 }; - struct Dependency + class Dependency { + friend class System; + + private: DependencyFlags flags = NO_DEPENDENCY; const Reflection::ClassBase &type; void (*prepare)(Stage &) = nullptr; @@ -36,7 +39,11 @@ public: void (*unblock)(DependencyFlags) = nullptr; void (*block)(DependencyFlags) = nullptr; + public: Dependency(const Reflection::ClassBase &t): type(t) { } + + DependencyFlags get_flags() const { return flags; } + const Reflection::ClassBase &get_type() const { return type; } }; class Activator: public NonCopyable @@ -67,6 +74,8 @@ protected: void declare_dependency(DependencyFlags); public: + const std::vector &get_dependencies() const { return dependencies; } + void begin_tick(); virtual void tick(Time::TimeDelta) = 0; void end_tick();