Mercurial > wow > askmrrobot
comparison Gear.lua @ 133:a0894ffebd15 v62
Bug fixes and tweaks for 8.0.
| author | yellowfive |
|---|---|
| date | Wed, 25 Jul 2018 12:17:24 -0700 |
| parents | d9a059484b22 |
| children | 57be71eccc0a |
comparison
equal
deleted
inserted
replaced
| 132:2279d58793c6 | 133:a0894ffebd15 |
|---|---|
| 249 local prevElem = icon | 249 local prevElem = icon |
| 250 for slotNum = 1, #Amr.SlotIds do | 250 for slotNum = 1, #Amr.SlotIds do |
| 251 local slotId = Amr.SlotIds[slotNum] | 251 local slotId = Amr.SlotIds[slotNum] |
| 252 | 252 |
| 253 local equippedItem = equipped and equipped[slotId] or nil | 253 local equippedItem = equipped and equipped[slotId] or nil |
| 254 local equippedItemLink = equipped and equipped.link or nil | 254 --local equippedItemLink = equipped and equipped.link or nil |
| 255 local optimalItem = gear[slotId] | 255 local optimalItem = gear[slotId] |
| 256 local optimalItemLink = Amr.CreateItemLink(optimalItem) | 256 local optimalItemLink = Amr.CreateItemLink(optimalItem) |
| 257 | 257 |
| 258 -- see if item is currently equipped, is false if don't have any item for that slot (e.g. OH for a 2-hander) | 258 -- see if item is currently equipped, is false if don't have any item for that slot (e.g. OH for a 2-hander) |
| 259 local isEquipped = false | 259 local isEquipped = false |
| 296 lblItem:SetPoint("TOPLEFT", lblEquipped.frame, "TOPRIGHT", 0, 0) | 296 lblItem:SetPoint("TOPLEFT", lblEquipped.frame, "TOPRIGHT", 0, 0) |
| 297 lblItem:SetWordWrap(false) | 297 lblItem:SetWordWrap(false) |
| 298 lblItem:SetWidth(345) | 298 lblItem:SetWidth(345) |
| 299 lblItem:SetFont(Amr.CreateFont(isEquipped and "Regular" or "Bold", isEquipped and 14 or 15, Amr.Colors.White)) | 299 lblItem:SetFont(Amr.CreateFont(isEquipped and "Regular" or "Bold", isEquipped and 14 or 15, Amr.Colors.White)) |
| 300 | 300 |
| 301 -- fill the name/ilvl labels, which may require asynchronous loading of item information | 301 -- fill the name/ilvl labels, which may require asynchronous loading of item information |
| 302 if optimalItemLink then | 302 if optimalItemLink then |
| 303 Amr.GetItemInfo(optimalItemLink, function(obj, name, link, quality, iLevel) | 303 local gameItem = Item:CreateFromItemLink(optimalItemLink) |
| 304 -- set item name, tooltip, and ilvl | 304 if gameItem then |
| 305 obj.nameLabel:SetText(link:gsub("%[", ""):gsub("%]", "")) | 305 local q = gameItem:GetItemQuality() |
| 306 | 306 if q == 6 then |
| 307 if quality == 6 then | |
| 308 -- not quite right but whatever... close enough, artifacts are a thing of the past | |
| 309 local tmprel = obj.optimalItem.relicBonusIds | |
| 310 obj.optimalItem.relicBonusIds = nil | |
| 311 link = Amr.CreateItemLink(obj.optimalItem) | |
| 312 obj.optimalItem.relicBonusIds = tmprel | |
| 313 | |
| 314 -- for artifacts, we consider it equipped if the item id alone matches | 307 -- for artifacts, we consider it equipped if the item id alone matches |
| 315 if obj.equippedItem and obj.equippedItem.id == obj.optimalItem.id then | 308 if equippedItem and equippedItem.id == optimalItem.id then |
| 316 obj.isEquipped = true | 309 isEquipped = true |
| 317 end | 310 end |
| 318 obj.equipLabel:SetText(obj.isEquipped and "E" or "") | 311 lblEquipped:SetText(isEquipped and "E" or "") |
| 319 end | 312 end |
| 320 | 313 |
| 321 Amr:SetItemTooltip(obj.nameLabel, link, "ANCHOR_TOPRIGHT") | 314 lblItem:SetFont(Amr.CreateFont(isEquipped and "Regular" or "Bold", isEquipped and 14 or 15, Amr.Colors.Qualities[q])) |
| 322 | 315 lblItem:SetText(gameItem:GetItemName()) |
| 323 local itemObj = Item:CreateFromItemLink(link) | 316 lblIlvl:SetText(gameItem:GetCurrentItemLevel()) |
| 324 if itemObj then | 317 Amr:SetItemTooltip(lblItem, gameItem:GetItemLink(), "ANCHOR_TOPRIGHT") |
| 325 -- game's GetItemInfo method returns the wrong ilvl sometimes, so use the new item api to get it | 318 end |
| 326 iLevel = itemObj:GetCurrentItemLevel() | |
| 327 end | |
| 328 obj.ilvlLabel:SetText(iLevel) | |
| 329 | |
| 330 end, { | |
| 331 ilvlLabel = lblIlvl, | |
| 332 nameLabel = lblItem, | |
| 333 equipLabel = lblEquipped, | |
| 334 optimalItem = optimalItem, | |
| 335 equippedItem = equippedItem, | |
| 336 isEquipped = isEquipped | |
| 337 }) | |
| 338 end | 319 end |
| 339 | 320 |
| 340 -- modifications | 321 -- modifications |
| 341 if optimalItem then | 322 if optimalItem then |
| 342 | 323 |
| 351 local isPowerActive = Amr.Contains(equippedAzt, spellId) | 332 local isPowerActive = Amr.Contains(equippedAzt, spellId) |
| 352 | 333 |
| 353 local socketBorder, socketIcon = createSocketWidget(panelMods, prevSocket or lblItem, prevSocket, isPowerActive) | 334 local socketBorder, socketIcon = createSocketWidget(panelMods, prevSocket or lblItem, prevSocket, isPowerActive) |
| 354 | 335 |
| 355 -- set icon and tooltip | 336 -- set icon and tooltip |
| 356 local spellName, _, spellIcon = GetSpellInfo(spellId) | 337 local _, _, spellIcon = GetSpellInfo(spellId) |
| 357 socketIcon:SetIcon(spellIcon) | 338 socketIcon:SetIcon(spellIcon) |
| 358 Amr:SetSpellTooltip(socketIcon, spellId, "ANCHOR_TOPRIGHT") | 339 Amr:SetSpellTooltip(socketIcon, spellId, "ANCHOR_TOPRIGHT") |
| 359 | 340 |
| 360 prevSocket = socketBorder | 341 prevSocket = socketBorder |
| 361 end | 342 end |
| 370 local isGemEquipped = matchItem and matchItem.gemIds and matchItem.gemIds[i] == g | 351 local isGemEquipped = matchItem and matchItem.gemIds and matchItem.gemIds[i] == g |
| 371 | 352 |
| 372 local socketBorder, socketIcon = createSocketWidget(panelMods, prevSocket or lblItem, prevSocket, isGemEquipped) | 353 local socketBorder, socketIcon = createSocketWidget(panelMods, prevSocket or lblItem, prevSocket, isGemEquipped) |
| 373 | 354 |
| 374 -- get icon for optimized gem | 355 -- get icon for optimized gem |
| 375 Amr.GetItemInfo(g, function(obj, name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture) | 356 local gameItem = Item:CreateFromItemID(g) |
| 376 -- set icon and a tooltip | 357 if gameItem then |
| 377 obj:SetIcon(texture) | 358 socketIcon:SetIcon(gameItem:GetItemIcon()) |
| 378 Amr:SetItemTooltip(obj, link, "ANCHOR_TOPRIGHT") | 359 Amr:SetItemTooltip(socketIcon, gameItem:GetItemLink(), "ANCHOR_TOPRIGHT") |
| 379 end, socketIcon) | 360 end |
| 380 | 361 |
| 381 prevSocket = socketBorder | 362 prevSocket = socketBorder |
| 382 end | 363 end |
| 383 end | 364 end |
| 384 | 365 |
| 395 | 376 |
| 396 local enchInfo = Amr.db.char.ExtraEnchantData[optimalItem.enchantId] | 377 local enchInfo = Amr.db.char.ExtraEnchantData[optimalItem.enchantId] |
| 397 if enchInfo then | 378 if enchInfo then |
| 398 lblEnchant:SetText(enchInfo.text) | 379 lblEnchant:SetText(enchInfo.text) |
| 399 | 380 |
| 400 Amr.GetItemInfo(enchInfo.itemId, function(obj, name, link) | 381 local gameItem = Item:CreateFromItemID(enchInfo.itemId) |
| 401 Amr:SetItemTooltip(obj, link, "ANCHOR_TOPRIGHT") | 382 if gameItem then |
| 402 end, lblEnchant) | 383 Amr:SetItemTooltip(lblEnchant, gameItem:GetItemLink(), "ANCHOR_TOPRIGHT") |
| 403 --Amr:SetSpellTooltip(lblEnchant, enchInfo.spellId) | 384 end |
| 404 end | 385 end |
| 405 | 386 |
| 406 end | 387 end |
| 407 end | 388 end |
| 408 | 389 |
| 626 -- on completion, create an equipment manager set if desired | 607 -- on completion, create an equipment manager set if desired |
| 627 local function onEquipGearSetComplete() | 608 local function onEquipGearSetComplete() |
| 628 if Amr.db.profile.options.disableEm then return end | 609 if Amr.db.profile.options.disableEm then return end |
| 629 | 610 |
| 630 -- create an equipment manager set | 611 -- create an equipment manager set |
| 631 local specId, specName = GetSpecializationInfo(GetSpecialization()) | 612 |
| 632 | 613 -- note: ignore slots and/or saveset need to be called twice |
| 614 -- for some reason, the slot is treated as blank if you try to ignore once on the first load of the equipment manager | |
| 615 | |
| 616 -- clear any currently ignored slots | |
| 617 C_EquipmentSet.ClearIgnoredSlotsForSave() | |
| 618 C_EquipmentSet.ClearIgnoredSlotsForSave() | |
| 619 | |
| 620 -- ignore shirt and tabard | |
| 621 C_EquipmentSet.IgnoreSlotForSave(INVSLOT_BODY) -- shirt | |
| 622 C_EquipmentSet.IgnoreSlotForSave(INVSLOT_TABARD) | |
| 623 C_EquipmentSet.IgnoreSlotForSave(INVSLOT_BODY) -- shirt | |
| 624 C_EquipmentSet.IgnoreSlotForSave(INVSLOT_TABARD) | |
| 625 | |
| 626 -- for now use icon of the spec | |
| 627 local _, specName, _, setIcon = GetSpecializationInfo(GetSpecialization()) | |
| 628 | |
| 629 --[[ | |
| 633 local item = Amr.ParseItemLink(GetInventoryItemLink("player", INVSLOT_MAINHAND)) | 630 local item = Amr.ParseItemLink(GetInventoryItemLink("player", INVSLOT_MAINHAND)) |
| 634 if not item then | 631 if not item then |
| 635 item = Amr.ParseItemLink(GetInventoryItemLink("player", INVSLOT_OFFHAND)) | 632 item = Amr.ParseItemLink(GetInventoryItemLink("player", INVSLOT_OFFHAND)) |
| 636 end | 633 end |
| 637 if item then | 634 if item then |
| 638 Amr.GetItemInfo(item.id, function(customArg, name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture) | 635 local itemObj = Item:CreateFromItemID(item.id) |
| 639 local setname = "AMR " .. specName | 636 if itemObj then |
| 640 local setid = C_EquipmentSet.GetEquipmentSetID(setname) | 637 setIcon = itemObj:GetItemIcon() |
| 641 if setid then | 638 end |
| 642 C_EquipmentSet.SaveEquipmentSet(setid, texture) | 639 end |
| 643 else | 640 ]] |
| 644 C_EquipmentSet.CreateEquipmentSet(setname, texture) | 641 |
| 645 end | 642 local setname = "AMR " .. specName |
| 646 end) | 643 local setid = C_EquipmentSet.GetEquipmentSetID(setname) |
| 644 if setid then | |
| 645 C_EquipmentSet.SaveEquipmentSet(setid, setIcon) | |
| 646 else | |
| 647 C_EquipmentSet.CreateEquipmentSet(setname, setIcon) | |
| 647 end | 648 end |
| 648 end | 649 end |
| 649 | 650 |
| 650 -- stop any currently in-progress gear swapping operation and clean up | 651 -- stop any currently in-progress gear swapping operation and clean up |
| 651 local function disposeGearOp() | 652 local function disposeGearOp() |
