public override void HandleHover(SpriteBatch sb, int slot) { base.HandleHover(sb, slot); if (IsBlankItem(item)) { return; } ContainerRecipe cr = (ContainerRecipe)container; List <Slot> slots = cr.GetMaterialSlots(); for (int i = 0; i < recipe.requiredItem.Length; i++) { slots[i].item = recipe.requiredItem[i].CloneItem(); slots[i].pos.X = pos.X + size.X + 6; } }
public override void HandleLeftMouse(SpriteBatch sb, int slot) { if (!canPick) { return; } if (recipe == null || IsBlankItem(recipe.createItem)) { return; } if (!IsBlankItem(Main.mouseItem) && !recipe.createItem.IsTheSameAs(Main.mouseItem)) { return; } if (!Main.mouseLeftRelease) { return; } if (IsBlankItem(Main.mouseItem)) { Main.mouseItem = (Item)recipe.createItem.Clone(); Main.mouseItem.stack = 0; } if (Main.mouseItem.stack + recipe.createItem.stack > Main.mouseItem.maxStack) { return; } if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.LeftShift)) { ContainerRecipe cr = (ContainerRecipe)container; while (true) { Main.mouseItem.stack += recipe.createItem.stack; if (Main.mouseItem.maxStack == 1) { Main.mouseItem.Prefix(-1); } recipe.Create(Main.mouseItem); Recipe.FindRecipes(); if (Main.mouseItem.stack + recipe.createItem.stack > Main.mouseItem.maxStack) { break; } bool canContinue = false; for (int i = 0; i < cr.filtered.Count; i++) { if (IsRecipeTheSame(recipe, cr.filtered[i].recipe)) { canContinue = true; break; } } if (!canContinue) { break; } } Main.mouseItem = Main.player[Main.myPlayer].GetItem(Main.myPlayer, Main.mouseItem); } else { Main.mouseItem.stack += recipe.createItem.stack; if (Main.mouseItem.maxStack == 1) { Main.mouseItem.Prefix(-1); } recipe.Create(Main.mouseItem); Recipe.FindRecipes(); } }