1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00
* simplify JSON values getting
* ensure initialization of Bonus fields
This commit is contained in:
alexvins 2013-03-14 17:21:16 +00:00
parent 9e7fe4d011
commit f686edc1b8
4 changed files with 14 additions and 23 deletions

View File

@ -23,17 +23,13 @@
static inline void jsonSetString(const JsonNode& source, const std::string& name, std::string& dest)
{
const JsonNode& val = source[name];
if(!val.isNull())
{
dest = val.String();
}
dest = source[name].String();//null->empty string
}
static inline void jsonSetBool(const JsonNode& source, const std::string& name, bool& dest)
{
const JsonNode& val = source[name];
if(!val.isNull())
if(!val.isNull()) //do not rely on default value
{
dest = val.Bool();
}

View File

@ -532,9 +532,7 @@ void CSpellHandler::load()
const JsonNode & graphicsNode = spell.second["graphics"];
if (!graphicsNode.isNull())
{
const JsonNode& iconImmune = graphicsNode["iconImmune"];
if (!iconImmune.isNull())
s->iconImmune = iconImmune.String();
s->iconImmune = graphicsNode["iconImmune"].String();
}
}
}

View File

@ -1146,13 +1146,18 @@ Bonus::Bonus(ui16 Dur, BonusType Type, BonusSource Src, si32 Val, ui32 ID, si32
effectRange = NO_LIMIT;
}
Bonus::Bonus()
Bonus::Bonus()
{
duration = PERMANENT;
turnsRemain = 0;
type = NONE;
subtype = -1;
additionalInfo = -1;
turnsRemain = 0;
valType = ADDITIVE_VALUE;
effectRange = NO_LIMIT;
val = 0;
source = OTHER;
}
Bonus::~Bonus()

View File

@ -965,9 +965,7 @@ Bonus * JsonUtils::parseBonus (const JsonNode &ability)
resolveIdentifier (b->subtype, ability, "subtype");
value = &ability["val"];
if (!value->isNull())
b->val = value->Float();
b->val = ability["val"].Float();
value = &ability["valueType"];
if (!value->isNull())
@ -975,17 +973,11 @@ Bonus * JsonUtils::parseBonus (const JsonNode &ability)
resolveIdentifier (b->additionalInfo, ability, "addInfo");
value = &ability["turns"];
if (!value->isNull())
b->turnsRemain = value->Float();
b->turnsRemain = ability["turns"].Float();
value = &ability["sourceID"];
if (!value->isNull())
b->sid = value->Float();
b->sid = ability["sourceID"].Float();
value = &ability["description"];
if (!value->isNull())
b->description = value->String();
b->description = ability["description"].String();
value = &ability["effectRange"];
if (!value->isNull())