Mercurial > wow > reagentmaker
diff SecureMenu.lua @ 111:af23986010ef v1.1beta0
Rewrote the main part to clarify things, should have removed some hidden nasty bugs.
author | contrebasse |
---|---|
date | Thu, 02 Jun 2011 23:07:23 +0200 |
parents | d60d6b4cab0c |
children | 5a3fb8fea026 |
line wrap: on
line diff
--- a/SecureMenu.lua Thu Jun 02 18:23:42 2011 +0200 +++ b/SecureMenu.lua Thu Jun 02 23:07:23 2011 +0200 @@ -1,5 +1,11 @@ local addonName, A = ... +-- Lua functions +local ipairs = ipairs +local type = type + +-- Wow variables + -- Create the menu frame local MenuFrame = CreateFrame("Frame","ReagentMaker_ExternalFrame",UIParent) MenuFrame:Hide() @@ -56,8 +62,8 @@ -- Hide frame when selecting a recipe which doesn't need this reagent hooksecurefunc("SelectTradeSkill",function() local selectedIndex = GetTradeSkillSelectionIndex() - for reagentRecipeIndex = 1,GetTradeSkillNumReagents(selectedIndex) do - local reagentID = A.link2ID(GetTradeSkillReagentItemLink(selectedIndex, reagentRecipeIndex)) + for reagentIndexInRecipe = 1,GetTradeSkillNumReagents(selectedIndex) do + local reagentID = A.link2ID(GetTradeSkillReagentItemLink(selectedIndex, reagentIndexInRecipe)) if reagentID == MenuFrame.itemID or (MenuFrame.superItemID and reagentID == MenuFrame.superItemID) then return end @@ -204,30 +210,14 @@ end local function CraftFromExternal(btn) - local chooseNumber = IsShiftKeyDown() - local numReagentMakable = A.numRecipeMakable(btn.reagentID,btn.reagentsForOneRecipe) - local reagentIndex = A.findExactSkillIndex(btn.itemID,btn.itemNameString) + local chooseNumberToCraft = IsShiftKeyDown() - -- to define - local numToMake = 1 - - -- Choose number or craft directly - if chooseNumber then - -- Store info to be able to run the function later - btn.ReagentMaker_reagentIndex = reagentIndex - - -- Open dialog - OpenStackSplitFrame(numReagentMakable, btn, "BOTTOMRIGHT", "TOP") - - -- Fill in the number to make - numToMake = tostring(numToMake) - for i = 1,numToMake:len() do - StackSplitFrame_OnChar(StackSplitFrame,numToMake:gsub(i,i)) - end - StackSplitFrame.typing = 0 -- reinit the frame so that the entered value will be erased on text entry - else - DoTradeSkill(reagentIndex,numToMake) - end -- if + A.CraftItemWithRecipe( GetTradeSkillSelectionIndex(), + btn.itemID, + btn.reagent, + MenuFrame.reagentIndexInRecipe, + IsShiftKeyDown(), + btn) end -- Update counts and button actions @@ -346,6 +336,7 @@ -- Save params btn.itemID = itemID + btn.reagent = reagent btn.reagentID = reagent[1] btn.reagentLink = link btn.reagentsForOneRecipe = reagent[2] @@ -368,11 +359,11 @@ MenuFrame:SetScript("OnUpdate",nil) -- reopen - A.externalCraftWindow(MenuFrame.itemID,MenuFrame.superItemID) + A.externalCraftWindow(MenuFrame.itemID,MenuFrame.reagentIndexInRecipe,MenuFrame.superItemID) end -- Fill the window and open it -function A.externalCraftWindow(itemID,superItemID) +function A.externalCraftWindow(itemID,reagentIndexInRecipe,superItemID) -- Do not open during combat if InCombatLockdown() then A.Error(SPELL_FAILED_AFFECTING_COMBAT) @@ -400,6 +391,7 @@ MenuFrame.reagentLink = link MenuFrame.spellLink = A.isRecipeUnique(A.data[itemID]) and A.data[itemID][1].spellLink MenuFrame.itemID = itemID + MenuFrame.reagentIndexInRecipe = reagentIndexInRecipe MenuFrame.superItemID = superItemID -- optional, will be nil if not set -- Loop over the available recipes