将Config配置设置改为指针传值

This commit is contained in:
Nomango 2018-07-07 11:00:41 +08:00
parent c0acf3a56c
commit c8e8a38685
6 changed files with 25 additions and 16 deletions

View File

@ -9,13 +9,15 @@ e2d::Game * e2d::Game::_instance = nullptr;
e2d::Game::Game()
: _ended(false)
, _paused(false)
, _config()
, _config(nullptr)
{
CoInitialize(nullptr);
}
e2d::Game::~Game()
{
GC::safeRelease(_config);
CoUninitialize();
}
@ -65,10 +67,9 @@ void e2d::Game::start(bool cleanup)
// 判断是否达到了刷新状态
if (Time::__isReady())
{
// 更新配置
if (_config._unconfigured)
if (_config->_unconfigured)
{
_config._update();
_config->_update();
}
input->update(); // 获取用户输入
@ -115,14 +116,21 @@ bool e2d::Game::isPaused()
return _paused;
}
void e2d::Game::setConfig(const Config& config)
void e2d::Game::setConfig(Config* config)
{
_config = config;
_config._unconfigured = true;
if (config && _config != config)
{
GC::release(_config);
_config = config;
_config->_unconfigured = true;
GC::retain(_config);
}
}
e2d::Config e2d::Game::getConfig() const
e2d::Config* e2d::Game::getConfig()
{
if (!_config)
_config = new (e2d::autorelease) Config();
return _config;
}

View File

@ -20,7 +20,7 @@ void e2d::Scene::_render()
{
_root->_render();
if (Game::getInstance()->getConfig().isColliderVisible())
if (Game::getInstance()->getConfig()->isColliderVisible())
{
// 恢复矩阵转换
Renderer::getInstance()->getRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity());

View File

@ -43,7 +43,7 @@ void e2d::ColliderManager::clearAll()
void e2d::ColliderManager::__updateCollider(e2d::Collider * pActiveCollider)
{
// 判断碰撞监听是否打开
if (!Game::getInstance()->getConfig().isCollisionEnabled())
if (!Game::getInstance()->getConfig()->isCollisionEnabled())
return;
Node* pActiveNode = pActiveCollider->_parentNode;

View File

@ -33,7 +33,7 @@ e2d::String e2d::Path::getDataPath()
{
// 设置数据的保存路径
String localAppDataPath = Path::getLocalAppDataPath();
String gameName = Game::getInstance()->getConfig().getGameName();
String gameName = Game::getInstance()->getConfig()->getGameName();
if (!localAppDataPath.isEmpty() && !gameName.isEmpty())
{
_dataPath = localAppDataPath + L"\\Easy2DGameData\\" << gameName << L"\\";
@ -54,7 +54,7 @@ e2d::String e2d::Path::getTempPath()
{
// 设置临时文件保存路径
wchar_t path[_MAX_PATH];
String gameName = Game::getInstance()->getConfig().getGameName();
String gameName = Game::getInstance()->getConfig()->getGameName();
if (0 != ::GetTempPath(_MAX_PATH, path) && !gameName.isEmpty())
{

View File

@ -42,11 +42,11 @@ public:
// ÐÞ¸ÄÓÎÏ·ÅäÖÃ
void setConfig(
const Config& config
Config* config
);
// »ñÈ¡ÓÎÏ·ÅäÖÃ
Config getConfig() const;
Config* getConfig();
private:
Game();
@ -58,7 +58,7 @@ private:
private:
bool _ended;
bool _paused;
Config _config;
Config* _config;
static Game * _instance;
};

View File

@ -734,7 +734,8 @@ protected:
class Game;
// モホマキナ葷テ
class Config
class Config :
public Ref
{
friend class Game;