Esempio n. 1
0
        public static ItemsByMaterial On_ItemsByQuality_ItemsOfQualityOrHigher(ItemsByQuality self, ItemQuality itemQuality)
        {
            var items = myClasses[self];

            if (itemQuality == ItemQuality.Any)
            {
                itemQuality = ItemQuality.Poor;
            }
            ItemsByMaterial itemsByMaterial = new ItemsByMaterial();

            foreach (KeyValuePair <ItemQuality, LargeItemsByMaterial> current in items)
            {
                if (current.Key >= itemQuality)
                {
                    foreach (KeyValuePair <int, HashSet <Item> > current2 in current.Value.Items)
                    {
                        List <Item> list;
                        if (itemsByMaterial.Items.TryGetValue(current2.Key, out list))
                        {
                            itemsByMaterial.Items[current2.Key] = itemsByMaterial.Items[current2.Key].Concat(current2.Value).ToList <Item>();
                        }
                        else
                        {
#warning have to find a performant way to replace this, likely by replacing lots a stockmanager funcs
                            itemsByMaterial.Items.Add(current2.Key, current2.Value);
                        }
                    }
                }
            }
            return(itemsByMaterial);
        }
Esempio n. 2
0
        public static bool On_StockManager_AreItemsAvailable(StockManager self, Vector3 pos, ItemID itemID, uint quantity, int material, ItemQuality itemQuality, bool atLeastQuality)
        {
            if (GnomanEmpire.Instance.Map.GetCell(pos).NavGraphNode == null)
            {
                return(false);
            }
            ItemsByQuality itemsByQuality = ((ItemsByQuality[])StockManager_ItemsByQuality_InStockItems.GetValue(self))[(int)itemID];

            if (itemsByQuality == null)
            {
                return(false);
            }
            ItemsByMaterial itemsByMaterial = itemsByQuality.ItemsOfQuality(itemQuality, atLeastQuality);

            return(itemsByMaterial != null && itemsByMaterial.AreItemsAvailable(pos, quantity, material));
        }
        public static ItemsByMaterial On_ItemsByQuality_ItemsOfQualityOrHigher(ItemsByQuality self, ItemQuality itemQuality)
        {
            var items = myClasses[self];
            if (itemQuality == ItemQuality.Any)
            {
                itemQuality = ItemQuality.Poor;
            }
            ItemsByMaterial itemsByMaterial = new ItemsByMaterial();
            foreach (KeyValuePair<ItemQuality, LargeItemsByMaterial> current in items)
            {
                if (current.Key >= itemQuality)
                {
                    foreach (KeyValuePair<int, HashSet<Item>> current2 in current.Value.Items)
                    {
                        List<Item> list;
                        if (itemsByMaterial.Items.TryGetValue(current2.Key, out list))
                        {
                            itemsByMaterial.Items[current2.Key] = itemsByMaterial.Items[current2.Key].Concat(current2.Value).ToList<Item>();
                        }
                        else
                        {
#warning have to find a performant way to replace this, likely by replacing lots a stockmanager funcs
                            itemsByMaterial.Items.Add(current2.Key, current2.Value);
                        }
                    }
                }
            }
            return itemsByMaterial;
        }