Mercurial > wow > reagentmaker
comparison SecureMenu.lua @ 34:0af9cb8a79f0
Manage items not ready (not in cache ?) when opening the external frame. Can potentially conflict with BAG_UPDATE event.
| author | contrebasse |
|---|---|
| date | Fri, 29 Apr 2011 21:26:19 +0200 |
| parents | 218e1dd1b821 |
| children | 5394c492850e |
comparison
equal
deleted
inserted
replaced
| 33:218e1dd1b821 | 34:0af9cb8a79f0 |
|---|---|
| 1 local addonName, A = ... | 1 local addonName, A = ... |
| 2 | 2 |
| 3 -- Create the menu frame | 3 -- Create the menu frame |
| 4 local MenuFrame = CreateFrame("Frame","ReagentMaker_ExternalFrame",UIParent) --, "ReagentMakerDropDownMenu"); -- Needs a global name ? | 4 local MenuFrame = CreateFrame("Frame","ReagentMaker_ExternalFrame",UIParent) |
| 5 MenuFrame:Hide() | 5 MenuFrame:Hide() |
| 6 MenuFrame:SetSize(192,256) | 6 MenuFrame:SetSize(192,256) |
| 7 MenuFrame:SetFrameStrata("DIALOG") | 7 MenuFrame:SetFrameStrata("DIALOG") |
| 8 MenuFrame:EnableMouse(true) | 8 MenuFrame:EnableMouse(true) |
| 9 MenuFrame:SetPoint("CENTER") | 9 MenuFrame:SetPoint("CENTER") |
| 231 else | 231 else |
| 232 btn = menuEntries[numActiveEntries+1] | 232 btn = menuEntries[numActiveEntries+1] |
| 233 end | 233 end |
| 234 | 234 |
| 235 -- Set text and icon | 235 -- Set text and icon |
| 236 local name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(reagent[1]) | 236 local name, _, _, _, _, _, _, _, _, texture = GetItemInfo(reagent[1]) |
| 237 if name then | 237 if name then |
| 238 btn.itemName:SetText(name) | 238 btn.itemName:SetText(name) |
| 239 else | 239 else |
| 240 A.DEBUG("No item name : "..reagent[1]) | 240 --A.DEBUG("No item name : "..reagent[1]) |
| 241 return | 241 return |
| 242 end | 242 end |
| 243 | 243 |
| 244 if texture then | 244 if texture then |
| 245 btn.icon:SetTexture(texture) | 245 btn.icon:SetTexture(texture) |
| 246 else | 246 else |
| 247 A.DEBUG("No item texture : "..reagent[1]) | 247 --A.DEBUG("No item texture : "..reagent[1]) |
| 248 return | 248 return |
| 249 end | 249 end |
| 250 | 250 |
| 251 -- Set chance to have the item or the number of items created | 251 -- Set chance to have the item or the number of items created |
| 252 if reagent[3] then | 252 if reagent[3] then |
| 279 | 279 |
| 280 btn:Show() | 280 btn:Show() |
| 281 | 281 |
| 282 -- Increase the entry number | 282 -- Increase the entry number |
| 283 numActiveEntries = numActiveEntries + 1 | 283 numActiveEntries = numActiveEntries + 1 |
| 284 | |
| 285 -- Everything went well | |
| 286 return true | |
| 284 end -- function | 287 end -- function |
| 288 | |
| 289 -- Function used on OnUpdate tu update the frame if there were errors the previous time | |
| 290 local function reopen() | |
| 291 -- Release OnUpdate frame (could conflict with BAG_UPDATE) | |
| 292 MenuFrame:SetScript("OnUpdate",nil) | |
| 293 | |
| 294 -- reopen | |
| 295 A.externalCraftWindow(MenuFrame.itemID,MenuFrame.superItemID) | |
| 296 end | |
| 285 | 297 |
| 286 -- Fill the window and open it | 298 -- Fill the window and open it |
| 287 function A.externalCraftWindow(itemID,superItemID) | 299 function A.externalCraftWindow(itemID,superItemID) |
| 288 -- Do not open during combat | 300 -- Do not open during combat |
| 289 if InCombatLockdown() then return end | 301 if InCombatLockdown() then return end |
| 297 menuEntries[i]:Hide() | 309 menuEntries[i]:Hide() |
| 298 end | 310 end |
| 299 numActiveEntries = 0 | 311 numActiveEntries = 0 |
| 300 | 312 |
| 301 -- Fill the info of the reagent to make | 313 -- Fill the info of the reagent to make |
| 302 local name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(itemID) | 314 local name, _, quality, _, _, _, _, _, _, texture = GetItemInfo(itemID) |
| 303 SetPortraitToTexture(itemIcon, texture) | 315 SetPortraitToTexture(itemIcon, texture) |
| 304 TitleText:SetText(name) | 316 TitleText:SetText(name) |
| 305 local color = ITEM_QUALITY_COLORS[quality] | 317 local color = ITEM_QUALITY_COLORS[quality] |
| 306 TitleText:SetTextColor(color.r, color.g, color.b) | 318 TitleText:SetTextColor(color.r, color.g, color.b) |
| 307 | 319 |
| 308 -- Save vars to show the tooltip later | 320 -- Save vars to show the tooltip later |
| 309 MenuFrame.reagentLink = link | 321 MenuFrame.reagentLink = link |
| 310 MenuFrame.spellLink = A.data[itemID].spellLink | 322 MenuFrame.spellLink = A.data[itemID].spellLink |
| 311 MenuFrame.itemID = itemID | 323 MenuFrame.itemID = itemID |
| 312 MenuFrame.superItemID = superItemID -- optional | 324 MenuFrame.superItemID = superItemID -- optional |
| 313 | 325 |
| 314 -- Loop over the available recipes | 326 -- Loop over the available recipes |
| 327 MenuFrame.state = true | |
| 315 for _,reagent in ipairs(A.data[itemID]) do | 328 for _,reagent in ipairs(A.data[itemID]) do |
| 316 if A.data[itemID].spell then | 329 if A.data[itemID].spell then |
| 317 -- Special spell | 330 -- Special spell |
| 318 menuAddItem(A.data[itemID].spell,itemID,reagent,A.data[itemID].spellLink) | 331 MenuFrame.state = menuAddItem(A.data[itemID].spell,itemID,reagent,A.data[itemID].spellLink) and state |
| 319 else | 332 else |
| 320 -- Standard tradeskill spell UNTESTED | 333 -- Standard tradeskill spell UNTESTED |
| 321 menuAddItem(A.craft,itemID,reagent) | 334 MenuFrame.state = menuAddItem(A.craft,itemID,reagent) and state |
| 322 end -- if | 335 end -- if |
| 323 end -- for | 336 end -- for |
| 324 | 337 |
| 325 MenuFrame:SetHeight(89 + numActiveEntries*(MENU_ENTRY_HEIGHT+2)) | 338 MenuFrame:SetHeight(89 + numActiveEntries*(MENU_ENTRY_HEIGHT+2)) |
| 326 | 339 |
| 328 MenuFrame:SetPoint("TOPLEFT",TradeSkillFrame,"TOPRIGHT",-2,14) | 341 MenuFrame:SetPoint("TOPLEFT",TradeSkillFrame,"TOPRIGHT",-2,14) |
| 329 | 342 |
| 330 MenuFrame.updateCounts() | 343 MenuFrame.updateCounts() |
| 331 | 344 |
| 332 MenuFrame:Show() | 345 MenuFrame:Show() |
| 333 end | 346 |
| 347 if not MenuFrame.state then | |
| 348 MenuFrame:SetScript("OnUpdate",reopen) | |
| 349 end | |
| 350 end |
