Exemplo n.º 1
0
        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)}");
                    }
                }
            }
        }