/* * 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 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]] ls::atlantis::interfaces::AStatusCode init() const; [[nodiscard]] bool isRunning() const; void quit() const; private: ::std::shared_ptr data{}; ls::atlantis::cycle::EngineParameter parameter{}; [[nodiscard]] ls::atlantis::interfaces::AStatusCode _initEventManager() const; [[nodiscard]] ls::atlantis::interfaces::AStatusCode _initKeyboard() const; [[nodiscard]] ls::atlantis::interfaces::AStatusCode _initWindowApi() const; }; } #endif