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 | 
