DropUsedItemCondition.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #pragma once
  2. #include "DropCondition.h"
  3. #include "ItemFilter.h"
  4. class DropUsedItemCondition : public DropCondition
  5. {
  6. private:
  7. ItemFilter* filter;
  8. public:
  9. DropUsedItemCondition(ItemFilter* filter);
  10. ~DropUsedItemCondition();
  11. const ItemFilter* zFilter() const;
  12. virtual bool evaluate(Entity* zActor,
  13. Item* zItem,
  14. ItemSkill* zUsedSkill,
  15. Framework::Either<Block*, Entity*> zDestroyedObject) override;
  16. };
  17. class DropNoUsedItemCondition : public DropCondition
  18. {
  19. public:
  20. virtual bool evaluate(Entity* zActor,
  21. Item* zItem,
  22. ItemSkill* zUsedSkill,
  23. Framework::Either<Block*, Entity*> zDestroyedObject) override;
  24. };
  25. class DropUsedItemConditionFactory
  26. : public SubTypeFactory<DropCondition, DropUsedItemCondition>
  27. {
  28. public:
  29. DropUsedItemConditionFactory();
  30. JSONObjectValidationBuilder* addToValidator(
  31. JSONObjectValidationBuilder* builder) const override;
  32. const char* getTypeToken() const override;
  33. protected:
  34. DropUsedItemCondition* fromJson(
  35. Framework::JSON::JSONObject* zJson) const override;
  36. Framework::JSON::JSONObject* toJsonObject(
  37. DropUsedItemCondition* zObject) const override;
  38. };
  39. class DropNoUsedItemConditionFactory
  40. : public SubTypeFactory<DropCondition, DropNoUsedItemCondition>
  41. {
  42. public:
  43. DropNoUsedItemConditionFactory();
  44. JSONObjectValidationBuilder* addToValidator(
  45. JSONObjectValidationBuilder* builder) const override;
  46. const char* getTypeToken() const override;
  47. protected:
  48. DropNoUsedItemCondition* fromJson(
  49. Framework::JSON::JSONObject* zJson) const override;
  50. Framework::JSON::JSONObject* toJsonObject(
  51. DropNoUsedItemCondition* zObject) const override;
  52. };