Mercurial > wow > worldplan
comparison QuestPOI.lua @ 74:2ba11b25aa7f
flight map data handler adjustments
| author | Nenue |
|---|---|
| date | Sat, 08 Apr 2017 17:07:58 -0400 |
| parents | 25f7dbc20a72 |
| children | 78d78dc77822 |
comparison
equal
deleted
inserted
replaced
| 73:25f7dbc20a72 | 74:2ba11b25aa7f |
|---|---|
| 101 hideIcon = true, | 101 hideIcon = true, |
| 102 iconWidth = 3, | 102 iconWidth = 3, |
| 103 } | 103 } |
| 104 local REWARD_TYPE_STYLES = { | 104 local REWARD_TYPE_STYLES = { |
| 105 [REWARD_CASH] = { | 105 [REWARD_CASH] = { |
| 106 border = {1,1,0}, | |
| 107 hideNumber = true, | 106 hideNumber = true, |
| 108 }, | 107 }, |
| 109 [REWARD_ARTIFACT_POWER] = {}, | 108 [REWARD_ARTIFACT_POWER] = {}, |
| 110 [REWARD_GEAR] = { | 109 [REWARD_GEAR] = { |
| 111 | |
| 112 hideNumber = true, | 110 hideNumber = true, |
| 113 }, | 111 }, |
| 114 [REWARD_CURRENCY] = { | 112 [REWARD_CURRENCY] = { |
| 115 textColor = {1,1,0,.5} | 113 textColor = {1,1,0,.5} |
| 116 }, | 114 }, |
| 117 [REWARD_REAGENT] = { | 115 [REWARD_REAGENT] = { |
| 118 | 116 |
| 119 hideNumber = true, | 117 hideNumber = true, |
| 120 }, | 118 }, |
| 121 } | 119 } |
| 120 local BORDER_SELECTED_BOUNTY = {1, 1, 0, 1 } | |
| 121 local BORDER_CRITERIA = {.25, .5, 1, 1} | |
| 122 | 122 |
| 123 local LE_ITEM_CLASS_WEAPON, LE_ITEM_CLASS_ARMOR, LE_ITEM_CLASS_GEM, LE_ITEM_GEM_ARTIFACTRELIC, LE_ITEM_CLASS_TRADEGOODS = LE_ITEM_CLASS_WEAPON, LE_ITEM_CLASS_ARMOR, LE_ITEM_CLASS_GEM, LE_ITEM_GEM_ARTIFACTRELIC, LE_ITEM_CLASS_TRADEGOODS | 123 local LE_ITEM_CLASS_WEAPON, LE_ITEM_CLASS_ARMOR, LE_ITEM_CLASS_GEM, LE_ITEM_GEM_ARTIFACTRELIC, LE_ITEM_CLASS_TRADEGOODS = LE_ITEM_CLASS_WEAPON, LE_ITEM_CLASS_ARMOR, LE_ITEM_CLASS_GEM, LE_ITEM_GEM_ARTIFACTRELIC, LE_ITEM_CLASS_TRADEGOODS |
| 124 | 124 |
| 125 | 125 |
| 126 local STYLE_TYPE_PENDING = 768 | 126 local STYLE_TYPE_PENDING = 768 |
| 489 WorldPlanTooltip:SetOwner(self, 'ANCHOR_NONE') | 489 WorldPlanTooltip:SetOwner(self, 'ANCHOR_NONE') |
| 490 WorldPlanTooltip:SetHyperlink(itemLink) | 490 WorldPlanTooltip:SetHyperlink(itemLink) |
| 491 for i = 1, WorldPlanTooltip:NumLines() do | 491 for i = 1, WorldPlanTooltip:NumLines() do |
| 492 local line = _G['WorldPlanTooltipTextLeft' .. i] | 492 local line = _G['WorldPlanTooltipTextLeft' .. i] |
| 493 local text = line and line:GetText() | 493 local text = line and line:GetText() |
| 494 local ap = text and text:gsub(',', ''):match('(%d+) '..ARTIFACT_POWER) | 494 local ap = text and text:gsub(',', ''):gsub(' million', '000000'):match('(%d+) '..ARTIFACT_POWER) |
| 495 if ap then | 495 if ap then |
| 496 rewardCount = tonumber(ap) | 496 rewardCount = tonumber(ap) |
| 497 print(ap) | 497 print(ap) |
| 498 end | 498 end |
| 499 | 499 |
| 574 function QuestPOI:StartFade() | 574 function QuestPOI:StartFade() |
| 575 if not self.isAnimating then | 575 if not self.isAnimating then |
| 576 qprint('|cFFFFFF00clearing new status') | 576 qprint('|cFFFFFF00clearing new status') |
| 577 self:SetAlpha(0) | 577 self:SetAlpha(0) |
| 578 if self.dataLoaded then | 578 if self.dataLoaded then |
| 579 self:Refresh() | 579 self:Refresh('POI_ISNEW') |
| 580 self.FadeIn.FadeIn:SetToAlpha(db.PinAlpha) | 580 self.FadeIn.FadeIn:SetToAlpha(db.PinAlpha) |
| 581 self.PendingFade.FadeIn:SetToAlpha(db.PinAlpha) | 581 self.PendingFade.FadeIn:SetToAlpha(db.PinAlpha) |
| 582 self.PendingFade.FadeOut:SetFromAlpha(db.PinAlpha) | 582 self.PendingFade.FadeOut:SetFromAlpha(db.PinAlpha) |
| 583 | 583 |
| 584 self.isAnimating = true | 584 self.isAnimating = true |
| 603 print('|cFF00FF00Alpha correction') | 603 print('|cFF00FF00Alpha correction') |
| 604 self:SetAlpha(db.PinAlpha) -- fix stuck alpha | 604 self:SetAlpha(db.PinAlpha) -- fix stuck alpha |
| 605 end | 605 end |
| 606 if self.isStale then | 606 if self.isStale then |
| 607 print('|cFF00FF00refresh on show') | 607 print('|cFF00FF00refresh on show') |
| 608 self:Refresh() | 608 self:Refresh('POI_SCRIPT') |
| 609 end | 609 end |
| 610 end | 610 end |
| 611 self:ShowFrames() | 611 self:ShowFrames() |
| 612 end | 612 end |
| 613 | 613 |
| 631 self:HideFrames() | 631 self:HideFrames() |
| 632 return | 632 return |
| 633 end | 633 end |
| 634 | 634 |
| 635 if owner then | 635 if owner then |
| 636 local prevOwner = self:GetParent() | |
| 637 if prevOwner ~= owner then | |
| 638 self.isStale = true | |
| 639 end | |
| 640 self:SetParent(owner) | 636 self:SetParent(owner) |
| 641 self.Overlay:SetParent(owner) | 637 self.Overlay:SetParent(owner) |
| 638 self.isStale = true | |
| 642 else | 639 else |
| 643 owner = self:GetParent() | 640 owner = self:GetParent() |
| 644 end | 641 end |
| 645 | 642 |
| 646 self:ClearAllPoints() | |
| 647 self:SetFrameLevel(pinBaseIndex + self:GetID()) | 643 self:SetFrameLevel(pinBaseIndex + self:GetID()) |
| 648 self.Overlay:SetFrameLevel(overlayBaseIndex + self:GetID()) | 644 self.Overlay:SetFrameLevel(overlayBaseIndex + self:GetID()) |
| 649 | 645 |
| 650 local scaleChanged | 646 |
| 651 if scaleFactor and (self.scaleFactor ~= scaleFactor) then | 647 if scaleFactor then |
| 652 --print('scaleFactor') | 648 --print('scaleFactor') |
| 653 self:SetScale(scaleFactor) | 649 self:SetScale(scaleFactor) |
| 654 self.Overlay:SetScale(scaleFactor) | 650 self.Overlay:SetScale(scaleFactor) |
| 655 self.scaleFactor = scaleFactor | 651 self.scaleFactor = scaleFactor |
| 656 scaleChanged = true | 652 end |
| 657 end | 653 |
| 658 | 654 mapWidth = mapWidth or owner:GetWidth() |
| 659 if (dX and dY) then | 655 mapHeight = mapHeight or owner:GetHeight() |
| 660 if not (mapHeight and mapWidth) then | 656 dX = dX or self.x |
| 661 mapWidth, mapHeight = owner:GetSize() | 657 dY = dY or self.y |
| 662 end | 658 --print(owner:GetName() or tostring(owner), self:GetName(), owner:GetScale(), scaleFactor) |
| 663 | 659 if (self.x ~= dX) or (self.y ~= dY) or scaleFactor then |
| 664 if (self.x ~= dY) or (self.y ~= dY) or scaleChanged then | 660 |
| 665 self.x = dX | 661 self.x = dX |
| 666 self.y = dY | 662 self.y = dY |
| 667 local pX = (dX * mapWidth) * (1 / scaleFactor) | 663 local pX = (dX * mapWidth) * (1 / scaleFactor) |
| 668 local pY = (-dY * mapHeight) * (1 / scaleFactor) | 664 local pY = (-dY * mapHeight) * (1 / scaleFactor) |
| 669 self:SetPoint('CENTER', owner, 'TOPLEFT', pX, pY) | 665 --print('to', pX, pY, self:GetScale()) |
| 670 end | 666 self:ClearAllPoints() |
| 667 self:SetPoint('CENTER', owner, 'TOPLEFT', pX, pY) | |
| 671 end | 668 end |
| 672 | 669 |
| 673 end | 670 end |
| 674 | 671 |
| 675 -- Show/Hide the text overlays associated with the quest pin; they aren't hierarchically linked | 672 -- Show/Hide the text overlays associated with the quest pin; they aren't hierarchically linked |
| 746 if not self.dataLoaded then | 743 if not self.dataLoaded then |
| 747 print('|cFFFF4400'..self:GetID()..':|r polling reward info') | 744 print('|cFFFF4400'..self:GetID()..':|r polling reward info') |
| 748 | 745 |
| 749 local dataLoaded = self:GetData() | 746 local dataLoaded = self:GetData() |
| 750 if dataLoaded and not tContains(db.UpdatedPins, self) then | 747 if dataLoaded and not tContains(db.UpdatedPins, self) then |
| 751 | |
| 752 print('|cFF00FF88'..self:GetID()..':|r delayed reward info, queueing for update') | |
| 753 self.PendingFade:Stop() | 748 self.PendingFade:Stop() |
| 749 -- scale info from the parent module is needed, so deal with it there | |
| 754 tinsert(db.UpdatedPins, self) | 750 tinsert(db.UpdatedPins, self) |
| 755 end | 751 end |
| 756 return | 752 return |
| 757 end | 753 end |
| 758 | 754 |
| 759 if self.maxAlertLevel then | 755 if self.maxAlertLevel then |
| 760 self:UpdateStatus() | 756 self:UpdateStatus() |
| 757 end | |
| 758 | |
| 759 end | |
| 760 | |
| 761 function QuestPOI:GetCriteriaState() | |
| 762 local isCriteria, isBounty, isSpellTarget | |
| 763 if self.factionID then | |
| 764 | |
| 765 local bounties = db.BountiesByFactionID | |
| 766 if bounties then | |
| 767 for factionID, bounty in pairs(bounties) do | |
| 768 | |
| 769 if IsQuestCriteriaForBounty(self.questID, bounty.questID) then | |
| 770 isCriteria = true | |
| 771 if db.selectedBounty == bounty then | |
| 772 isBounty = true | |
| 773 end | |
| 774 print('|cFF00FF88Criteria:|r', self.questID, bounty.questID, isCriteria, isBounty) | |
| 775 end | |
| 776 end | |
| 777 | |
| 778 | |
| 779 print('|cFFFF4400Criteria:|r', self.questID, self.isCriteria, self.isBounty) | |
| 780 | |
| 781 end | |
| 782 end | |
| 783 isSpellTarget = IsQuestIDValidSpellTarget(self.questID) | |
| 784 | |
| 785 if (self.isBounty ~= isBounty) or (self.isCriteria ~= isCriteria) or (self.isSpellTarget ~= isSpellTarget) then | |
| 786 | |
| 787 self.isBounty = isBounty | |
| 788 self.isCriteria = isCriteria | |
| 789 self.isSpellTarget = isSpellTarget | |
| 790 return true | |
| 761 end | 791 end |
| 762 | 792 |
| 763 end | 793 end |
| 764 | 794 |
| 765 -- Called at static intervals and with Refresh | 795 -- Called at static intervals and with Refresh |
| 777 tl = timeState | 807 tl = timeState |
| 778 self.timeLabel:SetText(text) | 808 self.timeLabel:SetText(text) |
| 779 end | 809 end |
| 780 end | 810 end |
| 781 | 811 |
| 812 local border = (self.isBounty or self.isCriteria) and self.RewardBorder or self.HighlightBorder | |
| 813 | |
| 782 if tl and (timeLeft < 120) then | 814 if tl and (timeLeft < 120) then |
| 783 self.HighlightBorder:SetVertexColor(1,0,0,0.7) | 815 border:SetVertexColor(1,0,0,0.7) |
| 784 elseif self.isBounty then | |
| 785 self.HighlightBorder:SetVertexColor(1,1,0,1) | |
| 786 elseif self.isCriteria then | |
| 787 self.HighlightBorder:SetVertexColor(.25,.5,1,1) | |
| 788 else | 816 else |
| 789 self.HighlightBorder:SetVertexColor(0,0,0,0.7) | 817 border:SetVertexColor(0,0,0,0.7) |
| 790 end | 818 end |
| 791 self.alertLevel = tl | 819 self.alertLevel = tl |
| 792 self.timeLabel:SetShown(self.worldQuest and (self.maxAlertLevel >= 1)) | 820 self.timeLabel:SetShown(self.worldQuest and (self.maxAlertLevel >= 1)) |
| 793 else | 821 else |
| 794 self.hideReason = "No longer active." | 822 self.hideReason = "No longer active." |
| 796 | 824 |
| 797 end | 825 end |
| 798 end | 826 end |
| 799 | 827 |
| 800 | 828 |
| 801 function QuestPOI:Refresh () | 829 function QuestPOI:Refresh (event) |
| 802 | 830 |
| 803 rprint('|cFF00FF88'..self:GetID()..'|r:Refresh() type =', self.rewardType, 'title =', self.title) | 831 print('|cFF00FF88'..self:GetID()..'|r:Refresh()', event) |
| 804 | 832 |
| 805 local style = DEFAULT_STYLE | 833 local style = DEFAULT_STYLE |
| 806 if self.dataLoaded and not self.filtered then | 834 if self.dataLoaded and not self.filtered then |
| 807 style = REWARD_TYPE_STYLES[self.rewardType] | 835 style = REWARD_TYPE_STYLES[self.rewardType] |
| 808 else | 836 else |
| 826 local count = self.count | 854 local count = self.count |
| 827 local hideNumbers = style.hideNumber or DEFAULT_STYLE.hideNumber | 855 local hideNumbers = style.hideNumber or DEFAULT_STYLE.hideNumber |
| 828 | 856 |
| 829 local tagIcon = self.tagIcon | 857 local tagIcon = self.tagIcon |
| 830 self.maxAlertLevel = style.maxAlertLevel or DEFAULT_STYLE.maxAlertLevel | 858 self.maxAlertLevel = style.maxAlertLevel or DEFAULT_STYLE.maxAlertLevel |
| 859 | |
| 831 | 860 |
| 832 if self.itemName then | 861 if self.itemName then |
| 833 if self.itemNumber and (self.itemNumber > 1) and (not hideNumbers) then | 862 if self.itemNumber and (self.itemNumber > 1) and (not hideNumbers) then |
| 834 local numberString = self.itemNumber | 863 local numberString = self.itemNumber |
| 835 if self.itemNumber >= 1000000 then | 864 if self.itemNumber >= 1000000 then |
| 881 icon:SetTexture(PENDING_ICON) | 910 icon:SetTexture(PENDING_ICON) |
| 882 icon:SetDesaturated(true) | 911 icon:SetDesaturated(true) |
| 883 icon:SetVertexColor(unpack(borderColor)) | 912 icon:SetVertexColor(unpack(borderColor)) |
| 884 end | 913 end |
| 885 local borderMask = style.borderMask or DEFAULT_STYLE.borderMask | 914 local borderMask = style.borderMask or DEFAULT_STYLE.borderMask |
| 886 local borderSize = currentWidth + (borderWidth * 2) | 915 local borderSize = currentWidth + (borderWidth * 2) + (self.isCriteria and 2 or 0) |
| 887 | 916 |
| 888 | 917 |
| 889 iconBorder:SetSize(borderSize, borderSize) | 918 iconBorder:SetSize(borderSize, borderSize) |
| 890 iconBorder:SetMask(borderMask) | 919 iconBorder:SetMask(borderMask) |
| 891 iconBorder:SetTexture(PENDING_BORDER) | 920 iconBorder:SetTexture(PENDING_BORDER) |
| 892 iconBorder:SetVertexColor(unpack(borderColor)) | 921 |
| 893 iconBorder:SetDesaturated(true) | 922 iconBorder:SetDesaturated(true) |
| 894 | 923 |
| 895 local highlightSize = borderSize + (highlightWidth * 2) | 924 local highlightSize = borderSize + (highlightWidth * 2) |
| 896 trackingBorder:SetSize(highlightSize, highlightSize) | 925 trackingBorder:SetSize(highlightSize, highlightSize) |
| 897 trackingBorder:SetMask(borderMask) | 926 trackingBorder:SetMask(borderMask) |
| 910 | 939 |
| 911 self:UpdateSize() | 940 self:UpdateSize() |
| 912 self:UpdateStatus() | 941 self:UpdateStatus() |
| 913 self.isStale = nil | 942 self.isStale = nil |
| 914 | 943 |
| 944 if self.isBounty then | |
| 945 print('is bounty') | |
| 946 iconBorder:SetVertexColor(trackingBorder:GetVertexColor()) | |
| 947 trackingBorder:SetVertexColor(unpack(BORDER_SELECTED_BOUNTY)) | |
| 948 elseif self.isCriteria then | |
| 949 print('is criteria of a bounty') | |
| 950 iconBorder:SetVertexColor(trackingBorder:GetVertexColor()) | |
| 951 trackingBorder:SetVertexColor(unpack(BORDER_CRITERIA)) | |
| 952 else | |
| 953 | |
| 954 iconBorder:SetVertexColor(unpack(borderColor)) | |
| 955 trackingBorder:SetVertexColor(1,1,1,1) | |
| 956 end | |
| 915 | 957 |
| 916 if SpellCanTargetQuest() then | 958 if SpellCanTargetQuest() then |
| 917 if IsQuestIDValidSpellTarget(self.questID) then | 959 if IsQuestIDValidSpellTarget(self.questID) then |
| 918 icon:SetVertexColor(1,1,1) | 960 icon:SetVertexColor(1,1,1) |
| 919 else | 961 else |
