public bool HasResource(ResourceTagAmount itemToStock) { var resourceCounts = new Dictionary <String, int>(); foreach (var resource in Resources) { if (resource.Resource.ResourceType.HasValue(out var res) && res.Tags.Contains(itemToStock.Tag)) { if (!resourceCounts.ContainsKey(resource.Resource.TypeName)) { resourceCounts[resource.Resource.TypeName] = 0; } resourceCounts[resource.Resource.TypeName]++; } } return(resourceCounts.Count > 0 && resourceCounts.Max(r => r.Value >= itemToStock.Count)); }
public List <Resource> EnumerateResources(ResourceTagAmount quantitiy, RestockType type = RestockType.RestockResource) { return(Resources .Where(r => { switch (type) { case RestockType.Any: return true; case RestockType.None: return !r.MarkedForRestock; case RestockType.RestockResource: return r.MarkedForRestock; } return false; }) .Where(r => r.Resource.ResourceType.HasValue(out var res) && res.Tags.Contains(quantitiy.Tag)) .Select(r => r.Resource) .ToList()); }