public ItemFilter(string filterString) { if (string.IsNullOrWhiteSpace(filterString)) { return; } var parts = filterString.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); foreach (var part in parts) { if (part.StartsWith("!")) { var filter = GetFilter(part.Substring(1)); if (filter != null) { NotFilters.Add(filter); } } else { var filter = GetFilter(part); if (filter != null) { OrFilters.Add(filter); } } } }
public bool IsPass(Item item) { if ((item is Object o) && (o.bigCraftable || o is Furniture furniture && !IsSmallFurniture(furniture))) { return(false); } return((!OrFilters.Any() || OrFilters.Any(f => f(item))) && NotFilters.All(f => !f(item))); }