Mercurial > wow > reagentmaker
comparison data.lua @ 15:cc56799582f2
Use local references to global functions to speed up scanning
author | contrebasse |
---|---|
date | Wed, 06 Apr 2011 00:28:13 +0200 |
parents | 5c8fcfdd1e24 |
children | 4ea38bae4174 |
comparison
equal
deleted
inserted
replaced
14:5c8fcfdd1e24 | 15:cc56799582f2 |
---|---|
1 local addonName, A = ... | 1 local addonName, A = ... |
2 | 2 |
3 MillID = 51005 | 3 local MillID = 51005 |
4 macroMill = "/cast "..GetSpellInfo(MillID).."\n/use " | 4 local macroMill = "/cast "..GetSpellInfo(MillID).."\n/use " |
5 ProspectID = 31252 | 5 local ProspectID = 31252 |
6 macroProspect = "/cast "..GetSpellInfo(ProspectID).."\n/use " | 6 local macroProspect = "/cast "..GetSpellInfo(ProspectID).."\n/use " |
7 A.data = { | 7 A.data = { |
8 -- Mill | 8 -- Mill |
9 -- Normal pigments | 9 -- Normal pigments |
10 [39151] = { -- Alabaster Pigment | 10 [39151] = { -- Alabaster Pigment |
11 spell = macroMill, | 11 spell = macroMill, |
238 | 238 |
239 -- @todo improve scanning | 239 -- @todo improve scanning |
240 -- @todo rescan when a new refipe appears (TRADESKILL_UPDATE ?) | 240 -- @todo rescan when a new refipe appears (TRADESKILL_UPDATE ?) |
241 -- @todo be sure that skillName is unique, or use something else | 241 -- @todo be sure that skillName is unique, or use something else |
242 -- @todo add support for multi-reagents recipes | 242 -- @todo add support for multi-reagents recipes |
243 function A:ScanSimpleRecipes() | 243 do |
244 for i = 1,GetNumTradeSkills() do | 244 -- lua functions |
245 local skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(i) | 245 local print = print |
246 if skillType ~= "header" then | 246 local ipairs = ipairs |
247 if GetTradeSkillNumReagents(i) == 1 then | 247 local tinsert = tinsert |
248 -- item ID | 248 |
249 local itemID = A.link2ID(GetTradeSkillItemLink(i)) | 249 -- Wow functions |
250 | 250 local GetNumTradeSkills = GetNumTradeSkills |
251 -- reagent ID | 251 local GetTradeSkillInfo = GetTradeSkillInfo |
252 local reagentID = A.link2ID(GetTradeSkillReagentItemLink(i, 1)) | 252 local GetTradeSkillNumReagents = GetTradeSkillNumReagents |
253 | 253 local GetTradeSkillItemLink = GetTradeSkillItemLink |
254 -- reagent number needed | 254 local GetTradeSkillReagentItemLink = GetTradeSkillReagentItemLink |
255 local reagentName, reagentTexture, reagentCount, playerReagentCount = GetTradeSkillReagentInfo(i, 1) | 255 local GetTradeSkillReagentInfo = GetTradeSkillReagentInfo |
256 | 256 local GetTradeSkillNumMade = GetTradeSkillNumMade |
257 -- number of reagent created by the recipe | 257 |
258 local minMade, maxMade = GetTradeSkillNumMade(i) | 258 -- the function who scans the tradeskill |
259 | 259 function A:ScanSimpleRecipes() |
260 -- error checking | 260 for i = 1,GetNumTradeSkills() do |
261 if not reagentID or not reagentCount or not skillName or not itemID or not minMade or not maxMade then | 261 local skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(i) |
262 print("Erreur de scan :",itemID,skillName,reagentID,reagentCount,minMade,maxMade) | 262 if skillType ~= "header" then |
263 end | 263 if GetTradeSkillNumReagents(i) == 1 then |
264 | 264 -- item ID |
265 -- remove unneeded minMade/maxMade | 265 local itemID = A.link2ID(GetTradeSkillItemLink(i)) |
266 if maxMade==minMade then | 266 |
267 maxMade = nil | 267 -- reagent ID |
268 if minMade==1 then | 268 local reagentID = A.link2ID(GetTradeSkillReagentItemLink(i, 1)) |
269 minMade = nil | 269 |
270 end | 270 -- reagent number needed |
271 end | 271 local reagentName, reagentTexture, reagentCount, playerReagentCount = GetTradeSkillReagentInfo(i, 1) |
272 | 272 |
273 -- skillName or...??? | 273 -- number of reagent created by the recipe |
274 if not A.data[itemID] then | 274 local minMade, maxMade = GetTradeSkillNumMade(i) |
275 A.data[itemID] = {} | 275 |
276 end | 276 -- error checking |
277 local newSpell = true | 277 if not reagentID or not reagentCount or not skillName or not itemID or not minMade or not maxMade then |
278 for _,v in ipairs(A.data[itemID]) do | 278 print("Erreur de scan :",itemID,skillName,reagentID,reagentCount,minMade,maxMade) |
279 if v.spellName==skillName then | 279 end -- if |
280 newSpell = nil | 280 |
281 break | 281 -- remove unneeded minMade/maxMade |
282 end | 282 if maxMade==minMade then |
283 end | 283 maxMade = nil |
284 if newSpell then | 284 if minMade==1 then |
285 tinsert(A.data[itemID],{reagentID,reagentCount,minMade,maxMade,spellName=skillName}) | 285 minMade = nil |
286 end | 286 end -- if |
287 end -- if | |
288 | |
289 -- skillName or...??? | |
290 if not A.data[itemID] then | |
291 A.data[itemID] = {} | |
292 end -- if | |
293 local newSpell = true | |
294 for _,v in ipairs(A.data[itemID]) do | |
295 if v.spellName==skillName then | |
296 newSpell = nil | |
297 break | |
298 end -- if | |
299 end -- for | |
300 if newSpell then | |
301 tinsert(A.data[itemID],{reagentID,reagentCount,minMade,maxMade,spellName=skillName}) | |
302 end -- if | |
303 end -- if | |
287 end -- if | 304 end -- if |
288 end -- if | 305 end -- for |
289 end -- for | 306 end -- function |
290 end | 307 end -- do |