Mercurial > wow > buffalo2
comparison Modules/ArtifactPower.lua @ 122:ea2c616a3b4f
Standardize anchor variables
- anchorGroup sets general position, defers to anchorPoint
- anchorPoint and anchorFrom are used in SetPoint, deferring to anchorGroup and its inverse
Artifact Power:
- scan and update triggers trimmed down
BuffFrame:
- extra values can be right clicked to hide for particular auras
LFG:
- Desolate Host link placed above Sisters when searching for best cheevos
TalkingHead
- Re-enable TalkingHeadFrame click behaviour
| author | Nenue |
|---|---|
| date | Mon, 21 Aug 2017 22:15:46 -0400 |
| parents | 1f68c46bc4de |
| children | b3c0258b419d |
comparison
equal
deleted
inserted
replaced
| 121:1f68c46bc4de | 122:ea2c616a3b4f |
|---|---|
| 13 scanQueue = {}, | 13 scanQueue = {}, |
| 14 worldQuestAP = 0, | 14 worldQuestAP = 0, |
| 15 worldQuestItems = {}, | 15 worldQuestItems = {}, |
| 16 ItemButtons = {}, | 16 ItemButtons = {}, |
| 17 anchorGroup = 'TOP', | 17 anchorGroup = 'TOP', |
| 18 anchorPoint = 'TOP', | 18 anchorPoint = 'TOPLEFT', |
| 19 anchorPriority = 3, | 19 anchorPriority = 3, |
| 20 anchorFrom = 'BOTTOMLEFT', | 20 anchorFrom = 'BOTTOMLEFT', |
| 21 moduleName = 'Artifactor', | 21 moduleName = 'Artifactor', |
| 22 HideCombat = true | 22 HideCombat = true |
| 23 } | 23 } |
| 24 | |
| 25 VeneerArtifactButtonMixin = {} | |
| 26 local Artifact = VeneerArtifactButtonMixin | |
| 27 | |
| 24 local defaultSettings = { | 28 local defaultSettings = { |
| 25 firstUse = true, | 29 firstUse = true, |
| 26 autoHide = true, | 30 autoHide = true, |
| 27 } | 31 } |
| 28 local Module = VeneerArtifactPowerMixin | 32 local Module = VeneerArtifactPowerMixin |
| 29 local BAGS_TO_SCAN = {BACKPACK_CONTAINER } | 33 local BAGS_TO_SCAN = {BACKPACK_CONTAINER} |
| 30 local TOOLTIP_NAME = 'VeneerAPScanner' | 34 local TOOLTIP_NAME = 'VeneerAPScanner' |
| 31 local POINT_COSTS = { | |
| 32 100, 300, 325, 350, 375, | |
| 33 400, 425, 450, 525, 625, | |
| 34 750, 875, 1000, 6840, 8830, | |
| 35 11280, 14400, 18620, 24000, 30600, | |
| 36 39520, 50880, 64800, 82500, 105280, | |
| 37 138650, 182780, 240870, 325520, 417560, | |
| 38 546000, 718200, 946660, 1245840, 1635200, | |
| 39 191500, 2010000, 2110000, 2215000, 2325000, | |
| 40 2440000, 2560000, 2690000, 2825000, 2965000, | |
| 41 3115000, 3270000, 3435000, 3605000, 3785000, | |
| 42 3975000, 4175000, 4385000, 4605000 | |
| 43 } | |
| 44 local FISHING_MAX_TRAITS = 24 | 35 local FISHING_MAX_TRAITS = 24 |
| 45 local WEAPON_MAX_TRAITS = 92 | 36 local WEAPON_MAX_TRAITS = 92 |
| 46 local FRAME_PADDING = 4 | 37 local FRAME_PADDING = 4 |
| 47 local EQUIPPED_SIZE = 64 | 38 local EQUIPPED_SIZE = 64 |
| 48 local BUTTON_SIZE = 48 | 39 local BUTTON_SIZE = 48 |
| 51 local BANK_FRAMES = {'BankFrame'} | 42 local BANK_FRAMES = {'BankFrame'} |
| 52 | 43 |
| 53 function Module:OnLoad() | 44 function Module:OnLoad() |
| 54 self:RegisterEvent('BAG_UPDATE') -- use to obtain bag IDs to scan | 45 self:RegisterEvent('BAG_UPDATE') -- use to obtain bag IDs to scan |
| 55 self:RegisterEvent('BAG_UPDATE_DELAYED') -- use to trigger actual scan activity | 46 self:RegisterEvent('BAG_UPDATE_DELAYED') -- use to trigger actual scan activity |
| 56 self:RegisterEvent('BANKFRAME_OPENED') -- determine when bank info is available | 47 self:RegisterEvent('BANKFRAME_OPENED') -- bank info available |
| 57 self:RegisterEvent('BANKFRAME_CLOSED') -- " " " | 48 self:RegisterEvent('BANKFRAME_CLOSED') -- |
| 58 self:RegisterEvent('ARTIFACT_UPDATE') -- when artifact data has changed | 49 self:RegisterEvent('ARTIFACT_UPDATE') -- visible data change |
| 59 self:RegisterEvent('ARTIFACT_XP_UPDATE') -- when artifact xp has changed (but not necessarily data) | 50 self:RegisterEvent('ARTIFACT_XP_UPDATE') -- xp for equipped artifact |
| 60 self:RegisterEvent('PLAYER_REGEN_ENABLED') | 51 self:RegisterEvent('PLAYER_REGEN_ENABLED') -- combat |
| 61 self:RegisterEvent('PLAYER_REGEN_DISABLED') | 52 self:RegisterEvent('PLAYER_REGEN_DISABLED') -- |
| 62 self:RegisterEvent('PLAYER_ENTERING_WORLD') | 53 self:RegisterEvent('PLAYER_ENTERING_WORLD') -- zone/instance transfer |
| 63 self:RegisterEvent('ITEM_LOCK_CHANGED') -- use to clear bag slot cache data | 54 self:RegisterEvent('ITEM_LOCK_CHANGED') -- use to clear bag slot cache data |
| 64 Veneer:AddHandler(self) | 55 Veneer:AddHandler(self) |
| 65 SLASH_VENEER_AP1 = "/vap" | 56 SLASH_VENEER_AP1 = "/vap" |
| 66 SLASH_VENEER_AP2 = "/veneerap" | 57 SLASH_VENEER_AP2 = "/veneerap" |
| 67 SlashCmdList.VENEER_AP = function(arg) | 58 SlashCmdList.VENEER_AP = function(arg) |
| 78 table.wipe(self.db.cache) | 69 table.wipe(self.db.cache) |
| 79 table.wipe(self.db.fishingCache) | 70 table.wipe(self.db.fishingCache) |
| 80 end | 71 end |
| 81 self:Print('Cache data reset.') | 72 self:Print('Cache data reset.') |
| 82 self:Update() | 73 self:Update() |
| 74 elseif arg:match('item') then | |
| 75 print('name', arg:match("^item (%S.+)")) | |
| 76 print('num', arg:match("Hitem:(%d+)")) | |
| 77 local linkOrID = arg:match("item:(%d+)") or arg:match("^item (%S+)") | |
| 78 if linkOrID then | |
| 79 local name, etc = GetItemInfo(linkOrID) | |
| 80 end | |
| 81 | |
| 83 else | 82 else |
| 83 | |
| 84 self:Show() | 84 self:Show() |
| 85 end | 85 end |
| 86 end | 86 end |
| 87 | 87 |
| 88 self.tooltip = CreateFrame('GameTooltip', TOOLTIP_NAME, self, 'GameTooltipTemplate') | 88 self.tooltip = CreateFrame('GameTooltip', TOOLTIP_NAME, self, 'GameTooltipTemplate') |
| 89 | 89 |
| 90 | 90 |
| 91 end | 91 end |
| 92 local ShortNumberString = function (value) | 92 local ShortNumberString = function (value) |
| 93 if value >= 1000000 then | 93 if value >= 1000000000 then |
| 94 | |
| 95 return tostring(floor(value/10000000)/100) .. 'B' | |
| 96 elseif value >= 1000000 then | |
| 94 return tostring(floor(value/100000)/10) .. 'M' | 97 return tostring(floor(value/100000)/10) .. 'M' |
| 95 elseif value >= 100000 then | 98 elseif value >= 100000 then |
| 96 return tostring(floor(value/1000)) .. 'k' | 99 return tostring(floor(value/1000)) .. 'k' |
| 97 elseif value >= 1000 then | 100 elseif value >= 1000 then |
| 98 return tostring(floor(value/100)/10) .. 'k' | 101 return tostring(floor(value/100)/10) .. 'k' |
| 352 | 355 |
| 353 elseif event == 'PLAYER_BANKSLOTS_CHANGED' then | 356 elseif event == 'PLAYER_BANKSLOTS_CHANGED' then |
| 354 self:ScanAllBags() | 357 self:ScanAllBags() |
| 355 elseif event == 'BAG_UPDATE_DELAYED' then | 358 elseif event == 'BAG_UPDATE_DELAYED' then |
| 356 if not self.firstHit then | 359 if not self.firstHit then |
| 360 -- prevent double call from login | |
| 357 self.firstHit = true | 361 self.firstHit = true |
| 358 else | 362 else |
| 359 self:ScanAllBags() | 363 self:ScanAllBags() |
| 360 end | 364 end |
| 361 elseif event == 'BANKFRAME_OPENED' then | 365 elseif event == 'BANKFRAME_OPENED' then |
| 365 self.bankAccess = nil | 369 self.bankAccess = nil |
| 366 elseif event == 'ARTIFACT_UPDATE' then | 370 elseif event == 'ARTIFACT_UPDATE' then |
| 367 local newItem = ... | 371 local newItem = ... |
| 368 if newItem then | 372 if newItem then |
| 369 local itemID, _, name, texture, currentXP, pointsSpent = C_ArtifactUI:GetArtifactInfo() | 373 local itemID, _, name, texture, currentXP, pointsSpent = C_ArtifactUI:GetArtifactInfo() |
| 370 self:SetArtifact(itemID, name, texture, currentXP, pointsSpent) | 374 self:UpdateArtifact(itemID, name, texture, currentXP, pointsSpent) |
| 371 self:ScanAllBags(self.bankAccess) | 375 --self:ScanAllBags(self.bankAccess) |
| 372 end | 376 end |
| 373 elseif event == 'ARTIFACT_XP_UPDATE' then | 377 elseif event == 'ARTIFACT_XP_UPDATE' then |
| 374 local itemID, _, name, texture, currentXP, pointsSpent = C_ArtifactUI:GetEquippedArtifactInfo() | 378 local itemID, _, name, texture, currentXP, pointsSpent = C_ArtifactUI:GetEquippedArtifactInfo() |
| 375 self:SetArtifact(itemID, name, texture, currentXP, pointsSpent) | 379 self:UpdateArtifact(itemID, name, texture, currentXP, pointsSpent) |
| 376 self:ScanAllBags(self.bankAccess) | 380 --self:ScanAllBags(self.bankAccess) |
| 377 elseif event == 'PLAYER_REGEN_ENABLED' then | 381 elseif event == 'PLAYER_REGEN_ENABLED' then |
| 378 | 382 |
| 379 if self.queuedScan then | 383 if self.queuedScan then |
| 380 self:ScanAllBags(self.backAccess) | 384 self:ScanAllBags(self.backAccess) |
| 381 else | 385 else |
| 415 function Module:Update() | 419 function Module:Update() |
| 416 if not self:IsShown() then | 420 if not self:IsShown() then |
| 417 print('|cFFFF4400Update()|r') | 421 print('|cFFFF4400Update()|r') |
| 418 return | 422 return |
| 419 end | 423 end |
| 420 print('|cFF00FFFFUpdate()|r') | 424 print('|cFFFFFF00pdate()|r') |
| 425 | |
| 426 local numButtons = 0 | |
| 427 local contentsHeight = 16 | |
| 428 local contentsWidth = 400 | |
| 429 if self.profile.knowledgeMultiplier then | |
| 430 local artifactsWidth = self:UpdateArtifactButtons() | |
| 431 | |
| 432 if artifactsWidth ~= 0 then | |
| 433 contentsHeight = contentsHeight + 64 | |
| 434 end | |
| 435 | |
| 436 contentsWidth = max(contentsWidth, min(artifactsWidth, 400)) | |
| 437 | |
| 438 local itemsWidth, itemsHeight = self:UpdateItemButtons() | |
| 439 contentsHeight = contentsHeight + itemsHeight | |
| 440 contentsWidth = max(contentsWidth, itemsWidth) | |
| 441 end | |
| 442 | |
| 443 | |
| 421 | 444 |
| 422 local bankText, bagText | 445 local bankText, bagText |
| 423 if not self.profile.knowledgeMultiplier then | 446 if not self.profile.knowledgeMultiplier then |
| 424 bankText = '|cFF00FF00Shift-Right-Click an artifact weapon to start building data.' | 447 bankText = '|cFF00FF00Shift-Right-Click an artifact weapon to start building data.' |
| 425 elseif not (self.bankAP and self.bagAP) then | 448 elseif not (self.bankAP and self.bagAP) then |
| 441 bankText = (bankText and (bankText .. '\n') or '') .. '|cFFFFBB00World Quests:|r |cFFFFFFFF' .. ShortNumberString(self.worldQuestAP) .. '' | 464 bankText = (bankText and (bankText .. '\n') or '') .. '|cFFFFBB00World Quests:|r |cFFFFFFFF' .. ShortNumberString(self.worldQuestAP) .. '' |
| 442 end | 465 end |
| 443 | 466 |
| 444 | 467 |
| 445 self.SummaryHeader:SetText(bankText) | 468 self.SummaryHeader:SetText(bankText) |
| 446 | 469 if not self.lastButton then |
| 447 local numButtons = 0 | 470 contentsHeight = contentsHeight + self.SummaryHeader:GetHeight() |
| 448 local contentsHeight = 16 + self.SummaryHeader:GetHeight() | |
| 449 local contentsWidth = 400 | |
| 450 if self.profile.knowledgeMultiplier then | |
| 451 local artifactsWidth = self:UpdateArtifactButtons() | |
| 452 | |
| 453 if artifactsWidth ~= 0 then | |
| 454 contentsHeight = contentsHeight + 64 | |
| 455 end | |
| 456 | |
| 457 contentsWidth = max(contentsWidth, min(artifactsWidth, 400)) | |
| 458 | |
| 459 local itemsWidth, itemsHeight = self:UpdateItemButtons() | |
| 460 contentsHeight = contentsHeight + itemsHeight | |
| 461 contentsWidth = max(contentsWidth, itemsWidth) | |
| 462 end | 471 end |
| 463 | 472 |
| 464 | 473 |
| 465 if not self.hasArtifacts then | 474 if not self.hasArtifacts then |
| 466 self:SetShown(false) | 475 self:SetShown(false) |
| 532 | 541 |
| 533 function Module:UpdateArtifactButtons() | 542 function Module:UpdateArtifactButtons() |
| 534 | 543 |
| 535 -- Artifact icons, in no particular order | 544 -- Artifact icons, in no particular order |
| 536 self.equippedID = C_ArtifactUI.GetEquippedArtifactInfo() | 545 self.equippedID = C_ArtifactUI.GetEquippedArtifactInfo() |
| 546 self.lastButton = nil | |
| 537 self.canAddAP = nil | 547 self.canAddAP = nil |
| 538 self.canAddFishingAP = nil | 548 self.canAddFishingAP = nil |
| 539 local hasArtifacts | 549 local hasArtifacts |
| 540 local numButtons = 0 | 550 local numButtons = 0 |
| 541 local lastFrame = self | 551 local lastFrame = self |
| 545 local buttonsWidth = 0 | 555 local buttonsWidth = 0 |
| 546 if equipped then | 556 if equipped then |
| 547 numButtons = numButtons + 1 | 557 numButtons = numButtons + 1 |
| 548 button = self.Artifact[numButtons] | 558 button = self.Artifact[numButtons] |
| 549 button.relativeFrame = self | 559 button.relativeFrame = self |
| 550 lastFrame = button:SetButton(self.equippedID, equipped, numButtons, true, nil) | 560 if self.equippedID ~= button.itemID then |
| 551 hasArtifacts = true | 561 button:SetItem(self.equippedID, equipped, numButtons, true, nil) |
| 552 | 562 hasArtifacts = true |
| 563 end | |
| 564 lastFrame = button | |
| 553 buttonsWidth = EQUIPPED_SIZE + (FRAME_PADDING * 2) | 565 buttonsWidth = EQUIPPED_SIZE + (FRAME_PADDING * 2) |
| 554 end | 566 end |
| 555 | |
| 556 | |
| 557 for itemID, artifact in pairs(self.profile.artifacts) do | 567 for itemID, artifact in pairs(self.profile.artifacts) do |
| 558 if (itemID == UNDERLIGHT_ANGLER_ID) then | 568 if (itemID == UNDERLIGHT_ANGLER_ID) then |
| 559 -- only add if we have fishing AP items and it's not being shown in the equipped slot | 569 -- only add if we have fishing AP items and it's not being shown in the equipped slot |
| 560 if VeneerData.ArtifactPower.EnableFishing and (itemID ~= self.equippedID) then | 570 if VeneerData.ArtifactPower.EnableFishing and (itemID ~= self.equippedID) then |
| 561 fishingID = itemID | 571 fishingID = itemID |
| 575 | 585 |
| 576 hasArtifacts = true | 586 hasArtifacts = true |
| 577 numButtons = numButtons + 1 | 587 numButtons = numButtons + 1 |
| 578 button = self.Artifact[numButtons] | 588 button = self.Artifact[numButtons] |
| 579 button.relativeFrame = lastFrame | 589 button.relativeFrame = lastFrame |
| 580 lastFrame = button:SetButton(itemID, artifact, numButtons, (self.equippedID == itemID), nil) | 590 if button.itemID ~= itemID then |
| 591 button:SetItem(itemID, artifact, numButtons, (self.equippedID == itemID), nil) | |
| 592 end | |
| 593 lastFrame = button | |
| 581 buttonsWidth = buttonsWidth + lastFrame:GetWidth() + FRAME_PADDING | 594 buttonsWidth = buttonsWidth + lastFrame:GetWidth() + FRAME_PADDING |
| 582 end | 595 end |
| 583 end | 596 end |
| 584 end | 597 end |
| 585 end | 598 end |
| 599 | |
| 600 self.lastButton = lastFrame | |
| 586 | 601 |
| 587 | 602 |
| 588 if fishingData and (self.fishingAP and self.fishingAP > 0) then | 603 if fishingData and (self.fishingAP and self.fishingAP > 0) then |
| 589 numButtons = numButtons + 1 | 604 numButtons = numButtons + 1 |
| 590 hasArtifacts = true | 605 hasArtifacts = true |
| 591 local button = self.Artifact[numButtons] | 606 local button = self.Artifact[numButtons] |
| 592 button.relativeFrame = lastFrame | 607 button.relativeFrame = lastFrame |
| 593 button.isFishing = true | 608 button.isFishing = true |
| 594 button:SetButton(fishingID, fishingData, numButtons, self.equippedID == fishingID) | 609 button:SetItem(fishingID, fishingData, numButtons, self.equippedID == fishingID) |
| 610 self.lastButton = button | |
| 595 end | 611 end |
| 596 | 612 |
| 597 self.hasArtifacts = hasArtifacts | 613 self.hasArtifacts = hasArtifacts |
| 598 for i = numButtons+ 1, #self.Artifact do | 614 for i = numButtons+ 1, #self.Artifact do |
| 599 print('hide', i) | 615 print('hide', i) |
| 600 self.Artifact[i]:Hide() | 616 self.Artifact[i]:Hide() |
| 601 end | 617 end |
| 618 | |
| 619 self.SummaryHeader:ClearAllPoints() | |
| 620 if self.lastButton then | |
| 621 self.SummaryHeader:SetPoint('TOPLEFT', self.lastButton, 'TOPRIGHT', 4, -2) | |
| 622 else | |
| 623 self.SummaryHeader:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT', 4, 4) | |
| 624 end | |
| 625 | |
| 602 | 626 |
| 603 | 627 |
| 604 return buttonsWidth | 628 return buttonsWidth |
| 605 end | 629 end |
| 606 | 630 |
| 755 end | 779 end |
| 756 end | 780 end |
| 757 return self.cache.items[itemID], self.cache.fishing[itemID] | 781 return self.cache.items[itemID], self.cache.fishing[itemID] |
| 758 end | 782 end |
| 759 | 783 |
| 760 function Module:SetArtifact(itemID, name, texture, currentXP, pointsSpent) | 784 function Module:UpdateArtifact(itemID, name, texture, currentXP, pointsSpent) |
| 761 print('|cFF00FF00SetArtifact()|r') | 785 print('|cFF00FF00UpdateArtifact()|r') |
| 762 if not self.profile then | 786 if not self.profile then |
| 763 return | 787 return |
| 764 end | 788 end |
| 765 local artifacts = self.profile.artifacts | 789 local artifacts = self.profile.artifacts |
| 766 | 790 |
| 767 local multi = C_ArtifactUI.GetArtifactKnowledgeMultiplier() | |
| 768 if multi and (self.profile.knowledgeMultiplier ~= multi) then | |
| 769 table.wipe(self.cache.items) | |
| 770 table.wipe(self.cache.fishing) | |
| 771 end | |
| 772 | |
| 773 self.profile.knowledgeMultiplier = multi or self.profile.knowledgeMultiplier | |
| 774 print('multiplier:', multi) | |
| 775 | |
| 776 if itemID then | 791 if itemID then |
| 777 | |
| 778 self.currentEquipped = itemID | 792 self.currentEquipped = itemID |
| 779 | 793 |
| 780 artifacts[itemID] = artifacts[itemID] or {} | 794 artifacts[itemID] = artifacts[itemID] or {} |
| 781 table.wipe(artifacts[itemID]) | 795 table.wipe(artifacts[itemID]) |
| 782 local artifact = artifacts[itemID] | 796 local artifact = artifacts[itemID] |
| 784 artifact.name = name | 798 artifact.name = name |
| 785 artifact.texture = texture | 799 artifact.texture = texture |
| 786 artifact.currentXP = currentXP | 800 artifact.currentXP = currentXP |
| 787 artifact.level = pointsSpent | 801 artifact.level = pointsSpent |
| 788 artifact.tier = C_ArtifactUI.GetArtifactTier() or ((pointsSpent >= 36) and 2 or 1) | 802 artifact.tier = C_ArtifactUI.GetArtifactTier() or ((pointsSpent >= 36) and 2 or 1) |
| 803 artifact.itemID = itemID | |
| 789 | 804 |
| 790 print('tier', artifact.tier) | 805 print('tier', artifact.tier) |
| 791 local cost = C_ArtifactUI.GetCostForPointAtRank(pointsSpent, artifact.tier) | 806 local cost = C_ArtifactUI.GetCostForPointAtRank(pointsSpent, artifact.tier) |
| 792 artifact.currentCost = cost | 807 artifact.currentCost = cost |
| 793 | 808 |
| 794 | 809 for index, frame in pairs(self.Artifact) do |
| 810 if frame.itemID == itemID then | |
| 811 frame:SetItem(itemID, artifact, index, (itemID == self.equippedID), (itemID == UNDERLIGHT_ANGLER_ID)) | |
| 812 end | |
| 813 end | |
| 795 | 814 |
| 796 end | 815 end |
| 797 end | 816 end |
| 798 | 817 |
| 799 function Module:ScanBag(id) | 818 function Module:ScanBag(id) |
| 922 self.lastUpdate = GetTime() | 941 self.lastUpdate = GetTime() |
| 923 self.queuedScan = nil | 942 self.queuedScan = nil |
| 924 self:TryToShow() | 943 self:TryToShow() |
| 925 end | 944 end |
| 926 | 945 |
| 927 VeneerArtifactButtonMixin = {} | 946 |
| 928 local Artifact = VeneerArtifactButtonMixin | 947 function Artifact:SetItem(itemID, artifact, index, equipped, fishing) |
| 929 | 948 print('|cFF00FFFFSetItem()|r', itemID, index) |
| 930 function Artifact:SetButton(itemID, artifact, index, equipped, fishing) | |
| 931 print(itemID, index) | |
| 932 print(artifact.name, artifact.texture, artifact.currentXP) | 949 print(artifact.name, artifact.texture, artifact.currentXP) |
| 933 self:SetID(itemID) | 950 |
| 934 if not artifact.currentCost then | 951 if not artifact.currentCost then |
| 935 artifact.currentCost = artifact.cost | 952 artifact.currentCost = artifact.cost |
| 936 end | 953 end |
| 937 | 954 |
| 938 for k,v in pairs(artifact) do | 955 for k,v in pairs(artifact) do |
| 1002 else | 1019 else |
| 1003 self:ClearAllPoints() | 1020 self:ClearAllPoints() |
| 1004 self:SetPoint('TOPLEFT', self.relativeFrame, 'TOPLEFT', 4, -4) | 1021 self:SetPoint('TOPLEFT', self.relativeFrame, 'TOPLEFT', 4, -4) |
| 1005 end | 1022 end |
| 1006 | 1023 |
| 1024 self.itemID = itemID | |
| 1007 self.isEquipped = equipped | 1025 self.isEquipped = equipped |
| 1008 self:Update() | 1026 self:Update() |
| 1009 self:Show() | 1027 self:Show() |
| 1028 | |
| 1010 return self | 1029 return self |
| 1011 end | 1030 end |
| 1012 | 1031 |
| 1032 function Artifact:UpdateXPBar() | |
| 1033 local r3, g3, b3 = 1, .5, 0 -- main xp bar | |
| 1034 -- current: amount shown in blizz ui | |
| 1035 -- actual: amount contributing the next level, will be same until current point cap is reached | |
| 1036 -- potential: total of ap on hand | |
| 1037 print(self.currentXP, self.actualXP, self.potentialXP) | |
| 1038 | |
| 1039 local maxHeight = self:GetHeight() - 8 | |
| 1040 local currentHeight = self.CurrentProgress:GetHeight() or 1 | |
| 1041 local offHeight = self.AdjustedProgress:GetHeight() or 1 | |
| 1042 | |
| 1043 | |
| 1044 local currentProgress = (self.currentXP < self.currentCost) and (self.currentXP / self.currentCost) or 1 | |
| 1045 local projectedProgress = (self.totalXP < self.totalCost) and (self.totalXP / self.totalCost) or 1 | |
| 1046 if self.actualLevel ~= self.level then | |
| 1047 r3, g3, b3 = 0, 1, 1 | |
| 1048 end | |
| 1049 | |
| 1050 print('|cFFFF4400', currentProgress) | |
| 1051 if self.level <= WEAPON_MAX_TRAITS then | |
| 1052 self.CurrentProgress.animateFrom = currentHeight or 1 | |
| 1053 self.CurrentProgress.animateTo = currentProgress * maxHeight | |
| 1054 self.CurrentProgress:Show() | |
| 1055 self.ProgressLine:Show() | |
| 1056 else | |
| 1057 self.CurrentProgress:Hide() | |
| 1058 self.ProgressLine:Hide() | |
| 1059 end | |
| 1060 | |
| 1061 if self.totalXP ~= self.currentXP then | |
| 1062 print('|cFF00FFFF', projectedProgress) | |
| 1063 if (projectedProgress > currentProgress) then | |
| 1064 self.AdjustedProgress:SetPoint('BOTTOM', self.CurrentProgress, 'TOP') | |
| 1065 projectedProgress = projectedProgress - currentProgress | |
| 1066 print('show projected above', currentProgress, projectedProgress) | |
| 1067 else | |
| 1068 self.CurrentProgress:Hide() | |
| 1069 self.ProgressLine:Hide() | |
| 1070 self.AdjustedProgress:SetPoint('BOTTOM', self, 'BOTTOM', 0 , 4) | |
| 1071 print('show projected at bottom', currentProgress, projectedProgress) | |
| 1072 end | |
| 1073 | |
| 1074 self.AdjustedProgress.animateFrom = self.AdjustedProgress:GetHeight() or 1 | |
| 1075 self.AdjustedProgress.animateTo = projectedProgress * self:GetHeight() | |
| 1076 self.AdjustedLine:Show() | |
| 1077 self.AdjustedProgress:Show() | |
| 1078 else | |
| 1079 self.CurrentProgress:SetPoint('BOTTOM', self, 'BOTTOM', 0, 4) | |
| 1080 self.AdjustedProgress:Hide() | |
| 1081 self.AdjustedLine:Hide() | |
| 1082 end | |
| 1083 --print(self.CurrentProgress:GetPoint(3)) | |
| 1084 --print(self.CurrentProgress:GetSize()) | |
| 1085 | |
| 1086 self.CurrentProgress:SetColorTexture(r3,g3,b3,1) | |
| 1087 | |
| 1088 end | |
| 1089 | |
| 1090 function Artifact:OnLoad() | |
| 1091 print('|cFFFF4400OnLoad()|r', self:GetName(), self:GetID()) | |
| 1092 self:RegisterEvent('ARTIFACT_UPDATE') | |
| 1093 self:RegisterEvent('PLAYER_LOGIN') | |
| 1094 end | |
| 1095 | |
| 1096 function Artifact:OnEvent(event) | |
| 1097 local itemID, _, _, nextCost = C_ArtifactUI.GetEquippedArtifactInfo() | |
| 1098 print(self:GetID(), '|cFFFF4400OnEvent()|r', event, itemID, '=', self.itemID, (itemID == self.itemID)) | |
| 1099 if itemID == self.itemID then | |
| 1100 self:Update() | |
| 1101 end | |
| 1102 end | |
| 1103 | |
| 1013 function Artifact:Update() | 1104 function Artifact:Update() |
| 1014 local r1, g1, b1 = 1, 1, 1 | 1105 if not self.itemID then |
| 1015 local r2, g2, b2 = 1, 1, 0 | 1106 return |
| 1107 end | |
| 1108 | |
| 1109 print(self:GetName(), '|ff00FFFFUpdate()|r') | |
| 1110 local r1, g1, b1 = 1, 1, 1 -- top text | |
| 1111 local r2, g2, b2 = 1, 1, 0 -- bottom text | |
| 1016 local levelText = self.level | 1112 local levelText = self.level |
| 1017 local xpText = ShortNumberString(self.currentXP) | 1113 local xpText = ShortNumberString(self.currentXP) |
| 1018 local costText = ShortNumberString(self.currentCost) | 1114 local costText = ShortNumberString(self.currentCost) |
| 1019 local remainingText = ShortNumberString(self.currentCost - self.currentXP) | 1115 local remainingText = ShortNumberString(self.currentCost - self.currentXP) |
| 1020 -- current: amount shown in blizz ui | 1116 |
| 1021 -- actual: amount contributing the next level, will be same until current point cap is reached | 1117 local maxHeight = self:GetHeight() - 4 |
| 1022 -- potential: total of ap on hand | 1118 local currentHeight = self.CurrentProgress:GetHeight() or 1 |
| 1023 print(self.currentXP, self.actualXP, self.potentialXP) | 1119 local offHeight = self.AdjustedProgress:GetHeight() or 1 |
| 1120 | |
| 1024 if self.actualLevel ~= self.level then | 1121 if self.actualLevel ~= self.level then |
| 1025 levelText = self.actualLevel | 1122 levelText = self.actualLevel |
| 1026 r1, g1, b1 = 0, 1, 0 | 1123 r1, g1, b1 = 0, 1, 0 |
| 1027 --r2, g2, b2 = 0, 1, 0 | |
| 1028 xpText = ShortNumberString(self.actualXP) | 1124 xpText = ShortNumberString(self.actualXP) |
| 1029 costText = ShortNumberString(self.actualCost) | 1125 costText = ShortNumberString(self.actualCost) |
| 1030 remainingText = ShortNumberString(self.actualCost-self.actualXP) | 1126 remainingText = ShortNumberString(self.actualCost-self.actualXP) |
| 1031 --[[elseif self.potentialLevel ~= self.level then | 1127 --[[elseif self.potentialLevel ~= self.level then |
| 1032 r1, g1, b1 = 0, 1, 1 | 1128 r1, g1, b1 = 0, 1, 1 |
| 1033 r2, g2, b2 = 0, 1, 1 | 1129 r2, g2, b2 = 0, 1, 1 |
| 1034 costText = ShortNumberString(self.potentialCost) | 1130 costText = ShortNumberString(self.potentialCost) |
| 1035 remainingText = ShortNumberString(self.potentialCost-self.potentialXP) | 1131 remainingText = ShortNumberString(self.potentialCost-self.potentialXP) |
| 1036 --]] | 1132 --]] |
| 1037 elseif self.totalLevel ~= self.actualLevel then | |
| 1038 r1, g1, b1 = 0, 1, 1 | |
| 1039 end | 1133 end |
| 1040 | 1134 |
| 1041 self.Level:SetText(levelText) | 1135 self.Level:SetText(levelText) |
| 1042 self.CurrentXP:SetText( xpText ) | 1136 self.CurrentXP:SetText( xpText ) |
| 1043 self.RemainingCost:SetText(remainingText) | 1137 self.RemainingCost:SetText(remainingText) |
| 1052 else | 1146 else |
| 1053 self:SetSize(48,48) | 1147 self:SetSize(48,48) |
| 1054 self:SetNormalTexture(nil, 'ADD') | 1148 self:SetNormalTexture(nil, 'ADD') |
| 1055 end | 1149 end |
| 1056 | 1150 |
| 1057 local currentProgress = (self.currentXP < self.currentCost) and (self.currentXP / self.currentCost) or 1 | 1151 self:UpdateXPBar() |
| 1058 print('|cFFFF4400', currentProgress) | |
| 1059 if self.level <= 92 then | |
| 1060 self.CurrentProgress.animateFrom = self.CurrentProgress:GetHeight() or 1 | |
| 1061 self.CurrentProgress.animateTo = currentProgress * self:GetHeight() | |
| 1062 self.CurrentProgress:Show() | |
| 1063 self.ProgressLine:Show() | |
| 1064 else | |
| 1065 self.CurrentProgress:Hide() | |
| 1066 self.ProgressLine:Hide() | |
| 1067 end | |
| 1068 | |
| 1069 if self.totalXP ~= self.currentXP then | |
| 1070 local projectedProgress = (self.totalXP / self.totalCost) | |
| 1071 print('|cFF00FFFF', projectedProgress) | |
| 1072 if (projectedProgress > currentProgress) then | |
| 1073 self.AdjustedProgress:SetPoint('BOTTOM', self.CurrentProgress, 'TOP') | |
| 1074 projectedProgress = projectedProgress - currentProgress | |
| 1075 else | |
| 1076 self.CurrentProgress:Hide() | |
| 1077 self.ProgressLine:Hide() | |
| 1078 self.AdjustedProgress:SetPoint('BOTTOM', self, 'BOTTOM') | |
| 1079 end | |
| 1080 print('show actual', currentProgress, projectedProgress) | |
| 1081 self.AdjustedProgress.animateFrom = self.AdjustedProgress:GetHeight() or 1 | |
| 1082 self.AdjustedProgress.animateTo = projectedProgress * self:GetHeight() | |
| 1083 self.AdjustedLine:Show() | |
| 1084 self.AdjustedProgress:Show() | |
| 1085 else | |
| 1086 self.CurrentProgress:SetPoint('BOTTOM', self, 'BOTTOM') | |
| 1087 self.AdjustedProgress:Hide() | |
| 1088 self.AdjustedLine:Hide() | |
| 1089 end | |
| 1090 print(self.CurrentProgress:GetPoint(3)) | |
| 1091 print(self.CurrentProgress:GetSize()) | |
| 1092 | 1152 |
| 1093 if self.actualLevel ~= self.currentLevel then | 1153 if self.actualLevel ~= self.currentLevel then |
| 1094 self:SetNormalTexture([[Interface\Buttons\UI-Quickslot-Depress]], 'ADD') | 1154 self:SetNormalTexture([[Interface\Buttons\UI-Quickslot-Depress]], 'ADD') |
| 1095 self:GetNormalTexture():SetBlendMode('BLEND') | 1155 self:GetNormalTexture():SetBlendMode('BLEND') |
| 1096 self:GetNormalTexture():SetVertexColor(1,1,1) | 1156 self:GetNormalTexture():SetVertexColor(1,1,1) |
