Example #1
0
        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));
        }
Example #2
0
        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());
        }