Mercurial > wow > reagentmaker
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 | 
