annotate data.lua @ 112:69300309ac21

Tagging as v1.1beta0
author contrebasse
date Thu, 02 Jun 2011 23:07:49 +0200
parents d60d6b4cab0c
children e6bb47c6d8d6
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@93 6 A.data = A.CommonData
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@108 12 local pairs = pairs
contrebasse@15 13 local tinsert = tinsert
contrebasse@67 14 local select = select
contrebasse@0 15
contrebasse@15 16 -- Wow functions
contrebasse@15 17 local GetNumTradeSkills = GetNumTradeSkills
contrebasse@15 18 local GetTradeSkillInfo = GetTradeSkillInfo
contrebasse@15 19 local GetTradeSkillNumReagents = GetTradeSkillNumReagents
contrebasse@15 20 local GetTradeSkillItemLink = GetTradeSkillItemLink
contrebasse@67 21 local GetTradeSkillRecipeLink = GetTradeSkillRecipeLink
contrebasse@15 22 local GetTradeSkillReagentItemLink = GetTradeSkillReagentItemLink
contrebasse@15 23 local GetTradeSkillReagentInfo = GetTradeSkillReagentInfo
contrebasse@15 24 local GetTradeSkillNumMade = GetTradeSkillNumMade
contrebasse@67 25 local GetSpellInfo = GetSpellInfo
contrebasse@67 26
contrebasse@67 27 -- Wow objects
contrebasse@67 28 local GetTradeSkillLine = GetTradeSkillLine
contrebasse@0 29
contrebasse@15 30 -- the function who scans the tradeskill
contrebasse@15 31 function A:ScanSimpleRecipes()
contrebasse@82 32 -- Do not scan while we modify the tradeskill display
contrebasse@82 33 if A.blockScan then return end
contrebasse@82 34
contrebasse@82 35
contrebasse@26 36 -- Check if the tradeskill is loaded
contrebasse@26 37 -- Has to have recipes and begin with a header
contrebasse@26 38 local NRecipes = GetNumTradeSkills()
contrebasse@26 39 if NRecipes==0 or select(2,GetTradeSkillInfo(1))~="header" then
contrebasse@26 40 return
contrebasse@26 41 end
contrebasse@108 42
contrebasse@108 43 local tradeskillName = GetTradeSkillLine()
contrebasse@66 44
contrebasse@67 45 -- Check if the pseudo tradeskills have to be added
contrebasse@85 46 if tradeskillName == GetSpellInfo(25229) then -- Jewelcrafting
contrebasse@67 47 if not A.ProspectingDataLoaded then
contrebasse@68 48 for itemID,data in pairs(A.ProspectingData) do
contrebasse@67 49 A.data[itemID] = data
contrebasse@67 50 end
contrebasse@67 51 A.ProspectingDataLoaded = true
contrebasse@67 52 end
contrebasse@85 53 elseif tradeskillName == GetSpellInfo(45357) then -- Inscription
contrebasse@67 54 if not A.MillingDataLoaded then
contrebasse@68 55 for itemID,data in pairs(A.MillingData) do
contrebasse@67 56 A.data[itemID] = data
contrebasse@67 57 end
contrebasse@67 58 A.MillingDataLoaded = true
contrebasse@67 59 end
contrebasse@67 60 end
contrebasse@67 61
contrebasse@82 62 local lastHeader
contrebasse@82 63 for i = 1,NRecipes do
contrebasse@70 64 -- skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(index)
contrebasse@70 65 -- serviceType is nil if the recipe creates an item
contrebasse@82 66 local skillName, skillType, _, _, serviceType = GetTradeSkillInfo(i)
contrebasse@82 67 if skillType and skillType == "header" then
contrebasse@82 68 lastHeader = skillName
contrebasse@82 69
contrebasse@82 70 elseif skillType and skillType ~= "header" and serviceType==nil then
contrebasse@70 71 -- item ID
contrebasse@70 72 local itemID = A.link2ID(GetTradeSkillItemLink(i))
contrebasse@0 73
contrebasse@93 74 local numReagents = GetTradeSkillNumReagents(i)
contrebasse@93 75 local reagentID, reagentCount
contrebasse@93 76 if numReagents==1 then
contrebasse@93 77 -- reagent ID
contrebasse@93 78 reagentID = A.link2ID(GetTradeSkillReagentItemLink(i, 1))
contrebasse@14 79
contrebasse@93 80 -- reagent number needed
contrebasse@93 81 reagentCount = select(3,GetTradeSkillReagentInfo(i, 1))
contrebasse@108 82 else
contrebasse@108 83 -- no reagentID
contrebasse@108 84
contrebasse@108 85 -- contains data for the whole reagents
contrebasse@108 86 reagentCount = {}
contrebasse@108 87 for j = 1,numReagents do
contrebasse@108 88 tinsert(reagentCount,{A.link2ID(GetTradeSkillReagentItemLink(i, j)), select(3,GetTradeSkillReagentInfo(i, j))})
contrebasse@108 89 end
contrebasse@93 90 end
contrebasse@14 91
contrebasse@70 92 -- number of reagent created by the recipe
contrebasse@70 93 local minMade, maxMade = GetTradeSkillNumMade(i)
contrebasse@66 94
contrebasse@70 95 -- recipe link (for tooltips)
contrebasse@70 96 local recipeLink = GetTradeSkillRecipeLink(i)
contrebasse@0 97
contrebasse@70 98 -- error checking
contrebasse@93 99 if itemID and (numReagents ~= 1 or (reagentID and reagentCount)) and minMade and maxMade and recipeLink then
contrebasse@70 100 -- remove unneeded minMade/maxMade
contrebasse@70 101 if maxMade==minMade then
contrebasse@70 102 maxMade = nil
contrebasse@70 103 if minMade==1 then
contrebasse@70 104 minMade = nil
contrebasse@70 105 end -- if
contrebasse@70 106 end -- if
contrebasse@66 107
contrebasse@70 108 -- As we scan multiple times, check if this recipe is already stored
contrebasse@70 109 local addSpell = true
contrebasse@70 110 if not A.data[itemID] then
contrebasse@70 111 A.data[itemID] = {}
contrebasse@70 112 else
contrebasse@37 113 for _,v in ipairs(A.data[itemID]) do
contrebasse@70 114 if v.spellLink==recipeLink then
contrebasse@70 115 addSpell = nil
contrebasse@37 116 break
contrebasse@37 117 end -- if
contrebasse@37 118 end -- for
contrebasse@15 119 end -- if
contrebasse@108 120
contrebasse@70 121 -- Cache the data
contrebasse@70 122 if addSpell then
contrebasse@70 123 local spell = {reagentID,reagentCount,minMade,maxMade}
contrebasse@110 124 spell.skillName = skillName
contrebasse@110 125 spell.tradeskillName = tradeskillName
contrebasse@70 126 spell.spellLink = recipeLink
contrebasse@82 127 spell.header = lastHeader
contrebasse@70 128 tinsert(A.data[itemID],spell)
contrebasse@70 129 end
contrebasse@70 130 end -- if
contrebasse@0 131 end -- if
contrebasse@15 132 end -- for
contrebasse@26 133 -- the scanning is complete
contrebasse@26 134 return true
contrebasse@15 135 end -- function
contrebasse@15 136 end -- do