annotate data.lua @ 81:32c398de6812

Update todo
author contrebasse
date Sun, 15 May 2011 01:35:38 +0200
parents e837f5681fbb
children cf1da2654dc6
rev   line source
contrebasse@0 1 local addonName, A = ...
contrebasse@0 2
contrebasse@67 3 -- @todo: enchants, elementals, prospecting
contrebasse@0 4 -- @todo improve scanning
contrebasse@67 5
contrebasse@67 6 A.data = {}
contrebasse@67 7
contrebasse@15 8 do
contrebasse@15 9 -- lua functions
contrebasse@15 10 local print = print
contrebasse@15 11 local ipairs = ipairs
contrebasse@15 12 local tinsert = tinsert
contrebasse@67 13 local select = select
contrebasse@0 14
contrebasse@15 15 -- Wow functions
contrebasse@15 16 local GetNumTradeSkills = GetNumTradeSkills
contrebasse@15 17 local GetTradeSkillInfo = GetTradeSkillInfo
contrebasse@15 18 local GetTradeSkillNumReagents = GetTradeSkillNumReagents
contrebasse@15 19 local GetTradeSkillItemLink = GetTradeSkillItemLink
contrebasse@67 20 local GetTradeSkillRecipeLink = GetTradeSkillRecipeLink
contrebasse@15 21 local GetTradeSkillReagentItemLink = GetTradeSkillReagentItemLink
contrebasse@15 22 local GetTradeSkillReagentInfo = GetTradeSkillReagentInfo
contrebasse@15 23 local GetTradeSkillNumMade = GetTradeSkillNumMade
contrebasse@67 24 local GetSpellInfo = GetSpellInfo
contrebasse@67 25
contrebasse@67 26 -- Wow objects
contrebasse@67 27 local GetTradeSkillLine = GetTradeSkillLine
contrebasse@0 28
contrebasse@15 29 -- the function who scans the tradeskill
contrebasse@15 30 function A:ScanSimpleRecipes()
contrebasse@26 31 -- Check if the tradeskill is loaded
contrebasse@26 32 -- Has to have recipes and begin with a header
contrebasse@26 33 local NRecipes = GetNumTradeSkills()
contrebasse@26 34 if NRecipes==0 or select(2,GetTradeSkillInfo(1))~="header" then
contrebasse@26 35 return
contrebasse@26 36 end
contrebasse@70 37
contrebasse@70 38 tradeskillID = GetTradeSkillLine()
contrebasse@66 39
contrebasse@67 40 -- Check if the pseudo tradeskills have to be added
contrebasse@70 41 if tradeskillID == GetSpellInfo(25229) then -- Jewelcrafting
contrebasse@67 42 if not A.ProspectingDataLoaded then
contrebasse@68 43 for itemID,data in pairs(A.ProspectingData) do
contrebasse@67 44 A.data[itemID] = data
contrebasse@67 45 end
contrebasse@67 46 A.ProspectingDataLoaded = true
contrebasse@67 47 end
contrebasse@70 48 elseif tradeskillID == GetSpellInfo(45357) then -- Inscription
contrebasse@67 49 if not A.MillingDataLoaded then
contrebasse@68 50 for itemID,data in pairs(A.MillingData) do
contrebasse@67 51 A.data[itemID] = data
contrebasse@67 52 end
contrebasse@67 53 A.MillingDataLoaded = true
contrebasse@67 54 end
contrebasse@67 55 end
contrebasse@67 56
contrebasse@26 57 for i = 2,NRecipes do -- The first one is a header
contrebasse@70 58 -- skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(index)
contrebasse@70 59 -- serviceType is nil if the recipe creates an item
contrebasse@70 60 local _, skillType, _, _, serviceType = GetTradeSkillInfo(i)
contrebasse@70 61 if skillType and skillType ~= "header" and serviceType==nil then
contrebasse@70 62 -- item ID
contrebasse@70 63 local itemID = A.link2ID(GetTradeSkillItemLink(i))
contrebasse@0 64
contrebasse@70 65 -- reagent ID, valid only if there's only one reagent as we take only the first one
contrebasse@70 66 local reagentID = A.link2ID(GetTradeSkillReagentItemLink(i, 1))
contrebasse@14 67
contrebasse@70 68 -- reagent number needed
contrebasse@70 69 local _, _, reagentCount, _ = GetTradeSkillReagentInfo(i, 1)
contrebasse@14 70
contrebasse@70 71 -- number of reagent created by the recipe
contrebasse@70 72 local minMade, maxMade = GetTradeSkillNumMade(i)
contrebasse@66 73
contrebasse@70 74 -- recipe link (for tooltips)
contrebasse@70 75 local recipeLink = GetTradeSkillRecipeLink(i)
contrebasse@0 76
contrebasse@70 77 -- error checking
contrebasse@70 78 if itemID and reagentID and reagentCount and minMade and maxMade and recipeLink then
contrebasse@70 79 -- remove unneeded minMade/maxMade
contrebasse@70 80 if maxMade==minMade then
contrebasse@70 81 maxMade = nil
contrebasse@70 82 if minMade==1 then
contrebasse@70 83 minMade = nil
contrebasse@70 84 end -- if
contrebasse@70 85 end -- if
contrebasse@66 86
contrebasse@70 87 -- As we scan multiple times, check if this recipe is already stored
contrebasse@70 88 local addSpell = true
contrebasse@70 89 if not A.data[itemID] then
contrebasse@70 90 A.data[itemID] = {}
contrebasse@70 91 else
contrebasse@37 92 for _,v in ipairs(A.data[itemID]) do
contrebasse@70 93 if v.spellLink==recipeLink then
contrebasse@70 94 addSpell = nil
contrebasse@37 95 break
contrebasse@37 96 end -- if
contrebasse@37 97 end -- for
contrebasse@15 98 end -- if
contrebasse@70 99
contrebasse@70 100 -- Cache the data
contrebasse@70 101 if addSpell then
contrebasse@70 102 local spell = {reagentID,reagentCount,minMade,maxMade}
contrebasse@70 103 spell.spellID = tradeskillID
contrebasse@70 104 spell.spellLink = recipeLink
contrebasse@70 105 spell.manyReagents = GetTradeSkillNumReagents(i)>1
contrebasse@70 106 tinsert(A.data[itemID],spell)
contrebasse@70 107 end
contrebasse@70 108
contrebasse@70 109 else -- Zap incomplete recipes, they will be scanned later
contrebasse@70 110 --@debug@
contrebasse@70 111 print("Erreur de scan :",itemID,reagentID,reagentCount,minMade,maxMade,recipeLink)
contrebasse@70 112 --@end-debug@
contrebasse@70 113 end -- if
contrebasse@0 114 end -- if
contrebasse@15 115 end -- for
contrebasse@66 116
contrebasse@70 117 zzz = A.data
contrebasse@26 118 -- the scanning is complete
contrebasse@26 119 return true
contrebasse@15 120 end -- function
contrebasse@15 121 end -- do