| contrebasse@0 | 1 local addonName, A = ... | 
| contrebasse@0 | 2 | 
| contrebasse@16 | 3 -- Lua functions | 
| contrebasse@16 | 4 local tonumber = tonumber | 
| contrebasse@16 | 5 local select = select | 
| contrebasse@16 | 6 local sfind = string.find | 
| contrebasse@16 | 7 | 
| contrebasse@16 | 8 -- Wow functions | 
| contrebasse@16 | 9 | 
| contrebasse@3 | 10 -- DEBUG Print | 
| contrebasse@3 | 11 function A.DEBUG(msg) | 
| contrebasse@16 | 12 	-- GLOBALS: DEFAULT_CHAT_FRAME | 
| contrebasse@3 | 13 	DEFAULT_CHAT_FRAME:AddMessage(msg or "nil",1,0,0) | 
| contrebasse@3 | 14 end -- function | 
| contrebasse@0 | 15 | 
| contrebasse@3 | 16 -- Returns the item ID from its link | 
| contrebasse@3 | 17 function A.link2ID(link) | 
| contrebasse@16 | 18 	return tonumber(select(3,sfind(link or "", "-*:(%d+)[:|].*")) or "") | 
| contrebasse@3 | 19 end -- function | 
| contrebasse@3 | 20 | 
| contrebasse@3 | 21 -- Returns the button number for the reagents buttons | 
| contrebasse@3 | 22 function A.buttonNumber(btn) | 
| contrebasse@3 | 23 	-- "TradeSkillReagentN" | 
| contrebasse@3 | 24 	return tonumber(btn:GetName():sub(-1)) | 
| contrebasse@0 | 25 end | 
| contrebasse@0 | 26 | 
| contrebasse@16 | 27 do | 
| contrebasse@16 | 28 	-- Wow functions | 
| contrebasse@16 | 29 	local GetTradeSkillInfo = GetTradeSkillInfo | 
| contrebasse@16 | 30 	local GetNumTradeSkills = GetNumTradeSkills | 
| contrebasse@16 | 31 	local GetTradeSkillItemLink = GetTradeSkillItemLink | 
| contrebasse@0 | 32 | 
| contrebasse@16 | 33 	-- Gives the number of craftable objects | 
| contrebasse@16 | 34 	function A.numMakable(reagentID) | 
| contrebasse@16 | 35 		-- Look for the recipe to make the item | 
| contrebasse@16 | 36 		local reagentIndex = A.findSkillIndex(reagentID) | 
| contrebasse@16 | 37 		if not reagentIndex then return 0 end | 
| contrebasse@3 | 38 | 
| contrebasse@16 | 39 		-- Check how many items we can craft | 
| contrebasse@16 | 40 		local skillName, skillType, numReagentMakable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(reagentIndex) | 
| contrebasse@16 | 41 		return numReagentMakable or 0, reagentIndex | 
| contrebasse@16 | 42 	end | 
| contrebasse@16 | 43 | 
| contrebasse@16 | 44 	-- Find the first tradeskill index of the recipe to make an item | 
| contrebasse@16 | 45 	function A.findSkillIndex(itemID) | 
| contrebasse@16 | 46 		for i = 1,GetNumTradeSkills() do | 
| contrebasse@16 | 47 			local skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(i) | 
| contrebasse@16 | 48 			if skillType == "header" then | 
| contrebasse@16 | 49 			else | 
| contrebasse@16 | 50 				if skillName then | 
| contrebasse@16 | 51 					local ID = A.link2ID(GetTradeSkillItemLink(i)) | 
| contrebasse@16 | 52 					if ID and ID == itemID then | 
| contrebasse@16 | 53 						return i | 
| contrebasse@16 | 54 					end -- if | 
| contrebasse@3 | 55 				end -- if | 
| contrebasse@3 | 56 			end -- if | 
| contrebasse@16 | 57 		end -- for | 
| contrebasse@16 | 58 		A.DEBUG("Tradeskill not found for "..itemID) | 
| contrebasse@16 | 59 	end -- function | 
| contrebasse@16 | 60 end -- do |