diff options
author | Andrei Karas <akaras@inbox.ru> | 2011-09-05 19:01:13 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2011-09-05 19:01:13 +0300 |
commit | ea946a63d1ec1726971a6e0a351a237611d89b02 (patch) | |
tree | b788468bd90b63fb997acef5dc127383c3c49133 | |
parent | 83117a93393329cc61a76614e4ca5686efa56154 (diff) | |
download | manaplus-ea946a63d1ec1726971a6e0a351a237611d89b02.tar.gz manaplus-ea946a63d1ec1726971a6e0a351a237611d89b02.tar.bz2 manaplus-ea946a63d1ec1726971a6e0a351a237611d89b02.tar.xz manaplus-ea946a63d1ec1726971a6e0a351a237611d89b02.zip |
Fix error with getting default configuration values.
-rw-r--r-- | src/configuration.cpp | 95 |
1 files changed, 83 insertions, 12 deletions
diff --git a/src/configuration.cpp b/src/configuration.cpp index 2524d6b93..a6ef27815 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -194,11 +194,32 @@ int Configuration::getIntValue(const std::string &key) const { DefaultsData::const_iterator itdef = mDefaultsData->find(key); - if (itdef != mDefaultsData->end() && itdef->second - && itdef->second->getType() == Mana::VariableData::DATA_INT) + if (itdef != mDefaultsData->end() && itdef->second) { - defaultValue = (static_cast<Mana::IntData*>( - itdef->second))->getData(); + if (itdef->second->getType() == Mana::VariableData::DATA_INT) + { + defaultValue = (static_cast<Mana::IntData*>( + itdef->second))->getData(); + } + else if (itdef->second->getType() + == Mana::VariableData::DATA_STRING) + { + defaultValue = atoi((static_cast<Mana::StringData*>( + itdef->second))->getData().c_str()); + } + else if (itdef->second->getType() + == Mana::VariableData::DATA_BOOL) + { + if ((static_cast<Mana::BoolData*>( + itdef->second))->getData()) + { + defaultValue = 1; + } + else + { + defaultValue = 0; + } + } } else { @@ -249,11 +270,33 @@ std::string Configuration::getStringValue(const std::string &key) const { DefaultsData::const_iterator itdef = mDefaultsData->find(key); - if (itdef != mDefaultsData->end() && itdef->second - && itdef->second->getType() == Mana::VariableData::DATA_STRING) + if (itdef != mDefaultsData->end() && itdef->second) { - defaultValue = (static_cast<Mana::StringData*>( - itdef->second))->getData(); + if (itdef->second->getType() + == Mana::VariableData::DATA_STRING) + { + defaultValue = (static_cast<Mana::StringData*>( + itdef->second))->getData(); + } + else if (itdef->second->getType() + == Mana::VariableData::DATA_BOOL) + { + if ((static_cast<Mana::BoolData*>( + itdef->second))->getData()) + { + defaultValue = "1"; + } + else + { + defaultValue = "0"; + } + } + else if (itdef->second->getType() + == Mana::VariableData::DATA_INT) + { + defaultValue = toString((static_cast<Mana::IntData*>( + itdef->second))->getData()); + } } else { @@ -312,11 +355,39 @@ bool Configuration::getBoolValue(const std::string &key) const { DefaultsData::const_iterator itdef = mDefaultsData->find(key); - if (itdef != mDefaultsData->end() && itdef->second - && itdef->second->getType() == Mana::VariableData::DATA_BOOL) + if (itdef != mDefaultsData->end() && itdef->second) { - defaultValue = (static_cast<Mana::BoolData*>( - itdef->second))->getData(); + if (itdef->second->getType() == Mana::VariableData::DATA_BOOL) + { + defaultValue = (static_cast<Mana::BoolData*>( + itdef->second))->getData(); + } + else if (itdef->second->getType() + == Mana::VariableData::DATA_INT) + { + if ((static_cast<Mana::IntData*>( + itdef->second))->getData() != 0) + { + defaultValue = true; + } + else + { + defaultValue = false; + } + } + else if (itdef->second->getType() + == Mana::VariableData::DATA_STRING) + { + if ((static_cast<Mana::StringData*>( + itdef->second))->getData() != "0") + { + defaultValue = true; + } + else + { + defaultValue = false; + } + } } else { |