65 lines
1.5 KiB
C++
65 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <list>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include "Game/SaveMap/ISave.h"
|
|
|
|
class SaveMap;
|
|
class RenderEngineBase;
|
|
class GameInstance;
|
|
struct GLFWwindow;
|
|
|
|
/*
|
|
* Внимательно следите, что бы у ваших объектов была "мягкая" зависимость
|
|
*/
|
|
class CoreInstance {
|
|
struct Module {
|
|
const char* name;
|
|
void* handler;
|
|
};
|
|
|
|
struct MainConfig final : ISave
|
|
{
|
|
std::string game_name;
|
|
std::string base_world;
|
|
std::vector<std::string> modules_names;
|
|
|
|
double min_memory_size = -1;
|
|
long long min_CPU_count = -1;
|
|
|
|
std::shared_ptr<SaveMap> save() override;
|
|
void load(std::shared_ptr<SaveMap> save) override;
|
|
};
|
|
|
|
const char* main_config_name = "main_config.conf";
|
|
MainConfig main_config_;
|
|
|
|
int countCPU_;
|
|
// Memory in MB
|
|
double memorySize_;
|
|
std::list<Module> modules_;
|
|
|
|
GLFWwindow* window_ = nullptr;
|
|
RenderEngineBase* render_engine_;
|
|
GameInstance* game_;
|
|
|
|
bool is_ready = false;
|
|
public:
|
|
CoreInstance();
|
|
~CoreInstance();
|
|
|
|
void start();
|
|
void quit();
|
|
|
|
bool IsReady() const { return is_ready; }
|
|
int getCountCPU() const { return countCPU_; }
|
|
double getMemorySize() const { return memorySize_; }
|
|
const std::string& getBaseWorldName() const { return main_config_.base_world; }
|
|
const std::string& getGameName() const { return main_config_.game_name; }
|
|
GameInstance* GetGameInstance() const { return game_; }
|
|
RenderEngineBase* GetRenderEngine() const { return render_engine_; }
|
|
};
|