comparison ReagentMaker.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 60871b43531d
children 9cf4ca2145a3
comparison
equal deleted inserted replaced
69:0675410645de 70:32ec6417874a
124 124
125 -- Continue only if the reagent is known 125 -- Continue only if the reagent is known
126 if not reagentID or not A.data[reagentID] then return end 126 if not reagentID or not A.data[reagentID] then return end
127 127
128 -- If only one recipe is known for the reagent, use it 128 -- If only one recipe is known for the reagent, use it
129 if #(A.data[reagentID]) == 1 and not A.data[reagentID].spell then 129 if #(A.data[reagentID]) == 1 and not A.data[reagentID][1].macro then
130 local numMakable, reagentIndex = A.numMakable(reagentID) 130 local numMakable, reagentIndex = A.numMakable(reagentID)
131 if not numMakable then 131 if not numMakable then
132 A.Error(L["The recipe to make the reagent seems to be hidden, it is not makable."]) 132 A.Error(L["The recipe to make the reagent seems to be hidden, it is not makable."])
133 return 133 return
134 end 134 end
137 return 137 return
138 end 138 end
139 139
140 -- If we can make the item needed to make the reagent, open a window to make it 140 -- If we can make the item needed to make the reagent, open a window to make it
141 -- one step recursion, enables to mill to create an ink 141 -- one step recursion, enables to mill to create an ink
142 if (not A.data[reagentID].manyReagents) and A.data[A.data[reagentID][1][1]] then 142 if (not A.data[reagentID][1].manyReagents) and A.data[A.data[reagentID][1][1]] then
143 A.externalCraftWindow(A.data[reagentID][1][1],reagentID) 143 A.externalCraftWindow(A.data[reagentID][1][1],reagentID)
144 else 144 else
145 A.Error(L["You do not have enough reagents to craft [%s]"]:format(GetItemInfo(reagentID) or "item #"..reagentID)) 145 A.Error(L["You do not have enough reagents to craft [%s]"]:format(GetItemInfo(reagentID) or "item #"..reagentID))
146 end 146 end
147 return 147 return
212 -- Continue only if the reagent is known 212 -- Continue only if the reagent is known
213 if not reagentID or not A.data[reagentID] then return end 213 if not reagentID or not A.data[reagentID] then return end
214 214
215 btn.textureHighlight:Show() 215 btn.textureHighlight:Show()
216 216
217 -- Check if the item is made by only one recipe. If not, return
218 if #A.data[reagentID]>1 then
219 local spellLink
220 for _,v in ipairs(A.data[reagentID]) do
221 if not spellLink then
222 spellLink = v.spellLink
223 else
224 if v.spellLink ~= spellLink then
225 return
226 end
227 end
228 end
229 end
230
217 -- Tooltips 231 -- Tooltips
218 local link = A.data[reagentID].spellLink 232 local link = A.data[reagentID][1].spellLink
219 if link then 233 if link then
220 A.tooltipRecipe:SetOwner(btn) 234 A.tooltipRecipe:SetOwner(btn)
221 A.tooltipRecipe:SetHyperlink(link) 235 A.tooltipRecipe:SetHyperlink(link)
222 A.tooltipRecipe:Show() 236 A.tooltipRecipe:Show()
223 A.tooltipRecipe:ClearAllPoints() 237 A.tooltipRecipe:ClearAllPoints()
224 A.tooltipRecipe:SetPoint("BOTTOMLEFT",GameTooltip,"BOTTOMRIGHT") 238 A.tooltipRecipe:SetPoint("BOTTOMLEFT",GameTooltip,"BOTTOMRIGHT")
225 else
226 -- Shouldn't happend, but just in case...
227 A.Error(L["Recipe link not found for %s"]:format(reagentID))
228 end 239 end
229 end 240 end
230 241
231 function A.btnLeft(btn) 242 function A.btnLeft(btn)
232 btn.textureHighlight:Hide() 243 btn.textureHighlight:Hide()
238 if not recipeIndex then return end 249 if not recipeIndex then return end
239 250
240 -- Do not manage guild tradeskill 251 -- Do not manage guild tradeskill
241 if IsTradeSkillGuild() or IsTradeSkillLinked() then 252 if IsTradeSkillGuild() or IsTradeSkillLinked() then
242 for reagentRecipeIndex = 1,GetTradeSkillNumReagents(recipeIndex) do 253 for reagentRecipeIndex = 1,GetTradeSkillNumReagents(recipeIndex) do
243 _G["TradeSkillReagent"..reagentRecipeIndex].label:Hide() 254 -- If the normal tradeskill hasn't been opened yet, the field 'label' doesn't exists yet
255 local label = _G["TradeSkillReagent"..reagentRecipeIndex].label
256 if label then
257 label:Hide()
258 end
244 end 259 end
245 return 260 return
246 end 261 end
247 262
248 -- Count makable items and show it 263 -- Count makable items and show it
250 -- ID of the reagent we want to craft 265 -- ID of the reagent we want to craft
251 local reagentLink = GetTradeSkillReagentItemLink(recipeIndex, reagentRecipeIndex) 266 local reagentLink = GetTradeSkillReagentItemLink(recipeIndex, reagentRecipeIndex)
252 local reagentID = A.link2ID(reagentLink) 267 local reagentID = A.link2ID(reagentLink)
253 268
254 local label = _G["TradeSkillReagent"..reagentRecipeIndex].label 269 local label = _G["TradeSkillReagent"..reagentRecipeIndex].label
255 if not label then return end 270 if not label then break end -- Shouldn't happen...
256 271
257 -- Continue only if the reagent is known 272 -- Continue only if the reagent is known
258 if not reagentID or not A.data[reagentID] or #(A.data[reagentID]) ~= 1 or A.data[reagentID].spell then 273 if not reagentID or not A.data[reagentID] then
259 label:Hide() 274 label:Hide()
260 else 275 else
261 -- Count and show 276 -- Count and show
262 local numMakable = A.numMakable(reagentID) 277 local numMakable = A.numMakable(reagentID)
263 label:SetText(numMakable or "?") 278 if not numMakable or #(A.data[reagentID]) ~= 1 or A.data[reagentID][1].macro then
264 if not numMakable or numMakable==0 then 279 label:SetText("?")
265 label:SetTextColor(1, 0, 0, 1) 280 label:SetTextColor(0, 0.5, 1, 1) -- blue
266 else 281 else
267 label:SetTextColor(0, 5, 0, 1) 282 label:SetText(numMakable)
283 if numMakable==0 then
284 label:SetTextColor(1, 0, 0, 1) -- red
285 else
286 label:SetTextColor(0, 1, 0, 1) -- green
287 end
268 end -- if 288 end -- if
269 label:Show() 289 label:Show()
270 end -- if 290 end -- if
271 end -- for 291 end -- for
272 end -- function 292 end -- function