ItemFilter.cpp 745 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "ItemFilter.h"
  2. #include "ItemType.h"
  3. #include "Item.h"
  4. ItemFilter::ItemFilter()
  5. : ReferenceCounter()
  6. {}
  7. CombinedItemFilter::CombinedItemFilter(ItemFilter* filterA, ItemFilter* filterB, std::function<bool(bool, bool)> op)
  8. : ItemFilter(),
  9. filterA(filterA),
  10. filterB(filterB),
  11. op(op)
  12. {}
  13. bool CombinedItemFilter::matchItem(const Item* zItem) const
  14. {
  15. return op(filterA->matchItem(zItem), filterB->matchItem(zItem));
  16. }
  17. AnyItemFilter::AnyItemFilter()
  18. : ItemFilter()
  19. {}
  20. bool AnyItemFilter::matchItem(const Item* zItem) const
  21. {
  22. return true;
  23. }
  24. TypeItemFilter::TypeItemFilter(const ItemType* zType)
  25. : ItemFilter(),
  26. zType(zType)
  27. {}
  28. bool TypeItemFilter::matchItem(const Item* zItem) const
  29. {
  30. return zItem->zItemType() == zType;
  31. }