From 6936cd980086e9dfb46f89e03dfee15288350644 Mon Sep 17 00:00:00 2001 From: zilmar Date: Wed, 13 Feb 2013 07:01:46 +1100 Subject: [PATCH] Settings: Update to allow the use of cfg and rdb file for a game setting --- Source/Project64/Settings/Settings Class.cpp | 8 ++++++-- Source/Project64/Settings/Settings Class.h | 1 + Source/Settings/Settings.cpp | 5 ++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Source/Project64/Settings/Settings Class.cpp b/Source/Project64/Settings/Settings Class.cpp index c434adf3a..4609ae90a 100644 --- a/Source/Project64/Settings/Settings Class.cpp +++ b/Source/Project64/Settings/Settings Class.cpp @@ -31,7 +31,8 @@ CSettings * g_Settings = NULL; -CSettings::CSettings() +CSettings::CSettings() : + m_NextAutoSettingId(0x200000) { } @@ -416,7 +417,10 @@ void CSettings::RegisterSetting ( CSettings * _this, SettingID ID, SettingID Def case Data_DWORD: if (DefaultID == Default_None) { - _this->AddHandler(ID,new CSettingTypeGame(Name.c_str(),Value)); + SettingID RdbSetting = (SettingID)_this->m_NextAutoSettingId; + _this->m_NextAutoSettingId += 1; + _this->AddHandler(RdbSetting,new CSettingTypeRomDatabase(Name.c_str(),(int)Value)); + _this->AddHandler(ID,new CSettingTypeGame(Name.c_str(),RdbSetting)); } else { _this->AddHandler(ID,new CSettingTypeGame(Name.c_str(),DefaultID)); } diff --git a/Source/Project64/Settings/Settings Class.h b/Source/Project64/Settings/Settings Class.h index e0bfc507f..73b52a64d 100644 --- a/Source/Project64/Settings/Settings Class.h +++ b/Source/Project64/Settings/Settings Class.h @@ -118,6 +118,7 @@ private: SETTING_MAP m_SettingInfo; SETTING_CALLBACK m_Callback; + int m_NextAutoSettingId; }; extern CSettings * g_Settings; diff --git a/Source/Settings/Settings.cpp b/Source/Settings/Settings.cpp index 383277c14..8c7b2b141 100644 --- a/Source/Settings/Settings.cpp +++ b/Source/Settings/Settings.cpp @@ -92,8 +92,11 @@ void RegisterSetting ( short SettingID, SETTING_DATA_TYPE Type, const char * switch (Type) { - case Data_DWORD_General: case Data_DWORD_Game: + g_PluginSettings.RegisterSetting(g_PluginSettings.handle,SettingID + g_PluginSettings.SettingStartRange, + g_PluginSettings.NoDefault,Data_DWORD,Location,FullCategory,Name,DefaultDW); + break; + case Data_DWORD_General: case Data_DWORD_RDB: if (DefaultDW != 0) {