public void CraftItemUsing(Recipe recipe) { if (CurrentPlayer.HasAllTheseItems(recipe.Ingredients)) { CurrentPlayer.RemoveRecipeIngredientsFromInventory(recipe.Ingredients); foreach (ItemQuantity itemQuantity in recipe.OutputItems) { if (itemQuantity.isWeapon) { Weapon outputWeapon = WeaponFactory.CreateWeapon(itemQuantity.ItemID); CurrentPlayer.AddWeaponToWeapons(outputWeapon); _messageBroker.RaiseMessage($"You craft a {outputWeapon.Name}"); } else { GameItem outputItem = ItemFactory.CreateGameItem(itemQuantity.ItemID); CurrentPlayer.AddItemToInventory(outputItem, itemQuantity.Quantity); _messageBroker.RaiseMessage($"You craft {itemQuantity.Quantity} {outputItem.Name}"); } } } else { _messageBroker.RaiseMessage("You do not have the required ingredients:"); foreach (ItemQuantity itemQuantity in recipe.Ingredients) { if (itemQuantity.isWeapon) { _messageBroker.RaiseMessage($"{itemQuantity.Quantity} {WeaponFactory.WeaponName(itemQuantity.ItemID)}"); } else { _messageBroker.RaiseMessage($"{itemQuantity.Quantity} {ItemFactory.ItemName(itemQuantity.ItemID)}"); } } } }