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 |
