changeset 76:9d487333bf10

Block cross-tradeskill in external window
author contrebasse
date Sat, 14 May 2011 21:30:56 +0200
parents 3d344a2d8fdf
children cd36938d2a48
files ReagentMaker.lua SecureMenu.lua utils.lua
diffstat 3 files changed, 38 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/ReagentMaker.lua	Sat May 14 21:00:38 2011 +0200
+++ b/ReagentMaker.lua	Sat May 14 21:30:56 2011 +0200
@@ -138,10 +138,12 @@
 		-- If we can make the item needed to make the reagent, open a window to make it
 		-- one step recursion, enables to mill to create an ink
 		if (not A.data[reagentID][1].manyReagents) and A.data[A.data[reagentID][1][1]] then
-			A.externalCraftWindow(A.data[reagentID][1][1],reagentID)
-		else
-			A.Error(A.L["You do not have enough reagents to craft [%s]"]:format(GetItemInfo(reagentID) or "item #"..reagentID))
+			if A.externalCraftWindow(A.data[reagentID][1][1],reagentID) ~= false then
+				return
+			end
 		end
+
+		A.Error(A.L["You do not have enough reagents to craft [%s]"]:format(GetItemInfo(reagentID) or "item #"..reagentID))
 		return
 	else
 		A.externalCraftWindow(reagentID)
--- a/SecureMenu.lua	Sat May 14 21:00:38 2011 +0200
+++ b/SecureMenu.lua	Sat May 14 21:30:56 2011 +0200
@@ -330,17 +330,27 @@
 	MenuFrame.superItemID = superItemID -- optional, will be nil if not set
 
 	-- Loop over the available recipes
-	MenuFrame.state = true
+	local noSkipped = true -- check if we have to reload the external frame to get all the data
+	local existsValidEntries -- check if the menu contains at least one item (cross-tradeskill problem)
 	for _,reagent in ipairs(A.data[itemID]) do
 		if reagent.macro then
 			-- Special spell
-			MenuFrame.state = menuAddItem(reagent.macro,itemID,reagent) and MenuFrame.state
+			existsValidEntries = true
+			noSkipped = menuAddItem(reagent.macro,itemID,reagent) and noSkipped
 		else
-			-- Standard tradeskill spell UNTESTED
-			MenuFrame.state = menuAddItem(A.craft,itemID,reagent) and MenuFrame.state
+			-- Standard tradeskill spell
+			if reagent.spellID == A.currentTradeSkill then
+				existsValidEntries = true
+				noSkipped = menuAddItem(A.craft,itemID,reagent) and noSkipped
+			end
 		end -- if
 	end -- for
 
+	-- do not show an empty menu
+	if not existsValidEntries then
+		return false
+	end
+
 	MenuFrame:SetHeight(89 + numActiveEntries*(MENU_ENTRY_HEIGHT+2))
 
 	MenuFrame:ClearAllPoints()
@@ -351,7 +361,7 @@
 
 	MenuFrame:Show()
 
-	if not MenuFrame.state then
+	if not noSkipped then
 		MenuFrame:SetScript("OnUpdate",reopen)
 	end
 end
--- a/utils.lua	Sat May 14 21:00:38 2011 +0200
+++ b/utils.lua	Sat May 14 21:30:56 2011 +0200
@@ -235,3 +235,21 @@
 	
 	return unique
 end
+
+--[[
+function A.isTradeskillUnique(itemData)
+	local spellID = itemData[1].spellID
+	
+	-- Check if the item is made by only one recipe. If not, return
+	if #itemData>1 then
+		for _,v in ipairs(itemData) do
+			if v.spellID ~= spellID then
+				spellID = nil
+				break
+			end
+		end
+	end
+	
+	return spellID
+end
+--]]
\ No newline at end of file