1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-09-16 09:26:28 +02:00

Added TIMES_ARMY_SIZE updater

This commit is contained in:
Ivan Savenko
2025-06-26 15:10:55 +03:00
parent dec4826b54
commit 135768e763
5 changed files with 141 additions and 0 deletions

View File

@@ -428,6 +428,35 @@ static TUpdaterPtr parseUpdater(const JsonNode & updaterJson)
}
return std::make_shared<TimesStackSizeUpdater>(minimum, maximum, std::max(1, stepSize));
}
if(updaterJson["type"].String() == "TIMES_ARMY_SIZE")
{
auto result = std::make_shared<TimesArmySizeUpdater>();
result->minimum = updaterJson["minimum"].isNull() ? std::numeric_limits<int>::min() : updaterJson["minimum"].Integer();
result->maximum = updaterJson["maximum"].isNull() ? std::numeric_limits<int>::max() : updaterJson["maximum"].Integer();
result->stepSize = updaterJson["stepSize"].isNull() ? 1 : updaterJson["stepSize"].Integer();
result->filteredLevel = updaterJson["filteredLevel"].isNull() ? -1 : updaterJson["filteredLevel"].Integer();
if (result->minimum > result->maximum)
{
logMod->warn("TIMES_ARMY_SIZE updater: minimum value (%d) is above maximum value(%d)!", result->minimum, result->maximum);
std::swap(result->minimum, result->maximum);
}
if (!updaterJson["filteredFaction"].isNull())
{
LIBRARY->identifiers()->requestIdentifier( "faction", updaterJson["filteredFaction"], [result](int32_t identifier)
{
result->filteredFaction = FactionID(identifier);
});
}
if (!updaterJson["filteredCreature"].isNull())
{
LIBRARY->identifiers()->requestIdentifier( "creature", updaterJson["filteredCreature"], [result](int32_t identifier)
{
result->filteredCreature = CreatureID(identifier);
});
}
return result;
}
else
logMod->warn("Unknown updater type \"%s\"", updaterJson["type"].String());
break;