ItemFilter.h 844 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include <ReferenceCounter.h>
  3. #include <functional>
  4. class Item;
  5. class ItemType;
  6. class ItemFilter : public virtual Framework::ReferenceCounter
  7. {
  8. public:
  9. ItemFilter();
  10. virtual bool matchItem(const Item* zItem) const = 0;
  11. };
  12. class CombinedItemFilter : public ItemFilter
  13. {
  14. private:
  15. ItemFilter* filterA;
  16. ItemFilter* filterB;
  17. std::function<bool(bool, bool)> op;
  18. public:
  19. CombinedItemFilter(ItemFilter* filterA, ItemFilter* filterB, std::function<bool(bool, bool)> op);
  20. bool matchItem(const Item* zItem) const override;
  21. };
  22. class AnyItemFilter : public ItemFilter
  23. {
  24. public:
  25. AnyItemFilter();
  26. bool matchItem(const Item* zItem) const override;
  27. };
  28. class TypeItemFilter : public ItemFilter
  29. {
  30. private:
  31. const ItemType* zType;
  32. public:
  33. TypeItemFilter(const ItemType* zType);
  34. bool matchItem(const Item* zItem) const override;
  35. };