You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lunarium_OLD/src/core/core.h

61 lines
1.3 KiB
C

/******************************************************************************
* 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_
4 years ago
#include "state.h"
#include <utils/Logger.h>
#include <utils/args.h>
#include <utils/FrameCounter.h>
4 years ago
namespace lunarium
{
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;
4 years ago
State mState;
Args* mpArgs;
FrameCounter mFrameCounter;
// Log Files
std::ofstream mMasterLogFile;
std::ofstream mErrorLogFile;
private: // SUBSYSTEMS
Window* mpWindow;
IGraphics* mpGraphics;
private: // HIDDEN METHODS
Core();
Core(const Core&) = delete;
Core& operator=(const Core&) = delete;
};
}
#endif // CORE_H_