/* * author: Patrick-Christopher Mattulat * e-mail: webmaster@lynarstudios.com */ #ifndef LS_ATLANTIS_ENGINE_CYCLE_ENGINE_HPP #define LS_ATLANTIS_ENGINE_CYCLE_ENGINE_HPP #include #include #include #include #include namespace ls::atlantis::cycle { class LS_ATLANTIS_DYNAMIC_GOAL Engine { public: explicit Engine(const ls::atlantis::cycle::EngineParameter &_parameter); ~Engine(); void beginFrame() const; void endFrame() const; [[nodiscard]] ::std::shared_ptr getData() const; [[nodiscard]] ::std::shared_ptr init() const; [[nodiscard]] bool isRunning() const; void quit() const; private: ::std::shared_ptr data{}; ls::atlantis::cycle::EngineParameter parameter{}; [[nodiscard]] ::std::shared_ptr _initEventManager() const; [[nodiscard]] ::std::shared_ptr _initKeyboard() const; [[nodiscard]] ::std::shared_ptr _initWindowApi() const; }; } #endif