Mercurial > wow > reagentmaker
comparison data.lua @ 117:e6bb47c6d8d6
Hopefuly fixed ticket #1
| author | contrebasse |
|---|---|
| date | Sun, 19 Jun 2011 13:04:37 +0200 |
| parents | d60d6b4cab0c |
| children | c32d6bf6cfc1 |
comparison
equal
deleted
inserted
replaced
| 116:7ce304c296b0 | 117:e6bb47c6d8d6 |
|---|---|
| 1 local addonName, A = ... | 1 local addonName, A = ... |
| 2 | |
| 3 -- @todo: enchants, elementals, prospecting | |
| 4 -- @todo improve scanning | |
| 5 | 2 |
| 6 A.data = A.CommonData | 3 A.data = A.CommonData |
| 7 | 4 |
| 8 do | 5 do |
| 9 -- lua functions | 6 -- lua functions |
| 30 -- the function who scans the tradeskill | 27 -- the function who scans the tradeskill |
| 31 function A:ScanSimpleRecipes() | 28 function A:ScanSimpleRecipes() |
| 32 -- Do not scan while we modify the tradeskill display | 29 -- Do not scan while we modify the tradeskill display |
| 33 if A.blockScan then return end | 30 if A.blockScan then return end |
| 34 | 31 |
| 35 | |
| 36 -- Check if the tradeskill is loaded | 32 -- Check if the tradeskill is loaded |
| 37 -- Has to have recipes and begin with a header | 33 -- Has to have recipes and begin with a header |
| 38 local NRecipes = GetNumTradeSkills() | 34 local NRecipes = GetNumTradeSkills() |
| 39 if NRecipes==0 or select(2,GetTradeSkillInfo(1))~="header" then | 35 if NRecipes==0 or select(2,GetTradeSkillInfo(1))~="header" then |
| 40 return | 36 return |
| 58 A.MillingDataLoaded = true | 54 A.MillingDataLoaded = true |
| 59 end | 55 end |
| 60 end | 56 end |
| 61 | 57 |
| 62 local lastHeader | 58 local lastHeader |
| 59 local isScanCorrect = true | |
| 63 for i = 1,NRecipes do | 60 for i = 1,NRecipes do |
| 64 -- skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(index) | 61 -- skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(index) |
| 65 -- serviceType is nil if the recipe creates an item | 62 -- serviceType is nil if the recipe creates an item |
| 66 local skillName, skillType, _, _, serviceType = GetTradeSkillInfo(i) | 63 local skillName, skillType, _, _, serviceType = GetTradeSkillInfo(i) |
| 64 if not skillName then return end | |
| 65 | |
| 66 -- Save the name of the header | |
| 67 if skillType and skillType == "header" then | 67 if skillType and skillType == "header" then |
| 68 lastHeader = skillName | 68 lastHeader = skillName |
| 69 | 69 |
| 70 -- Analyse recipe | |
| 70 elseif skillType and skillType ~= "header" and serviceType==nil then | 71 elseif skillType and skillType ~= "header" and serviceType==nil then |
| 72 local isRecipeCorrect = true | |
| 73 | |
| 71 -- item ID | 74 -- item ID |
| 72 local itemID = A.link2ID(GetTradeSkillItemLink(i)) | 75 local itemID = A.link2ID(GetTradeSkillItemLink(i)) |
| 76 if not itemID then isRecipeCorrect = false; end | |
| 73 | 77 |
| 74 local numReagents = GetTradeSkillNumReagents(i) | 78 local numReagents = GetTradeSkillNumReagents(i) |
| 79 if not numReagents then isRecipeCorrect = false; end | |
| 80 | |
| 75 local reagentID, reagentCount | 81 local reagentID, reagentCount |
| 76 if numReagents==1 then | 82 if numReagents==1 then |
| 77 -- reagent ID | 83 -- reagent ID |
| 78 reagentID = A.link2ID(GetTradeSkillReagentItemLink(i, 1)) | 84 reagentID = A.link2ID(GetTradeSkillReagentItemLink(i, 1)) |
| 85 if not reagentID then isRecipeCorrect = false; end | |
| 79 | 86 |
| 80 -- reagent number needed | 87 -- reagent number needed |
| 81 reagentCount = select(3,GetTradeSkillReagentInfo(i, 1)) | 88 reagentCount = select(3,GetTradeSkillReagentInfo(i, 1)) |
| 89 if not reagentCount then isRecipeCorrect = false; end | |
| 82 else | 90 else |
| 83 -- no reagentID | 91 -- no reagentID (is already nil) |
| 92 --reagentID = nil | |
| 84 | 93 |
| 85 -- contains data for the whole reagents | 94 -- contains data for the whole reagents |
| 86 reagentCount = {} | 95 reagentCount = {} |
| 87 for j = 1,numReagents do | 96 for j = 1,numReagents do |
| 88 tinsert(reagentCount,{A.link2ID(GetTradeSkillReagentItemLink(i, j)), select(3,GetTradeSkillReagentInfo(i, j))}) | 97 local id = A.link2ID(GetTradeSkillReagentItemLink(i, j)) |
| 98 local num = select(3,GetTradeSkillReagentInfo(i, j)) | |
| 99 if not id or not num then isRecipeCorrect = false; break; end | |
| 100 tinsert(reagentCount,{id, num}) | |
| 89 end | 101 end |
| 90 end | 102 end |
| 91 | 103 |
| 92 -- number of reagent created by the recipe | 104 -- number of reagent created by the recipe |
| 93 local minMade, maxMade = GetTradeSkillNumMade(i) | 105 local minMade, maxMade = GetTradeSkillNumMade(i) |
| 106 if not minMade or not maxMade then isRecipeCorrect = false; end | |
| 94 | 107 |
| 95 -- recipe link (for tooltips) | 108 -- recipe link (for tooltips) |
| 96 local recipeLink = GetTradeSkillRecipeLink(i) | 109 local recipeLink = GetTradeSkillRecipeLink(i) |
| 110 if not recipeLink then isRecipeCorrect = false; end | |
| 97 | 111 |
| 112 if not isRecipeCorrect then | |
| 113 print("Recette incorrecte") | |
| 114 isScanCorrect = false | |
| 115 end | |
| 98 -- error checking | 116 -- error checking |
| 99 if itemID and (numReagents ~= 1 or (reagentID and reagentCount)) and minMade and maxMade and recipeLink then | 117 if isRecipeCorrect then |
| 100 -- remove unneeded minMade/maxMade | 118 -- remove unneeded minMade/maxMade |
| 101 if maxMade==minMade then | 119 if maxMade==minMade then |
| 102 maxMade = nil | 120 maxMade = nil |
| 103 if minMade==1 then | 121 if minMade==1 then |
| 104 minMade = nil | 122 minMade = nil |
| 129 end | 147 end |
| 130 end -- if | 148 end -- if |
| 131 end -- if | 149 end -- if |
| 132 end -- for | 150 end -- for |
| 133 -- the scanning is complete | 151 -- the scanning is complete |
| 134 return true | 152 if not isScanCorrect then |
| 153 print("Erreur dans le scan") | |
| 154 end | |
| 155 return isScanCorrect | |
| 135 end -- function | 156 end -- function |
| 136 end -- do | 157 end -- do |
