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); }
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; }