mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-25 22:42:04 +02:00
Exposed more of existing limiters for modders (#449)
* Exposed alignment, faction and terrain limiters * Limiters toString() use now boost:format
This commit is contained in:
committed by
ArseniyShestakov
parent
ad2c429d8f
commit
d9d01f0b68
@@ -19,6 +19,7 @@
|
||||
#include "CModHandler.h"
|
||||
#include "CGeneralTextHandler.h"
|
||||
#include "JsonDetail.h"
|
||||
#include "StringConstants.h"
|
||||
|
||||
using namespace JsonDetail;
|
||||
|
||||
@@ -645,6 +646,35 @@ std::shared_ptr<ILimiter> JsonUtils::parseLimiter(const JsonNode & limiter)
|
||||
return bonusLimiter;
|
||||
}
|
||||
}
|
||||
else if(limiterType == "CREATURE_ALIGNMENT_LIMITER")
|
||||
{
|
||||
int alignment = vstd::find_pos(EAlignment::names, parameters[0].String());
|
||||
if(alignment == -1)
|
||||
logMod->error("Error: invalid alignment %s.", parameters[0].String());
|
||||
else
|
||||
return std::make_shared<CreatureAlignmentLimiter>(alignment);
|
||||
}
|
||||
else if(limiterType == "CREATURE_FACTION_LIMITER")
|
||||
{
|
||||
std::shared_ptr<CreatureFactionLimiter> factionLimiter = std::make_shared<CreatureFactionLimiter>();
|
||||
VLC->modh->identifiers.requestIdentifier("faction", parameters[0], [=](si32 faction)
|
||||
{
|
||||
factionLimiter->faction = faction;
|
||||
});
|
||||
return factionLimiter;
|
||||
}
|
||||
else if(limiterType == "CREATURE_TERRAIN_LIMITER")
|
||||
{
|
||||
std::shared_ptr<CreatureTerrainLimiter> terrainLimiter = std::make_shared<CreatureTerrainLimiter>();
|
||||
if(parameters.size())
|
||||
{
|
||||
VLC->modh->identifiers.requestIdentifier("terrain", parameters[0], [=](si32 terrain)
|
||||
{
|
||||
terrainLimiter->terrainType = terrain;
|
||||
});
|
||||
}
|
||||
return terrainLimiter;
|
||||
}
|
||||
else
|
||||
{
|
||||
logMod->error("Error: invalid customizable limiter type %s.", limiterType);
|
||||
|
||||
Reference in New Issue
Block a user