/****************************************************************************** * File - core.h * Author - Joey Pollack * Date - 2021/08/30 (y/m/d) * Mod Date - 2021/08/30 (y/m/d) * Description - The Core Engine Class. Manages the engine components. ******************************************************************************/ #ifndef CORE_H_ #define CORE_H_ #include "state.h" #include #include #include #include namespace lunarium { class GUI; class IGraphics; class Window; class Core { public: static Core& GetInstance(); static void Shutdown(); void Initialize(int argc, char** argv); bool IsInit() const; const State& GetState() const; void ApplyState(State newState); void RunGameLoop(); private: // DATA static Core* mpInstance; bool mbIsInit; State mState; Args* mpArgs; FrameCounter mFrameCounter; // Log Files std::ofstream mMasterLogFile; std::ofstream mErrorLogFile; private: // SUBSYSTEMS Window* mpWindow; IGraphics* mpGraphics; InputManager* mpInput; GUI& mGUI; InputManager::_KeyEvents mKeyEvents; private: // HIDDEN METHODS Core(); Core(const Core&) = delete; Core& operator=(const Core&) = delete; }; } #endif // CORE_H_