| 
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
 |