|
@@ -44,8 +44,6 @@ public:
|
|
virtual EDecision limit(const BonusLimitationContext &context) const; //0 - accept bonus; 1 - drop bonus; 2 - delay (drops eventually)
|
|
virtual EDecision limit(const BonusLimitationContext &context) const; //0 - accept bonus; 1 - drop bonus; 2 - delay (drops eventually)
|
|
virtual std::string toString() const;
|
|
virtual std::string toString() const;
|
|
virtual JsonNode toJsonNode() const;
|
|
virtual JsonNode toJsonNode() const;
|
|
- virtual void acceptUpdater(IUpdater & visitor);
|
|
|
|
- virtual TLimiterPtr clone() const;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|
|
@@ -61,7 +59,6 @@ public:
|
|
std::vector<TLimiterPtr> limiters;
|
|
std::vector<TLimiterPtr> limiters;
|
|
void add(const TLimiterPtr & limiter);
|
|
void add(const TLimiterPtr & limiter);
|
|
JsonNode toJsonNode() const override;
|
|
JsonNode toJsonNode() const override;
|
|
- void acceptUpdater(IUpdater & visitor) override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler & h)
|
|
template <typename Handler> void serialize(Handler & h)
|
|
{
|
|
{
|
|
@@ -78,7 +75,6 @@ public:
|
|
AllOfLimiter(std::vector<TLimiterPtr> limiters = {});
|
|
AllOfLimiter(std::vector<TLimiterPtr> limiters = {});
|
|
static const std::string aggregator;
|
|
static const std::string aggregator;
|
|
EDecision limit(const BonusLimitationContext & context) const override;
|
|
EDecision limit(const BonusLimitationContext & context) const override;
|
|
- TLimiterPtr clone() const override;
|
|
|
|
};
|
|
};
|
|
|
|
|
|
class DLL_LINKAGE AnyOfLimiter : public AggregateLimiter
|
|
class DLL_LINKAGE AnyOfLimiter : public AggregateLimiter
|
|
@@ -89,7 +85,6 @@ public:
|
|
AnyOfLimiter(std::vector<TLimiterPtr> limiters = {});
|
|
AnyOfLimiter(std::vector<TLimiterPtr> limiters = {});
|
|
static const std::string aggregator;
|
|
static const std::string aggregator;
|
|
EDecision limit(const BonusLimitationContext & context) const override;
|
|
EDecision limit(const BonusLimitationContext & context) const override;
|
|
- TLimiterPtr clone() const override;
|
|
|
|
};
|
|
};
|
|
|
|
|
|
class DLL_LINKAGE NoneOfLimiter : public AggregateLimiter
|
|
class DLL_LINKAGE NoneOfLimiter : public AggregateLimiter
|
|
@@ -100,7 +95,6 @@ public:
|
|
NoneOfLimiter(std::vector<TLimiterPtr> limiters = {});
|
|
NoneOfLimiter(std::vector<TLimiterPtr> limiters = {});
|
|
static const std::string aggregator;
|
|
static const std::string aggregator;
|
|
EDecision limit(const BonusLimitationContext & context) const override;
|
|
EDecision limit(const BonusLimitationContext & context) const override;
|
|
- TLimiterPtr clone() const override;
|
|
|
|
};
|
|
};
|
|
|
|
|
|
class DLL_LINKAGE CCreatureTypeLimiter : public ILimiter //affect only stacks of given creature (and optionally it's upgrades)
|
|
class DLL_LINKAGE CCreatureTypeLimiter : public ILimiter //affect only stacks of given creature (and optionally it's upgrades)
|
|
@@ -116,8 +110,6 @@ public:
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
std::string toString() const override;
|
|
std::string toString() const override;
|
|
JsonNode toJsonNode() const override;
|
|
JsonNode toJsonNode() const override;
|
|
- void acceptUpdater(IUpdater & visitor) override;
|
|
|
|
- TLimiterPtr clone() const override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|
|
@@ -146,8 +138,6 @@ public:
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
std::string toString() const override;
|
|
std::string toString() const override;
|
|
JsonNode toJsonNode() const override;
|
|
JsonNode toJsonNode() const override;
|
|
- void acceptUpdater(IUpdater & visitor) override;
|
|
|
|
- TLimiterPtr clone() const override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|
|
@@ -172,8 +162,6 @@ public:
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
std::string toString() const override;
|
|
std::string toString() const override;
|
|
JsonNode toJsonNode() const override;
|
|
JsonNode toJsonNode() const override;
|
|
- void acceptUpdater(IUpdater & visitor) override;
|
|
|
|
- TLimiterPtr clone() const override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|
|
@@ -193,8 +181,6 @@ public:
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
std::string toString() const override;
|
|
std::string toString() const override;
|
|
JsonNode toJsonNode() const override;
|
|
JsonNode toJsonNode() const override;
|
|
- void acceptUpdater(IUpdater & visitor) override;
|
|
|
|
- TLimiterPtr clone() const override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|
|
@@ -213,8 +199,6 @@ public:
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
std::string toString() const override;
|
|
std::string toString() const override;
|
|
JsonNode toJsonNode() const override;
|
|
JsonNode toJsonNode() const override;
|
|
- void acceptUpdater(IUpdater & visitor) override;
|
|
|
|
- TLimiterPtr clone() const override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|
|
@@ -232,8 +216,6 @@ public:
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
std::string toString() const override;
|
|
std::string toString() const override;
|
|
JsonNode toJsonNode() const override;
|
|
JsonNode toJsonNode() const override;
|
|
- void acceptUpdater(IUpdater & visitor) override;
|
|
|
|
- TLimiterPtr clone() const override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|
|
@@ -245,17 +227,18 @@ public:
|
|
class DLL_LINKAGE OppositeSideLimiter : public ILimiter //applies only to creatures of enemy army during combat
|
|
class DLL_LINKAGE OppositeSideLimiter : public ILimiter //applies only to creatures of enemy army during combat
|
|
{
|
|
{
|
|
public:
|
|
public:
|
|
- PlayerColor owner;
|
|
|
|
- OppositeSideLimiter(PlayerColor Owner = PlayerColor::CANNOT_DETERMINE);
|
|
|
|
|
|
+ OppositeSideLimiter();
|
|
|
|
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
- void acceptUpdater(IUpdater & visitor) override;
|
|
|
|
- TLimiterPtr clone() const override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|
|
h & static_cast<ILimiter&>(*this);
|
|
h & static_cast<ILimiter&>(*this);
|
|
- h & owner;
|
|
|
|
|
|
+ if (!h.hasFeature(Handler::Version::OPPOSITE_SIDE_LIMITER_OWNER))
|
|
|
|
+ {
|
|
|
|
+ PlayerColor owner;
|
|
|
|
+ h & owner;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
@@ -268,8 +251,6 @@ public:
|
|
RankRangeLimiter();
|
|
RankRangeLimiter();
|
|
RankRangeLimiter(ui8 Min, ui8 Max = 255);
|
|
RankRangeLimiter(ui8 Min, ui8 Max = 255);
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
- void acceptUpdater(IUpdater & visitor) override;
|
|
|
|
- TLimiterPtr clone() const override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|
|
@@ -287,8 +268,6 @@ public:
|
|
UnitOnHexLimiter(const BattleHexArray & applicableHexes = {});
|
|
UnitOnHexLimiter(const BattleHexArray & applicableHexes = {});
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
EDecision limit(const BonusLimitationContext &context) const override;
|
|
JsonNode toJsonNode() const override;
|
|
JsonNode toJsonNode() const override;
|
|
- void acceptUpdater(IUpdater& visitor) override;
|
|
|
|
- TLimiterPtr clone() const override;
|
|
|
|
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
{
|