private static bool CheckGemUpgradeIngredients(IInventory inventory, ItemGemstoneUpgradeMetadata metadata) { for (int i = 0; i < metadata.IngredientItems.Count; i++) { IReadOnlyCollection <Item> ingredients = inventory.GetAllByTag(metadata.IngredientItems[i]); int inventoryItemCount = ingredients.Sum(x => x.Amount); if (inventoryItemCount < metadata.IngredientAmounts[i]) { return(false); } } return(true); }
private static bool CheckGemUpgradeIngredients(Inventory inventory, ItemGemstoneUpgradeMetadata metadata) { for (int i = 0; i < metadata.IngredientItems.Count; i++) { int inventoryItemCount = 0; List <KeyValuePair <long, Item> > ingredients = inventory.Items.Where(x => x.Value.Tag == metadata.IngredientItems[i]).ToList(); ingredients.ForEach(x => inventoryItemCount += x.Value.Amount); if (inventoryItemCount < metadata.IngredientAmounts[i]) { return(false); } } return(true); }
private static void ConsumeIngredients(GameSession session, ItemGemstoneUpgradeMetadata metadata) { for (int i = 0; i < metadata.IngredientItems.Count; i++) { List <KeyValuePair <long, Item> > ingredients = session.Player.Inventory.Items.Where(x => x.Value.Tag == metadata.IngredientItems[i]).ToList(); foreach ((long uid, Item item) in ingredients) { if (item.Amount >= metadata.IngredientAmounts[i]) { session.Player.Inventory.ConsumeItem(session, uid, metadata.IngredientAmounts[i]); break; } metadata.IngredientAmounts[i] -= item.Amount; session.Player.Inventory.ConsumeItem(session, uid, item.Amount); } } }
private static void ConsumeIngredients(GameSession session, ItemGemstoneUpgradeMetadata metadata) { for (int i = 0; i < metadata.IngredientItems.Count; i++) { List <KeyValuePair <long, Item> > ingredients = new List <KeyValuePair <long, Item> >(); ingredients = session.Player.Inventory.Items.Where(x => x.Value.Tag == metadata.IngredientItems[i]).ToList(); foreach (KeyValuePair <long, Item> item in ingredients) { if (item.Value.Amount >= metadata.IngredientAmounts[i]) { InventoryController.Consume(session, item.Key, metadata.IngredientAmounts[i]); break; } else { metadata.IngredientAmounts[i] -= item.Value.Amount; InventoryController.Consume(session, item.Key, item.Value.Amount); } } } }