Example #1
0
        private void clickCraftingRecipe(ClickableTextureComponent c, bool playSound = true)
        {
            Item crafted = pagesOfCraftingRecipes[currentCraftingPage][c].createItem();
            List <KeyValuePair <int, int> > seasoning = null;

            if (cooking && crafted is Object && (crafted as Object).Quality == 0)
            {
                seasoning = new List <KeyValuePair <int, int> >();
                seasoning.Add(new KeyValuePair <int, int>(917, 1));
                if (CraftingRecipe.DoesFarmerHaveAdditionalIngredientsInInventory(seasoning, getContainerContents()))
                {
                    (crafted as Object).Quality = 2;
                }
                else
                {
                    seasoning = null;
                }
            }
            if (heldItem == null)
            {
                pagesOfCraftingRecipes[currentCraftingPage][c].consumeIngredients(_materialContainers);
                heldItem = crafted;
                if (playSound)
                {
                    Game1.playSound("coin");
                }
            }
            else
            {
                if (!heldItem.Name.Equals(crafted.Name) || !heldItem.getOne().canStackWith(crafted.getOne()) || heldItem.Stack + pagesOfCraftingRecipes[currentCraftingPage][c].numberProducedPerCraft - 1 >= heldItem.maximumStackSize())
                {
                    return;
                }
                heldItem.Stack += pagesOfCraftingRecipes[currentCraftingPage][c].numberProducedPerCraft;
                pagesOfCraftingRecipes[currentCraftingPage][c].consumeIngredients(_materialContainers);
                if (playSound)
                {
                    Game1.playSound("coin");
                }
            }
            if (seasoning != null)
            {
                if (playSound)
                {
                    Game1.playSound("breathin");
                }
                CraftingRecipe.ConsumeAdditionalIngredients(seasoning, _materialContainers);
                if (!CraftingRecipe.DoesFarmerHaveAdditionalIngredientsInInventory(seasoning, getContainerContents()))
                {
                    Game1.showGlobalMessage(Game1.content.LoadString("Strings\\StringsFromCSFiles:Seasoning_UsedLast"));
                }
            }
            Game1.player.checkForQuestComplete(null, -1, -1, crafted, null, 2);
            if (!cooking && Game1.player.craftingRecipes.ContainsKey(pagesOfCraftingRecipes[currentCraftingPage][c].name))
            {
                Game1.player.craftingRecipes[pagesOfCraftingRecipes[currentCraftingPage][c].name] += pagesOfCraftingRecipes[currentCraftingPage][c].numberProducedPerCraft;
            }
            if (cooking)
            {
                Game1.player.cookedRecipe(heldItem.parentSheetIndex);
            }
            if (!cooking)
            {
                Game1.stats.checkForCraftingAchievements();
            }
            else
            {
                Game1.stats.checkForCookingAchievements();
            }
            if (Game1.options.gamepadControls && heldItem != null && Game1.player.couldInventoryAcceptThisItem(heldItem))
            {
                Game1.player.addItemToInventoryBool(heldItem);
                heldItem = null;
            }
        }