comparison Gear.lua @ 61:cf2b6b9a8337 v23

6.2 update, shopping list bug fixes, ui scale option
author yellowfive
date Tue, 23 Jun 2015 00:27:21 -0700
parents ee701ce45354
children 932885bb1a6f
comparison
equal deleted inserted replaced
60:017c05f42fd4 61:cf2b6b9a8337
157 btnEquip:SetCallback("OnClick", function(widget) 157 btnEquip:SetCallback("OnClick", function(widget)
158 Amr:EquipGearSet(spec) 158 Amr:EquipGearSet(spec)
159 end) 159 end)
160 panelGear:AddChild(btnEquip) 160 panelGear:AddChild(btnEquip)
161 161
162 local btnShop = AceGUI:Create("AmrUiButton") 162 --[[local btnShop = AceGUI:Create("AmrUiButton")
163 btnShop:SetText(L.GearButtonShop) 163 btnShop:SetText(L.GearButtonShop)
164 btnShop:SetBackgroundColor(Amr.Colors.Blue) 164 btnShop:SetBackgroundColor(Amr.Colors.Blue)
165 btnShop:SetFont(Amr.CreateFont("Regular", 14, Amr.Colors.White)) 165 btnShop:SetFont(Amr.CreateFont("Regular", 14, Amr.Colors.White))
166 btnShop:SetWidth(300) 166 btnShop:SetWidth(300)
167 btnShop:SetHeight(26) 167 btnShop:SetHeight(26)
168 btnShop:SetPoint("LEFT", btnEquip.frame, "RIGHT", 75, 0) 168 btnShop:SetPoint("LEFT", btnEquip.frame, "RIGHT", 75, 0)
169 btnShop:SetPoint("RIGHT", panelMods.content, "RIGHT", -20, 0) 169 btnShop:SetPoint("RIGHT", panelMods.content, "RIGHT", -20, 0)
170 btnShop:SetCallback("OnClick", function(widget) Amr:ShowShopWindow() end) 170 btnShop:SetCallback("OnClick", function(widget) Amr:ShowShopWindow() end)
171 panelMods:AddChild(btnShop) 171 panelMods:AddChild(btnShop)]]
172 172
173 -- each physical item can only be used once, this tracks ones we have already used 173 -- each physical item can only be used once, this tracks ones we have already used
174 local usedItems = {} 174 local usedItems = {}
175 175
176 -- gear list 176 -- gear list
391 t:SetPoint("TOPLEFT", container.content, "TOPLEFT", 144, -30) 391 t:SetPoint("TOPLEFT", container.content, "TOPLEFT", 144, -30)
392 t:SetPoint("BOTTOMRIGHT", container.content, "BOTTOMRIGHT") 392 t:SetPoint("BOTTOMRIGHT", container.content, "BOTTOMRIGHT")
393 container:AddChild(t) 393 container:AddChild(t)
394 _gearTabs = t; 394 _gearTabs = t;
395 395
396 local btnShop = AceGUI:Create("AmrUiButton")
397 btnShop:SetText(L.GearButtonShop)
398 btnShop:SetBackgroundColor(Amr.Colors.Blue)
399 btnShop:SetFont(Amr.CreateFont("Regular", 14, Amr.Colors.White))
400 btnShop:SetWidth(245)
401 btnShop:SetHeight(26)
402 btnShop:SetPoint("TOPRIGHT", container.content, "TOPRIGHT", -20, -25)
403 btnShop:SetCallback("OnClick", function(widget) Amr:ShowShopWindow() end)
404 container:AddChild(btnShop)
405
406
396 if not _activeTab then 407 if not _activeTab then
397 _activeTab = tostring(GetActiveSpecGroup()) 408 _activeTab = tostring(GetActiveSpecGroup())
398 end 409 end
399 410
400 t:SelectTab(_activeTab) 411 t:SelectTab(_activeTab)
473 local function finishEquipGearSet() 484 local function finishEquipGearSet()
474 if not _pendingEquip then return end 485 if not _pendingEquip then return end
475 486
476 _pendingEquip.tries = _pendingEquip.tries + 1 487 _pendingEquip.tries = _pendingEquip.tries + 1
477 if _pendingEquip.tries > 16 then 488 if _pendingEquip.tries > 16 then
489 -- too many tries, just give up (shouldn't happen but just to be safe)
478 _pendingEquip = nil 490 _pendingEquip = nil
479 else 491 else
480 -- start over again, trying any items that could not be equipped in the previous pass (unique constraints) 492 -- start over again, trying any items that could not be equipped in the previous pass (unique constraints)
481 Amr:EquipGearSet(_pendingEquip.spec) 493 Amr:EquipGearSet(_pendingEquip.spec)
482 end 494 end
492 local bestLink = nil 504 local bestLink = nil
493 local bestDiff = 1000 505 local bestDiff = 1000
494 506
495 -- find the best matching item 507 -- find the best matching item
496 508
497 -- equipped items 509 -- equipped items, but skip slots we have just equipped (to avoid e.g. just moving 2 of the same item back and forth between mh oh weapon slots)
498 for slotNum = 1, #Amr.SlotIds do 510 for slotNum = 1, #Amr.SlotIds do
499 local slotId = Amr.SlotIds[slotNum] 511 local slotId = Amr.SlotIds[slotNum]
500 local itemLink = GetInventoryItemLink("player", slotId) 512 if not _pendingEquip.doneSlots[slotId] then
501 if itemLink then 513 local itemLink = GetInventoryItemLink("player", slotId)
502 local invItem = Amr.ParseItemLink(itemLink) 514 if itemLink then
503 if invItem ~= nil then 515 local invItem = Amr.ParseItemLink(itemLink)
504 local diff = countItemDifferences(item, invItem) 516 if invItem ~= nil then
505 if diff < bestDiff then 517 local diff = countItemDifferences(item, invItem)
506 bestItem = { slot = slotId } 518 if diff < bestDiff then
507 bestDiff = diff 519 bestItem = { slot = slotId }
508 bestLink = itemLink 520 bestDiff = diff
521 bestLink = itemLink
522 end
509 end 523 end
510 end 524 end
511 end 525 end
512 end 526 end
513 527
575 else 589 else
576 PickupInventoryItem(bestItem.slot) 590 PickupInventoryItem(bestItem.slot)
577 end 591 end
578 PickupInventoryItem(slotId) 592 PickupInventoryItem(slotId)
579 ClearCursor() 593 ClearCursor()
594
595 -- wait for game events to continue
580 end 596 end
581 end 597 end
582 598
583 end 599 end
584 600
605 -- inventory slot we're swapping from is still locked, can't continue yet 621 -- inventory slot we're swapping from is still locked, can't continue yet
606 if IsInventoryItemLocked(_pendingEquip.slot) then return end 622 if IsInventoryItemLocked(_pendingEquip.slot) then return end
607 end 623 end
608 624
609 -- move on to the next item, this item is done 625 -- move on to the next item, this item is done
626 _pendingEquip.doneSlots[_pendingEquip.destSlot] = true
610 _pendingEquip.itemsToEquip[_pendingEquip.destSlot] = nil 627 _pendingEquip.itemsToEquip[_pendingEquip.destSlot] = nil
611 _pendingEquip.destSlot = nil 628 _pendingEquip.destSlot = nil
612 _pendingEquip.bag = nil 629 _pendingEquip.bag = nil
613 _pendingEquip.slot = nil 630 _pendingEquip.slot = nil
614 631
668 _pendingEquip = { 685 _pendingEquip = {
669 tries = _pendingEquip and _pendingEquip.spec == spec and _pendingEquip.tries or 0, 686 tries = _pendingEquip and _pendingEquip.spec == spec and _pendingEquip.tries or 0,
670 spec = spec, 687 spec = spec,
671 itemsToEquip = itemsToEquip, 688 itemsToEquip = itemsToEquip,
672 remaining = remaining, 689 remaining = remaining,
690 doneSlots = {},
673 nextSlot = firstSlot 691 nextSlot = firstSlot
674 } 692 }
675 693
676 -- starting item 694 -- starting item
677 for slotId, item in pairs(_pendingEquip.itemsToEquip) do 695 for slotId, item in pairs(_pendingEquip.itemsToEquip) do