comparison Modules/ArtifactPower.lua @ 111:1196c2bad31c

- obtain World Quest AP via WorldPlan - artifact button text adjustments - removed from UISpecialFrames to fix hiding on map open
author Nick@Zahhak
date Tue, 21 Mar 2017 16:33:51 -0400
parents a41f6b74709a
children 7c77fde36287
comparison
equal deleted inserted replaced
110:73316951ce73 111:1196c2bad31c
33 191500, 2010000, 2110000, 2215000, 2325000, 33 191500, 2010000, 2110000, 2215000, 2325000,
34 2440000, 2560000, 2690000, 2825000, 2965000, 34 2440000, 2560000, 2690000, 2825000, 2965000,
35 3115000, 3270000, 3435000, 3605000, 3785000, 35 3115000, 3270000, 3435000, 3605000, 3785000,
36 3975000, 4175000, 4385000, 4605000 36 3975000, 4175000, 4385000, 4605000
37 } 37 }
38 38 local FISHING_MAX_TRAITS = 24
39 local WEAPON_MAX_TRAITS = 54
40 local BUTTON_SIZE = 48
39 local FRAME_LIST = {'ContainerFrame1', 'BankFrame'} 41 local FRAME_LIST = {'ContainerFrame1', 'BankFrame'}
40 local BAG_FRAMES = {'ContainerFrame1'} 42 local BAG_FRAMES = {'ContainerFrame1'}
41 local BANK_FRAMES = {'BankFrame'} 43 local BANK_FRAMES = {'BankFrame'}
42 44
43 function ap:OnLoad() 45 function ap:OnLoad()
74 self:Show() 76 self:Show()
75 end 77 end
76 end 78 end
77 79
78 self.tooltip = CreateFrame('GameTooltip', TOOLTIP_NAME, self, 'GameTooltipTemplate') 80 self.tooltip = CreateFrame('GameTooltip', TOOLTIP_NAME, self, 'GameTooltipTemplate')
79 tinsert(UISpecialFrames, self:GetName())
80 81
81 82
82 end 83 end
83 local ShortNumberString = function (value) 84 local ShortNumberString = function (value)
84 if value >= 100000 then 85 if value >= 100000 then
117 tinsert(queued_hooks, {...}) 118 tinsert(queued_hooks, {...})
118 end 119 end
119 if not InCombatLockdown() then 120 if not InCombatLockdown() then
120 local info = tremove(queued_hooks) 121 local info = tremove(queued_hooks)
121 while info do 122 while info do
122 print('hooking', unpack(info)) 123 --[[local oFunc = tremove(info, #info)
124 local args = info
125
126 local func = function(...)
127 print('|cFFFF0088Callback:|r', unpack(args))
128
129 oFunc(...)
130 end
131 print('hooking', unpack(info), oFunc, func)
132 hooksecurefunc(unpack(info), func)
133 --]]
123 hooksecurefunc(unpack(info)) 134 hooksecurefunc(unpack(info))
124 info = tremove(queued_hooks) 135 info = tremove(queued_hooks)
125 end 136 end
126 137
127 end 138 end
129 140
130 local function AddFrameHooks(frame, args) 141 local function AddFrameHooks(frame, args)
131 for funcName, func in pairs(args.FrameMethods) do 142 for funcName, func in pairs(args.FrameMethods) do
132 print('binding', frame:GetName(), funcName, 'to', tostring(func)) 143 print('binding', frame:GetName(), funcName, 'to', tostring(func))
133 CreateHook(frame, funcName, function() 144 CreateHook(frame, funcName, function()
145 print(frame:GetName(), funcName, 'hook')
134 VeneerArtifactPower:TryToShow() 146 VeneerArtifactPower:TryToShow()
135 end) 147 end)
136 end 148 end
137 end 149 end
138 local PENDING_HOOKS = {} 150 local PENDING_HOOKS = {}
180 VeneerArtifactPowerTimer:SetScript('OnUpdate', function() 192 VeneerArtifactPowerTimer:SetScript('OnUpdate', function()
181 self:OnUpdate() 193 self:OnUpdate()
182 end) 194 end)
183 195
184 local DoTryToShow = function() 196 local DoTryToShow = function()
197
185 self:TryToShow() 198 self:TryToShow()
186 end 199 end
187 CreateHook("OpenBackpack", DoTryToShow) 200 CreateHook("OpenBackpack", DoTryToShow)
188 CreateHook("CloseBackpack", DoTryToShow) 201 CreateHook("CloseBackpack", DoTryToShow)
189 202
225 end 238 end
226 end 239 end
227 240
228 local UNDERLIGHT_ANGLER_ID = 133755 241 local UNDERLIGHT_ANGLER_ID = 133755
229 242
243 function ap:ResetCache()
244 table.wipe(self.cache.items)
245 table.wipe(self.cache.fishing)
246 table.wipe(self.cache.bags)
247 table.wipe(self.cache.bagItems)
248 self:ScanAllBags()
249 end
250
230 function ap:QueueBag(containerID) 251 function ap:QueueBag(containerID)
231 containerID = tonumber(containerID) 252 containerID = tonumber(containerID)
232 if not containerID then 253 if not containerID then
233 return 254 return
234 end 255 end
259 self.enabled = true 280 self.enabled = true
260 self:ScanAllBags() 281 self:ScanAllBags()
261 self:Reanchor() 282 self:Reanchor()
262 end 283 end
263 function ap:OnHide() 284 function ap:OnHide()
264 print('|cFF88FF00OnHide()|r') 285 print('|cFF88FF00OnHide()|r', debugstack())
265 self:Reanchor() 286 self:Reanchor()
266 end 287 end
267 function ap:OnEnter() 288 function ap:OnEnter()
268 289
269 GameTooltip:SetOwner(self, 'ANCHOR_CURSOR') 290 GameTooltip:SetOwner(self, 'ANCHOR_CURSOR')
279 print('|cFFFFFF00TryToShow()') 300 print('|cFFFFFF00TryToShow()')
280 301
281 if not InCombatLockdown() then 302 if not InCombatLockdown() then
282 for _, name in ipairs(FRAME_LIST) do 303 for _, name in ipairs(FRAME_LIST) do
283 print('test:', name, (_G[name] and _G[name]:IsShown())) 304 print('test:', name, (_G[name] and _G[name]:IsShown()))
284 if _G[name] and _G[name]:IsShown() then 305 if _G[name] and _G[name]:IsVisible() then
285 if self:IsShown() then 306 if self:IsShown() then
286 self:Update() 307 self:Update()
287 else 308 else
288 self:Show() 309 self:Show()
289 end 310 end
290 return 311 return
291 end 312 end
292 end 313 end
293 end 314 end
294 315
295 316 print('failed tests')
296 self:Hide() 317 self:Hide()
297 end 318 end
298 319
299 320
300 function ap:OnEvent(event, ...) 321 function ap:OnEvent(event, ...)
357 end 378 end
358 379
359 function ap:OnUpdate() 380 function ap:OnUpdate()
360 if #self.scanQueue >= 1 then 381 if #self.scanQueue >= 1 then
361 local scanInfo = tremove(self.scanQueue, 1) 382 local scanInfo = tremove(self.scanQueue, 1)
362 383 end
363 end 384 if IsShiftKeyDown() then
385 self.Refresh:Show()
386 else
387 self.Refresh:Hide()
388 end
389
364 end 390 end
365 391
366 function ap:OnMouseDown() 392 function ap:OnMouseDown()
367 self.enabled = nil 393 self.enabled = nil
368 self:Hide() 394 self:Hide()
379 if not self.profile.knowledgeMultiplier then 405 if not self.profile.knowledgeMultiplier then
380 bankText = '|cFF00FF00Shift-Right-Click an artifact weapon to start building data.' 406 bankText = '|cFF00FF00Shift-Right-Click an artifact weapon to start building data.'
381 elseif not (self.bankAP and self.bagAP) then 407 elseif not (self.bankAP and self.bagAP) then
382 bankText = '|cFFFF0000Open bank frame to count all AP|r ' 408 bankText = '|cFFFF0000Open bank frame to count all AP|r '
383 else 409 else
384 if (self.bagAP + self.bankAP) == 0 then 410
385 bankText = '|cFFFF4400No Artifact Power tokens on hand|r' 411 if self.bagAP and (self.bagAP > 0) then
386 else 412 bankText = 'Inventory: |cFFFFFFFF' .. ShortNumberString(self.bagAP) .. '|r'
387 if self.bagAP and (self.bagAP > 0) then 413 end
388 bankText = '|cFFFFFFFF' .. tostring(self.bagAP) .. '|r' 414 if self.bankAP and (self.bankAP > 0) then
389 end 415 bankText = (bankText and (bankText .. ' | ') or '') .. '|cFFFFFF00'..ShortNumberString(self.bankAP)..' banked|r'
390 if self.bankAP and (self.bankAP > 0) then 416 end
391 bankText = (bankText and (bankText .. ' | ') or '') .. '|cFFFFFF00'..tostring(self.bankAP)..'|r' 417 if self.fishingAP and self.fishingAP > 0 then
392 end 418 bankText = (bankText and (bankText .. ' | ') or '') .. '|cFF0088FF' .. ShortNumberString(self.fishingAP) .. ' fishing|r'
393 end 419 end
394 end 420 end
395 if self.fishingAP and self.fishingAP > 0 then 421
396 bankText = (bankText and (bankText .. ' ') or '') .. '|cFF0088FF' .. tostring(self.fishingAP) .. ' fishing AP|r' 422 self.worldQuestAP = 0
423 if WorldPlan then
424
425 if not self.worldPlanHooked then
426 WorldPlan:RegisterDataCallback(function()
427 self:Update()
428 end)
429 end
430
431
432 local showWQ
433 print('world plan is loaded')
434 local worldQuests = WorldPlan:GetQuestPins()
435 for index, pin in ipairs(worldQuests) do
436 if pin.dataLoaded and (pin.rewardType == WORLD_QUEST_REWARD_TYPE_FLAG_ARTIFACT_POWER) then
437 showWQ = true
438 print(pin.itemNumber)
439 self.worldQuestAP = self.worldQuestAP + pin.itemNumber
440 end
441 end
442
443 if showWQ then
444 bankText = (bankText and (bankText .. '\n') or '') .. '|cFFFFBB00World Quests:|r |cFFFFFFFF' .. ShortNumberString(self.worldQuestAP) .. ''
445 end
446
397 end 447 end
398 448
399 self.SummaryHeader:SetText(bankText) 449 self.SummaryHeader:SetText(bankText)
400 450
401 local numButtons = 0 451 local numButtons = 0
402 local contentsHeight = 16 + self.SummaryHeader:GetHeight() + 64 452 local contentsHeight = 16 + self.SummaryHeader:GetHeight()
403 local contentsWidth = 64 453 local contentsWidth = self.SummaryHeader:GetWidth() + 16
404 if self.profile.knowledgeMultiplier then 454 if self.profile.knowledgeMultiplier then
405 numButtons = self:UpdateArtifactButtons() 455 numButtons = self:UpdateArtifactButtons()
406 456
407 contentsWidth = 64*numButtons + 4 * (numButtons+1) 457 if numButtons ~= 0 then
458 contentsHeight = contentsHeight + 64
459 end
460
461 contentsWidth = max(contentsWidth, 64*numButtons + 4 * (numButtons+1))
408 462
409 local itemsWidth, itemsHeight = self:UpdateItemButtons() 463 local itemsWidth, itemsHeight = self:UpdateItemButtons()
410 contentsHeight = contentsHeight + itemsHeight 464 contentsHeight = contentsHeight + itemsHeight
411 contentsWidth = max(contentsWidth, itemsWidth) 465 contentsWidth = max(contentsWidth, itemsWidth)
412 end 466 end
413 467
414 468
469 if not self.hasArtifacts then
470 self:SetShown(false)
471 end
472
415 473
416 self:SetWidth(contentsWidth) 474 self:SetWidth(contentsWidth)
417 self:SetHeight(contentsHeight) 475 self:SetHeight(contentsHeight)
418 self:Reanchor() 476 self:Reanchor()
419 end 477 end
420 478
421 function ap:UpdateArtifactButtons() 479 function ap:UpdateArtifactButtons()
422 480
423 -- Artifact icons, in no particular order 481 -- Artifact icons, in no particular order
424 self.equippedID = C_ArtifactUI.GetEquippedArtifactInfo() 482 self.equippedID = C_ArtifactUI.GetEquippedArtifactInfo()
483 self.canAddAP = nil
484 self.canAddFishingAP = nil
485 local hasArtifacts
425 local numButtons = 0 486 local numButtons = 0
426 local lastFrame = self 487 local lastFrame = self
427 local fishingID, fishingData 488 local fishingID, fishingData
428 local index, button 489 local index, button
429 for itemID, artifact in pairs(self.profile.artifacts) do 490 for itemID, artifact in pairs(self.profile.artifacts) do
431 if VeneerData.ArtifactPower.EnableFishing then 492 if VeneerData.ArtifactPower.EnableFishing then
432 fishingID = itemID 493 fishingID = itemID
433 fishingData = artifact 494 fishingData = artifact
434 end 495 end
435 496
497 if artifact.level < FISHING_MAX_TRAITS then
498 if itemID == self.equippedID then
499 self.canAddFishingAP = true
500 end
501 end
502
503
436 else 504 else
437 if artifact.level ~= 54 then 505 if artifact.level < WEAPON_MAX_TRAITS then
506
507 if itemID == self.equippedID then
508 self.canAddAP = true
509 end
510 hasArtifacts = true
438 numButtons = numButtons + 1 511 numButtons = numButtons + 1
439 button = self.Artifact[numButtons] 512 button = self.Artifact[numButtons]
440 button.relativeFrame = lastFrame 513 button.relativeFrame = lastFrame
441 lastFrame = button:SetButton(itemID, artifact, numButtons, (self.equippedID == itemID)) 514 lastFrame = button:SetButton(itemID, artifact, numButtons, (self.equippedID == itemID), nil)
442 end 515 end
443 end 516 end
444 517 end
445 end 518
446 519
447 if fishingData and (self.fishingAP and self.fishingAP > 0) then 520 if fishingData and (self.fishingAP and self.fishingAP > 0) then
448 numButtons = numButtons + 1 521 numButtons = numButtons + 1
522 hasArtifacts = true
449 local button = self.Artifact[numButtons] 523 local button = self.Artifact[numButtons]
450 button.relativeFrame = lastFrame 524 button.relativeFrame = lastFrame
525 button.isFishing = true
451 button:SetButton(fishingID, fishingData, numButtons, self.equippedID == fishingID) 526 button:SetButton(fishingID, fishingData, numButtons, self.equippedID == fishingID)
452 end 527 end
453 528
529 self.hasArtifacts = hasArtifacts
454 for i = numButtons+ 1, #self.Artifact do 530 for i = numButtons+ 1, #self.Artifact do
455 print('hide', i) 531 print('hide', i)
456 self.Artifact[i]:Hide() 532 self.Artifact[i]:Hide()
457 end 533 end
458 534
535
459 return numButtons 536 return numButtons
460 end 537 end
461 538
462 539
463 function ap:UpdateItemButtons() 540 function ap:UpdateItemButtons()
464 print('|cFF00FFFFUpdateItemButtons()|r') 541 print('|cFF00FFFFUpdateItemButtons()|r')
542
543 local apType
544 if self.canAddFishingAP then
545 apType = true
546 elseif not self.canAddAP then
547 for index, button in ipairs(self.Tokens) do
548 button:Hide()
549 end
550 return 0, 0
551 end
552
553
465 local lastFrame, upFrame 554 local lastFrame, upFrame
466 local numButtons = 0 555 local numButtons = 0
467 local buttonsHeight = 0 556 local buttonsHeight = 0
468 local buttonsWidth = 0 557 local buttonsWidth = 0
558
469 for index, button in ipairs(self.Tokens) do 559 for index, button in ipairs(self.Tokens) do
470 if button.numItems >= 1 then 560 if (button.numItems >= 1) and (button.isFishingAP == apType) then
471 if button.itemName then 561 if button.itemName then
472 self:SetItemAction(button) 562 self:SetItemAction(button)
473 end 563 end
474 564
475 button:ClearAllPoints() 565 button:ClearAllPoints()
476 numButtons = numButtons + 1 566 numButtons = numButtons + 1
567 local col = mod(numButtons,8)
477 print(index, button:GetID(), button.Icon:GetTexture()) 568 print(index, button:GetID(), button.Icon:GetTexture())
478 if numButtons == 1 then 569 if numButtons == 1 then
479 button:SetPoint('TOPLEFT', self, 'TOPLEFT', 4, -76) 570 button:SetPoint('TOPLEFT', self, 'TOPLEFT', 4, -76)
480 upFrame = button 571 upFrame = button
481 buttonsHeight = 52 572 buttonsHeight = 52
482 buttonsWidth = 50
483 else 573 else
484 local col = mod(numButtons,8)
485 if col == 1 then 574 if col == 1 then
486 button:SetPoint('TOPLEFT', upFrame, 'BOTTOMLEFT', 0, -2) 575 button:SetPoint('TOPLEFT', upFrame, 'BOTTOMLEFT', 0, -2)
487 upFrame = button 576 upFrame = button
488 buttonsHeight = buttonsHeight + 52 577 buttonsHeight = buttonsHeight + 52
489 578
490 else 579 else
491 button:SetPoint('TOPLEFT', lastFrame, 'TOPRIGHT', 2, 0) 580 button:SetPoint('TOPLEFT', lastFrame, 'TOPRIGHT', 2, 0)
492 581
493 end 582 end
494 buttonsWidth = max(buttonsWidth, col * 50) 583 end
495 end 584
496 button.Count:SetText(button.numItems) 585 button.Count:SetText(button.numItems)
497 lastFrame = button 586 lastFrame = button
498 button:Show() 587 button:Show()
499 else 588 else
500 button:Hide() 589 button:Hide()
501 end 590 end
591 buttonsWidth = min(numButtons, 8) * (BUTTON_SIZE)
592 end
593
594
595
596 if buttonsWidth ~= 0 then
597 buttonsWidth = buttonsWidth + 8+ ((min(numButtons, 8)-1)*2)
502 end 598 end
503 599
504 600
505 601
506 return buttonsWidth, buttonsHeight 602 return buttonsWidth, buttonsHeight
515 button:SetAttribute('*type*','item') 611 button:SetAttribute('*type*','item')
516 button:SetAttribute('*item*', name) 612 button:SetAttribute('*item*', name)
517 end 613 end
518 end 614 end
519 615
520 function ap:GetItemButton(itemID, texture, itemAP) 616 function ap:GetItemButton(itemID, texture, itemAP, fishing)
521 print('|cFF00FFFFGetItemButton()|r', itemID, texture, itemAP) 617 print('|cFF00FFFFGetItemButton()|r', itemID, texture, itemAP)
522 local button = self.ItemButtons[itemID] 618 local button = self.ItemButtons[itemID]
523 619
524 if not button then 620 if not button then
525 button = CreateFrame('Button', 'VeneerAPToken'..itemID, self, 'VeneerItemButton') 621 button = CreateFrame('Button', 'VeneerAPToken'..itemID, self, 'VeneerItemButton')
529 button:SetHighlightTexture([[Interface\Buttons\ButtonHilight-Square]],"ADD") 625 button:SetHighlightTexture([[Interface\Buttons\ButtonHilight-Square]],"ADD")
530 button:SetID(itemID) 626 button:SetID(itemID)
531 button.numItems = 0 627 button.numItems = 0
532 button.Icon:SetTexture(texture) 628 button.Icon:SetTexture(texture)
533 button:RegisterForClicks("AnyUp") 629 button:RegisterForClicks("AnyUp")
630 button.isFishingAP = fishing
534 self:SetItemAction(button, GetItemInfo(itemID)) 631 self:SetItemAction(button, GetItemInfo(itemID))
535 632
536 print(' created') 633 print(' created')
537 self.ItemButtons[itemID] = button 634 self.ItemButtons[itemID] = button
538 self.numItems = self.numItems + 1 635 self.numItems = self.numItems + 1
551 end 648 end
552 649
553 function ap:GetItemAP(itemID, itemLink, bagData) 650 function ap:GetItemAP(itemID, itemLink, bagData)
554 if not self.cache.items[itemID] then 651 if not self.cache.items[itemID] then
555 652
556 print('doing tooltip scan') 653 print('doing tooltip scan', itemLink, itemID)
557 self.tooltip:SetOwner(self, 'ANCHOR_NONE') 654 self.tooltip:SetOwner(self, 'ANCHOR_NONE')
558 self.tooltip:SetHyperlink(itemLink) 655 self.tooltip:SetHyperlink(itemLink)
559 self.tooltip:Show() 656 self.tooltip:Show()
560 local numLines = self.tooltip:NumLines() 657 local numLines = self.tooltip:NumLines()
561 if numLines >= 3 then 658 if numLines >= 3 then
562 local subText = _G[TOOLTIP_NAME .. 'TextLeft2']:GetText()
563 if subText and subText:match(ARTIFACT_POWER) then
564 for i = 3, numLines do 659 for i = 3, numLines do
565 local text = _G[TOOLTIP_NAME .. 'TextLeft'.. i]:GetText() 660 local text = _G[TOOLTIP_NAME .. 'TextLeft'.. i]:GetText()
566 if text and text:match(ARTIFACT_POWER) then 661 if text then
567 text = text:gsub('[,%D]', '') 662
568 print(itemLink, '-', tonumber(text)) 663 text = text:lower():gsub(',', '')
569 local itemAP = tonumber(text) 664 if text:match('equipped artifact') then
570 if itemAP then 665 print(itemLink, '-', tonumber(text))
571 itemAP = itemAP 666 local itemAP = text:match('%d+')
572 self.cache.items[itemID] = itemAP 667 if itemAP then
668 itemAP = itemAP
669 self.cache.items[itemID] = tonumber(itemAP)
670 end
671 end
672 if text:match('fishing artifact') then
673 local fishingAP = text:match("%d+")
674 fishingAP = fishingAP
675 print(itemLink, 'fishing', tonumber(text))
676 if fishingAP then
677 self.cache.items[itemID] = tonumber(fishingAP)
678 self.cache.fishing[itemID] = true
679 end
573 end 680 end
574 end 681 end
575 end 682 end
576 end
577 local fishingText = _G[TOOLTIP_NAME .. 'TextLeft3']:GetText()
578 if fishingText and fishingText:match('fishing artifact') then
579 local fishingAP = fishingText:match("%d+")
580 fishingAP = tonumber(fishingAP)
581 if fishingAP then
582 self.cache.items[itemID] = fishingAP
583 self.cache.fishing[itemID] = true
584 end
585 end
586 else 683 else
587 684
588 self.cache.items[itemID] = 0 685 self.cache.items[itemID] = 0
589 end 686 end
590 end 687 end
653 local bagData = self.profile.bagslots[id] 750 local bagData = self.profile.bagslots[id]
654 bagData.totalAP = 0 751 bagData.totalAP = 0
655 bagData.fishingAP = 0 752 bagData.fishingAP = 0
656 bagData.items = bagData.items or {} 753 bagData.items = bagData.items or {}
657 table.wipe(bagData.items) 754 table.wipe(bagData.items)
658 755 local c = self.cache
659 self.cache.bagItems[id] = self.cache.bagItems[id] or {} 756
660 self.cache.bags[id] = self.cache.bags[id] or {} 757 c.bagItems[id] = c.bagItems[id] or {}
661 self.cache.fishing[id] = self.cache.fishing[id] or {} 758 c.bags[id] = c.bags[id] or {}
759 c.fishing[id] = c.fishing[id] or {}
662 760
663 for slotID = 1, numSlots do 761 for slotID = 1, numSlots do
664 local texture, count, locked, quality, readable, lootable, link = GetContainerItemInfo(id, slotID) 762 local texture, count, locked, quality, readable, lootable, link = GetContainerItemInfo(id, slotID)
665 if link then 763 if link then
666 local itemID = GetContainerItemID(id, slotID) 764 local itemID = GetContainerItemID(id, slotID)
667 local name, _, quality, iLevel, reqLevel, class, subclass = GetItemInfo(link) 765 local name, _, quality, iLevel, reqLevel, class, subclass = GetItemInfo(link)
668 766
669 if class == 'Consumable' and subclass == 'Other' then 767 if class == 'Consumable' or subclass == 'Cooking' then
670 --print(GetItemInfo(link)) 768 --print(GetItemInfo(link))
671 local itemAP, isFishingAP 769 local itemAP, isFishingAP
672 if self.cache.bags[id][slotID] and (self.cache.bagItems[id][slotID] == itemID) then 770 if c.bags[id][slotID] and (c.bagItems[id][slotID] == itemID) then
673 print('slot cache data', id, slotID) 771 --print('cached slot', id, slotID, name)
674 itemAP = self.cache.bags[id][slotID] 772 itemAP = c.bags[id][slotID]
773 isFishingAP = c.fishing[id] and c.fishing[id][slotID]
675 else 774 else
676 itemAP, isFishingAP = self:GetItemAP(itemID, link) 775 itemAP, isFishingAP = self:GetItemAP(itemID, link)
677 self.cache.bagItems[id][slotID] = itemID 776 c.bagItems[id][slotID] = itemID
678 self.cache.bags[id][slotID] = itemAP 777 c.bags[id][slotID] = itemAP
679 self.cache.fishing[id][slotID] = isFishingAP 778 c.fishing[id][slotID] = isFishingAP
680 end 779 end
681 780
682 781
683 --print(itemAP, isFishingAP) 782 --print(itemAP, isFishingAP)
684 if itemAP and (itemAP > 0) then 783 if itemAP and (itemAP > 0) then
685 local itemButton = self:GetItemButton(itemID, texture, itemAP) 784 local itemButton = self:GetItemButton(itemID, texture, itemAP, isFishingAP)
686 785
687 if isFishingAP then 786 if isFishingAP then
688 bagData.fishingItems = (bagData.fishingItems or 0) + 1 787 bagData.fishingItems = (bagData.fishingItems or 0) + 1
689 bagData.fishingAP = (bagData.fishingAP or 0) + itemAP 788 bagData.fishingAP = (bagData.fishingAP or 0) + itemAP
690 else 789 else
693 bagData.totalAP = (bagData.totalAP or 0) + itemAP 792 bagData.totalAP = (bagData.totalAP or 0) + itemAP
694 end 793 end
695 bagData.items[itemID] = (bagData.items[itemID] or 0) + 1 794 bagData.items[itemID] = (bagData.items[itemID] or 0) + 1
696 end 795 end
697 elseif self.profile.artifacts[itemID] then 796 elseif self.profile.artifacts[itemID] then
698 print('artfiact weapon', itemID, link, id, slotID) 797 --print('artifact weapon', itemID, link, id, slotID)
699 self.profile.artifacts[itemID].containerID = id 798 self.profile.artifacts[itemID].containerID = id
700 self.profile.artifacts[itemID].slotID = slotID 799 self.profile.artifacts[itemID].slotID = slotID
800 else
801 --print('skipping', class, subclass, link)
701 end 802 end
702 803
703 end 804 end
704 805
705 end 806 end
742 self.bagAP = 0 843 self.bagAP = 0
743 self.fishingAP = 0 844 self.fishingAP = 0
744 845
745 table.wipe(ItemCounts) 846 table.wipe(ItemCounts)
746 for id, bagData in pairs(self.profile.bagslots) do 847 for id, bagData in pairs(self.profile.bagslots) do
747 print(id, GetBagName(id), bagData.totalAP) 848 print(id, GetBagName(id), bagData.totalAP, bagData.fishingAP)
748 id = tonumber(id) 849 id = tonumber(id)
749 if bagData.totalAP then 850 if bagData.totalAP then
750 if (id == BANK_CONTAINER) or (id >= 5) then 851 if (id == BANK_CONTAINER) or (id >= 5) then
751 self.bankAP = self.bankAP + bagData.totalAP 852 self.bankAP = self.bankAP + bagData.totalAP
752 else 853 else
763 self:TryToShow() 864 self:TryToShow()
764 end 865 end
765 866
766 VeneerArtifactButtonMixin = {} 867 VeneerArtifactButtonMixin = {}
767 868
768 function VeneerArtifactButtonMixin:SetButton(itemID, artifact, index, equipped) 869 function VeneerArtifactButtonMixin:SetButton(itemID, artifact, index, equipped, fishing)
769 print(itemID, index) 870 print(itemID, index)
770 print(artifact.name, artifact.texture, artifact.currentXP) 871 print(artifact.name, artifact.texture, artifact.currentXP)
771 self:SetID(itemID) 872 self:SetID(itemID)
772 if not artifact.currentCost then 873 if not artifact.currentCost then
773 artifact.currentCost = artifact.cost 874 artifact.currentCost = artifact.cost
776 for k,v in pairs(artifact) do 877 for k,v in pairs(artifact) do
777 --print('::',k,v) 878 --print('::',k,v)
778 self[k] = v 879 self[k] = v
779 end 880 end
780 881
882 self.isFishing = fishing
781 -- this can change between artifact parses 883 -- this can change between artifact parses
782 local potentialPoints = self.actualLevel 884 local potentialPoints = self.actualLevel
783 local totalAP = (itemID ~= UNDERLIGHT_ANGLER_ID) and ((self:GetParent().bankAP or 0) + (self:GetParent().bagAP or 0)) or (self:GetParent().fishingAP or 0) 885 local totalAP = (itemID ~= UNDERLIGHT_ANGLER_ID) and ((self:GetParent().bankAP or 0) + (self:GetParent().bagAP or 0)) or (self:GetParent().fishingAP or 0)
784 print(totalAP) 886 print(totalAP)
785 local potentialXP = self.actualXP + totalAP 887 local potentialXP = self.actualXP + totalAP
817 919
818 function VeneerArtifactButtonMixin:Update() 920 function VeneerArtifactButtonMixin:Update()
819 local r, g, b = 1, 1, 1 921 local r, g, b = 1, 1, 1
820 local lR, lG, lB = 1, 1, 0 922 local lR, lG, lB = 1, 1, 0
821 local levelText = self.level 923 local levelText = self.level
822 local xpValue = self.currentXP 924 local xpValue = ShortNumberString(self.currentXP)
823 local costValue = self.currentCost 925 local costValue = self.currentCost
824 if self.actualLevel ~= self.level then 926 if self.actualLevel ~= self.level then
825 levelText, r,g,b = self.actualLevel, 0,1,0 927 levelText, r,g,b = self.actualLevel, 0,1,0
826 xpValue, costValue, lR, lG, lB = self.actualXP, self.actualCost, 0, 1, 0 928 xpValue, costValue, lR, lG, lB = ShortNumberString(self.potentialXP) .. '\n' .. ShortNumberString(self.potentialCost-self.potentialXP), self.actualCost, 0, 1, 0
827 elseif self.potentialLevel ~= self.level then 929 elseif self.potentialLevel ~= self.level then
828 levelText, r, g, b = self.potentialLevel, 0,1,1 930 levelText, r, g, b = self.potentialLevel, 0,1,1
829 xpValue, costValue, lR, lG, lB = self.potentialAdjustedXP, self.potentialCost, 0,1,0 931 xpValue, costValue, lR, lG, lB = ShortNumberString(self.potentialXP) .. '\n' .. ShortNumberString(self.potentialCost-self.potentialXP), self.potentialCost, 0,1,1
830 932 else
933 xpValue, lR, lG, lB = ShortNumberString(self.actualXP) .. '\n|cFFFFFF00' .. ShortNumberString(self.actualCost-self.actualXP)..'|r', 1, 1, 1
831 end 934 end
832 935
833 self.Level:SetText(levelText) 936 self.Level:SetText(levelText)
834 self.Level:SetTextColor(r, g, b) 937 self.Level:SetTextColor(r, g, b)
835 self.CurrentXP:SetText(ShortNumberString( xpValue)) 938 self.CurrentXP:SetText( xpValue)
836 self.CurrentXP:SetTextColor(lR, lG, lB) 939 self.CurrentXP:SetTextColor(lR, lG, lB)
837 940
838 if self.isEquipped then 941 if self.isEquipped then
839 self:SetNormalTexture([[Interface\Buttons\ButtonHilight-Square]]) 942 self:SetNormalTexture([[Interface\Buttons\ButtonHilight-Square]])
840 self:GetNormalTexture():SetBlendMode('ADD') 943 self:GetNormalTexture():SetBlendMode('ADD')