#pragma once #include "DropCondition.h" #include "ItemFilter.h" class DropUsedItemCondition : public DropCondition { private: ItemFilter* filter; public: DropUsedItemCondition(ItemFilter* filter); ~DropUsedItemCondition(); const ItemFilter* zFilter() const; virtual bool evaluate(Entity* zActor, Item* zItem, ItemSkill* zUsedSkill, Framework::Either zDestroyedObject) override; }; class DropNoUsedItemCondition : public DropCondition { public: virtual bool evaluate(Entity* zActor, Item* zItem, ItemSkill* zUsedSkill, Framework::Either zDestroyedObject) override; }; class DropUsedItemConditionFactory : public SubTypeFactory { public: DropUsedItemConditionFactory(); JSONObjectValidationBuilder* addToValidator( JSONObjectValidationBuilder* builder) const override; const char* getTypeToken() const override; protected: DropUsedItemCondition* fromJson( Framework::JSON::JSONObject* zJson) const override; Framework::JSON::JSONObject* toJsonObject( DropUsedItemCondition* zObject) const override; }; class DropNoUsedItemConditionFactory : public SubTypeFactory { public: DropNoUsedItemConditionFactory(); JSONObjectValidationBuilder* addToValidator( JSONObjectValidationBuilder* builder) const override; const char* getTypeToken() const override; protected: DropNoUsedItemCondition* fromJson( Framework::JSON::JSONObject* zJson) const override; Framework::JSON::JSONObject* toJsonObject( DropNoUsedItemCondition* zObject) const override; };