diff options
Diffstat (limited to 'src/crepe/system/System.h')
-rw-r--r-- | src/crepe/system/System.h | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/crepe/system/System.h b/src/crepe/system/System.h index ecbb7f5..063dfbf 100644 --- a/src/crepe/system/System.h +++ b/src/crepe/system/System.h @@ -1,22 +1,30 @@ #pragma once +#include "../manager/Mediator.h" + namespace crepe { +class ComponentManager; + +/** + * \brief Base ECS system class + * + * This class is used as the base for all system classes. Classes derived from System must + * implement the System::update() method and copy Script::Script with the `using`-syntax. + */ class System { public: - static System & get_instance(); + /** + * \brief Process all components this system is responsible for. + */ virtual void update() = 0; -protected: - System() {}; - virtual ~System() {}; +public: + System(const Mediator & m); + virtual ~System() = default; -private: - // singleton - System(const System &) = delete; - System(System &&) = delete; - System & operator=(const System &) = delete; - System & operator=(System &&) = delete; +protected: + const Mediator & mediator; }; } // namespace crepe |