comparison data.lua @ 70:32ec6417874a

Change the internal data format (not done yet for the external window)
author contrebasse
date Sat, 14 May 2011 20:19:22 +0200
parents 0675410645de
children e837f5681fbb
comparison
equal deleted inserted replaced
69:0675410645de 70:32ec6417874a
36 -- Has to have recipes and begin with a header 36 -- Has to have recipes and begin with a header
37 local NRecipes = GetNumTradeSkills() 37 local NRecipes = GetNumTradeSkills()
38 if NRecipes==0 or select(2,GetTradeSkillInfo(1))~="header" then 38 if NRecipes==0 or select(2,GetTradeSkillInfo(1))~="header" then
39 return 39 return
40 end 40 end
41
42 tradeskillID = GetTradeSkillLine()
41 43
42 -- Check if the pseudo tradeskills have to be added 44 -- Check if the pseudo tradeskills have to be added
43 if GetTradeSkillLine() == GetSpellInfo(25229) then -- Jewelcrafting 45 if tradeskillID == GetSpellInfo(25229) then -- Jewelcrafting
44 if not A.ProspectingDataLoaded then 46 if not A.ProspectingDataLoaded then
45 for itemID,data in pairs(A.ProspectingData) do 47 for itemID,data in pairs(A.ProspectingData) do
46 A.data[itemID] = data 48 A.data[itemID] = data
47 end 49 end
48 A.ProspectingDataLoaded = true 50 A.ProspectingDataLoaded = true
49 end 51 end
50 elseif GetTradeSkillLine() == GetSpellInfo(45357) then -- Inscription 52 elseif tradeskillID == GetSpellInfo(45357) then -- Inscription
51 if not A.MillingDataLoaded then 53 if not A.MillingDataLoaded then
52 for itemID,data in pairs(A.MillingData) do 54 for itemID,data in pairs(A.MillingData) do
53 A.data[itemID] = data 55 A.data[itemID] = data
54 end 56 end
55 A.MillingDataLoaded = true 57 A.MillingDataLoaded = true
56 end 58 end
57 end 59 end
58 60
59 for i = 2,NRecipes do -- The first one is a header 61 for i = 2,NRecipes do -- The first one is a header
60 local skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(i) 62 -- skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(index)
61 if skillType ~= "header" then 63 -- serviceType is nil if the recipe creates an item
62 --if GetTradeSkillNumReagents(i) == 1 then 64 local _, skillType, _, _, serviceType = GetTradeSkillInfo(i)
63 -- item ID 65 if skillType and skillType ~= "header" and serviceType==nil then
64 local itemID = A.link2ID(GetTradeSkillItemLink(i)) 66 -- item ID
67 local itemID = A.link2ID(GetTradeSkillItemLink(i))
65 68
66 -- reagent ID, valid only if there's only one reagent as we take only the first one 69 -- reagent ID, valid only if there's only one reagent as we take only the first one
67 local reagentID = A.link2ID(GetTradeSkillReagentItemLink(i, 1)) 70 local reagentID = A.link2ID(GetTradeSkillReagentItemLink(i, 1))
68 71
69 -- reagent number needed 72 -- reagent number needed
70 local _, _, reagentCount, _ = GetTradeSkillReagentInfo(i, 1) 73 local _, _, reagentCount, _ = GetTradeSkillReagentInfo(i, 1)
71 74
72 -- number of reagent created by the recipe 75 -- number of reagent created by the recipe
73 local minMade, maxMade = GetTradeSkillNumMade(i) 76 local minMade, maxMade = GetTradeSkillNumMade(i)
74 77
75 -- recipe link (for tooltips) 78 -- recipe link (for tooltips)
76 local recipeLink = GetTradeSkillRecipeLink(i) 79 local recipeLink = GetTradeSkillRecipeLink(i)
77 80
78 -- error checking 81 -- error checking
79 if not reagentID or not reagentCount or not skillName or not itemID or not minMade or not maxMade or not recipeLink then 82 if itemID and reagentID and reagentCount and minMade and maxMade and recipeLink then
80 --@debug@ 83 -- remove unneeded minMade/maxMade
81 print("Erreur de scan :",itemID,skillName,reagentID,reagentCount,minMade,maxMade,recipeLink) 84 if maxMade==minMade then
82 --@end-debug@ 85 maxMade = nil
86 if minMade==1 then
87 minMade = nil
88 end -- if
89 end -- if
83 90
84 else -- Zap incomplete recipes, they will be scanned later 91 -- As we scan multiple times, check if this recipe is already stored
85 -- remove unneeded minMade/maxMade 92 local addSpell = true
86 if maxMade==minMade then 93 if not A.data[itemID] then
87 maxMade = nil 94 A.data[itemID] = {}
88 if minMade==1 then 95 else
89 minMade = nil
90 end -- if
91 end -- if
92
93 -- skillName or...???
94 -- There's still a problem when multiple recipes craft the same item
95 if not A.data[itemID] then
96 A.data[itemID] = {}
97 end -- if
98 local newSpell = true
99 for _,v in ipairs(A.data[itemID]) do 96 for _,v in ipairs(A.data[itemID]) do
100 if v.spellName==skillName then 97 if v.spellLink==recipeLink then
101 newSpell = nil 98 addSpell = nil
102 break 99 break
103 end -- if 100 end -- if
104 end -- for 101 end -- for
105 if newSpell then
106 A.data[itemID].spellLink = recipeLink
107 A.data[itemID].manyReagents = A.data[itemID].manyReagents or GetTradeSkillNumReagents(i)>1
108 tinsert(A.data[itemID],{reagentID,reagentCount,minMade,maxMade,spellName=skillName})
109 end -- if
110 end -- if 102 end -- if
111 --end -- if 103
104 -- Cache the data
105 if addSpell then
106 local spell = {reagentID,reagentCount,minMade,maxMade}
107 spell.spellID = tradeskillID
108 spell.spellLink = recipeLink
109 spell.manyReagents = GetTradeSkillNumReagents(i)>1
110 tinsert(A.data[itemID],spell)
111 end
112
113 else -- Zap incomplete recipes, they will be scanned later
114 --@debug@
115 print("Erreur de scan :",itemID,reagentID,reagentCount,minMade,maxMade,recipeLink)
116 --@end-debug@
117 end -- if
112 end -- if 118 end -- if
113 end -- for 119 end -- for
114 120
121 zzz = A.data
115 -- the scanning is complete 122 -- the scanning is complete
116 return true 123 return true
117 end -- function 124 end -- function
118 end -- do 125 end -- do