1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

vcmi: allow converting bonusParams to selector

This commit is contained in:
Konstantin
2023-03-09 02:16:18 +03:00
parent eaceb65b5c
commit f13a934c47
2 changed files with 17 additions and 0 deletions

View File

@@ -1998,6 +1998,22 @@ const JsonNode & BonusParams::toJson()
return ret; return ret;
}; };
CSelector BonusParams::toSelector()
{
assert(isConverted);
if(subtypeRelevant && !subtypeStr.empty())
JsonUtils::resolveIdentifier(subtype, toJson(), "subtype");
auto ret = Selector::type()(type);
if(subtypeRelevant)
ret = ret.And(Selector::subtype()(subtype));
if(valueTypeRelevant)
ret = ret.And(Selector::valueType(valueType));
if(targetTypeRelevant)
ret = ret.And(Selector::targetSourceType()(targetType));
return ret;
}
Bonus::Bonus(Bonus::BonusDuration Duration, BonusType Type, BonusSource Src, si32 Val, ui32 ID, std::string Desc, si32 Subtype) Bonus::Bonus(Bonus::BonusDuration Duration, BonusType Type, BonusSource Src, si32 Val, ui32 ID, std::string Desc, si32 Subtype)
: duration((ui16)Duration), type(Type), subtype(Subtype), source(Src), val(Val), sid(ID), description(Desc) : duration((ui16)Duration), type(Type), subtype(Subtype), source(Src), val(Val), sid(ID), description(Desc)
{ {

View File

@@ -554,6 +554,7 @@ struct DLL_LINKAGE BonusParams {
BonusParams(bool isConverted = true) : isConverted(isConverted) {}; BonusParams(bool isConverted = true) : isConverted(isConverted) {};
BonusParams(std::string deprecatedTypeStr, std::string deprecatedSubtypeStr = "", int deprecatedSubtype = 0); BonusParams(std::string deprecatedTypeStr, std::string deprecatedSubtypeStr = "", int deprecatedSubtype = 0);
const JsonNode & toJson(); const JsonNode & toJson();
CSelector toSelector();
private: private:
JsonNode ret; JsonNode ret;
bool jsonCreated = false; bool jsonCreated = false;