mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 19:19:56 +00:00
add method for keeping track of settings that changed
This commit is contained in:
parent
55c984c179
commit
308df7caa8
2 changed files with 20 additions and 1 deletions
|
@ -9,6 +9,7 @@ using namespace Settings;
|
|||
|
||||
Ogre::ConfigFile Manager::mFile = Ogre::ConfigFile();
|
||||
Ogre::ConfigFile Manager::mDefaultFile = Ogre::ConfigFile();
|
||||
SettingCategoryVector Manager::mChangedSettings = SettingCategoryVector();
|
||||
|
||||
void Manager::loadUser (const std::string& file)
|
||||
{
|
||||
|
@ -77,8 +78,11 @@ void Manager::setString (const std::string& setting, const std::string& category
|
|||
{
|
||||
Ogre::ConfigFile::SettingsMultiMap::iterator i = it.current();
|
||||
|
||||
if ((*i).first == setting)
|
||||
if ((*i).first == setting && (*i).second != value)
|
||||
{
|
||||
mChangedSettings.push_back(std::make_pair(setting, category));
|
||||
(*i).second = value;
|
||||
}
|
||||
|
||||
it.getNext();
|
||||
}
|
||||
|
@ -98,3 +102,10 @@ void Manager::setBool (const std::string& setting, const std::string& category,
|
|||
{
|
||||
setString(setting, category, Ogre::StringConverter::toString(value));
|
||||
}
|
||||
|
||||
const SettingCategoryVector Manager::apply()
|
||||
{
|
||||
SettingCategoryVector vec = mChangedSettings;
|
||||
mChangedSettings.clear();
|
||||
return vec;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
namespace Settings
|
||||
{
|
||||
typedef std::vector< std::pair<std::string, std::string> > SettingCategoryVector;
|
||||
|
||||
///
|
||||
/// \brief Settings management (can change during runtime)
|
||||
|
@ -12,9 +13,13 @@ namespace Settings
|
|||
class Manager
|
||||
{
|
||||
public:
|
||||
|
||||
static Ogre::ConfigFile mFile;
|
||||
static Ogre::ConfigFile mDefaultFile;
|
||||
|
||||
static SettingCategoryVector mChangedSettings;
|
||||
///< tracks all the settings that were changed since the last apply() call
|
||||
|
||||
void loadDefault (const std::string& file);
|
||||
///< load file as the default settings (can be overridden by user settings)
|
||||
|
||||
|
@ -27,6 +32,9 @@ namespace Settings
|
|||
void saveUser (const std::string& file);
|
||||
///< save user settings to file
|
||||
|
||||
const SettingCategoryVector apply();
|
||||
///< returns the list of changed settings and then clears it
|
||||
|
||||
static const int getInt (const std::string& setting, const std::string& category);
|
||||
static const float getFloat (const std::string& setting, const std::string& category);
|
||||
static const std::string getString (const std::string& setting, const std::string& category);
|
||||
|
|
Loading…
Reference in a new issue