/****************************************************************************** * 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 "iRunMode.h" #include #include #include #include namespace lunarium { class Image; class Tester; 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(); OpRes BeginRenderToTexture(); Image* EndRenderToTexture(); private: // DATA static Core* mpInstance; bool mbIsInit; State mState; Args* mpArgs; FrameCounter mFrameCounter; iRunMode* mpRunMode; bool mbMidRender; bool mbMidTextureRender; // 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; private: // RUN MODES Tester* mpTester; }; } #endif // CORE_H_