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