| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 
							- /*
 
-  * TargetCondition.h, part of VCMI engine
 
-  *
 
-  * Authors: listed in file AUTHORS in main folder
 
-  *
 
-  * License: GNU General Public License v2.0 or later
 
-  * Full text of license available in license.txt file, in main folder
 
-  *
 
-  */
 
- #pragma once
 
- #include "ISpellMechanics.h"
 
- class JsonNode;
 
- class JsonSerializeFormat;
 
- namespace battle
 
- {
 
- 	class Unit;
 
- }
 
- namespace spells
 
- {
 
- class Mechanics;
 
- class DLL_LINKAGE TargetConditionItem : public IReceptiveCheck
 
- {
 
- public:
 
- 	TargetConditionItem();
 
- 	virtual ~TargetConditionItem();
 
- 	virtual void setInverted(bool value) = 0;
 
- 	virtual void setExclusive(bool value) = 0;
 
- 	virtual bool isExclusive() const = 0;
 
- };
 
- class DLL_LINKAGE TargetConditionItemFactory
 
- {
 
- public:
 
- 	using Object = std::shared_ptr<TargetConditionItem>;
 
- 	static const TargetConditionItemFactory * getDefault();
 
- 	virtual Object createAbsoluteLevel() const = 0;
 
- 	virtual Object createAbsoluteSpell() const = 0;
 
- 	virtual Object createElemental() const = 0;
 
- 	virtual Object createNormalLevel() const = 0;
 
- 	virtual Object createNormalSpell() const = 0;
 
- 	virtual Object createConfigurable(std::string scope, std::string type, std::string identifier) const = 0;
 
- 	virtual Object createReceptiveFeature() const = 0;
 
- 	virtual Object createImmunityNegation() const = 0;
 
- };
 
- class DLL_LINKAGE TargetCondition : public IReceptiveCheck
 
- {
 
- public:
 
- 	using Item = TargetConditionItem;
 
- 	using ItemVector = std::vector<std::shared_ptr<Item>>;
 
- 	using ItemFactory = TargetConditionItemFactory;
 
- 	ItemVector normal;
 
- 	ItemVector absolute;
 
- 	ItemVector negation;
 
- 	TargetCondition();
 
- 	virtual ~TargetCondition();
 
- 	bool isReceptive(const Mechanics * m, const battle::Unit * target) const override;
 
- 	void serializeJson(JsonSerializeFormat & handler, const ItemFactory * itemFactory);
 
- protected:
 
- private:
 
- 	bool check(const ItemVector & condition, const Mechanics * m, const battle::Unit * target) const;
 
- 	void loadConditions(const JsonNode & source, bool exclusive, bool inverted, const ItemFactory * itemFactory);
 
- };
 
- }
 
 
  |