ItemFilter.cpp 804 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. }