#ifndef __MCS_ENGINE_HPP__ #define __MCS_ENGINE_HPP__ #include #include #include #include #include #include /// Magic Srolls engine core class MscEngine : public IMscEngineModuleAPI { private: using clock = std::chrono::steady_clock; /// @brief Loaded modules list std::vector> _modules; /// @brief Common event bus MscEventBus _bus; /// @brief Is engine running rn bool _isRunning = false; /// @brief Last update time clock::time_point _lastUpdate; public: /// Actual version static uint16_t REV; MscEngine(std::vector> modules); /// @brief Start engine void start(); /// @brief Stop engine void stop(); MscEventBus &getBus() override; std::unordered_map getLoadedModules() const override; MscEngineModule &getModule(const std::string &name) override; std::unique_ptr createDBProvider() override; std::unique_ptr createDBProvider(const std::string &filepath) override; }; #endif // __MCS_ENGINE_HPP__