Mercurial > wow > worldplan
comparison QuestPOI.lua @ 66:e43e10c5576b
Update for Legion Patch 7.2
- Massive performance improvements through largely re-written update routines.
- Removed AP token caching until reliable mechanisms for detecting AK shifts can be resolved.
author | Nenue |
---|---|
date | Thu, 30 Mar 2017 02:32:44 -0400 |
parents | 02f1d3bce558 |
children | 96183f981acb |
comparison
equal
deleted
inserted
replaced
65:02f1d3bce558 | 66:e43e10c5576b |
---|---|
69 local LE_QUEST_TAG_TYPE_PVP = LE_QUEST_TAG_TYPE_PVP | 69 local LE_QUEST_TAG_TYPE_PVP = LE_QUEST_TAG_TYPE_PVP |
70 local LE_QUEST_TAG_TYPE_PET_BATTLE = LE_QUEST_TAG_TYPE_PET_BATTLE | 70 local LE_QUEST_TAG_TYPE_PET_BATTLE = LE_QUEST_TAG_TYPE_PET_BATTLE |
71 local LE_QUEST_TAG_TYPE_DUNGEON = LE_QUEST_TAG_TYPE_DUNGEON | 71 local LE_QUEST_TAG_TYPE_DUNGEON = LE_QUEST_TAG_TYPE_DUNGEON |
72 local LE_QUEST_TAG_TYPE_PROFESSION = LE_QUEST_TAG_TYPE_PROFESSION | 72 local LE_QUEST_TAG_TYPE_PROFESSION = LE_QUEST_TAG_TYPE_PROFESSION |
73 local LE_QUEST_TAG_TYPE_NORMAL = LE_QUEST_TAG_TYPE_NORMAL | 73 local LE_QUEST_TAG_TYPE_NORMAL = LE_QUEST_TAG_TYPE_NORMAL |
74 | |
75 local DEFAULT_STYLE = { | |
76 border = {1,1,1}, | |
77 x = 0, y = 0, | |
78 desaturated = true, | |
79 iconMask = "Interface\\Minimap\\UI-Minimap-Background", | |
80 borderMask = "Interface\\Minimap\\UI-Minimap-Background", | |
81 rewardMark = "Interface\\Minimap\\UI-Minimap-Background", | |
82 scaleFactors = {0.25, 0.7, 1}, | |
83 iconWidth = 18, | |
84 borderWidth = 2, | |
85 highlightWidth = 2, | |
86 TagSize = 8, | |
87 maxAlertLevel = 0, | |
88 numberFontObject = 'WorldPlanFont' | |
89 } | |
90 local MINIMIZED_STYLE = { | |
91 hideNumber = true, | |
92 hideIcon = true, | |
93 } | |
94 local REWARD_TYPE_STYLES = { | |
95 [REWARD_CASH] = { | |
96 border = {1,1,0}, | |
97 hideNumber = true, | |
98 }, | |
99 [REWARD_ARTIFACT_POWER] = {}, | |
100 [REWARD_GEAR] = { | |
101 | |
102 hideNumber = true, | |
103 }, | |
104 [REWARD_CURRENCY] = {}, | |
105 [REWARD_REAGENT] = { | |
106 | |
107 hideNumber = true, | |
108 }, | |
109 } | |
74 | 110 |
75 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 | 111 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 |
76 | 112 |
77 | 113 |
78 local STYLE_TYPE_PENDING = 768 | 114 local STYLE_TYPE_PENDING = 768 |
548 self:SetAlpha(db.PinAlpha) | 584 self:SetAlpha(db.PinAlpha) |
549 self.isAnimating = nil | 585 self.isAnimating = nil |
550 end | 586 end |
551 | 587 |
552 -- Places the pin and triggers display | 588 -- Places the pin and triggers display |
553 function QuestPOI:SetAnchor(owner, dX, dY, mapWidth, mapHeight) | 589 function QuestPOI:SetAnchor(owner, dX, dY, mapWidth, mapHeight, scaleFactor) |
554 wqprint(self:GetName()..':SetAnchor()', owner, dX, dY, self.filtered, self.used) | 590 wqprint(self:GetName()..':SetAnchor()', owner, dX, dY, scaleFactor, self.filtered, self.used) |
555 if not self.used then | 591 if not self.used then |
556 self:HideFrames() | 592 self:HideFrames() |
557 return | 593 return |
558 end | 594 end |
559 | 595 |
560 | 596 self:SetScale(scaleFactor) |
561 self:SetParent(owner) | 597 self:SetParent(owner) |
562 self:ClearAllPoints() | 598 self:ClearAllPoints() |
563 self:SetFrameLevel(pinBaseIndex + self:GetID()) | 599 self:SetFrameLevel(pinBaseIndex + self:GetID()) |
564 self.Overlay:SetParent(owner) | 600 self.Overlay:SetParent(owner) |
601 self.Overlay:SetScale(scaleFactor) | |
565 self.Overlay:SetFrameLevel(overlayBaseIndex + self:GetID()) | 602 self.Overlay:SetFrameLevel(overlayBaseIndex + self:GetID()) |
566 if (dX and dY) then | 603 if (dX and dY) then |
567 if not (mapHeight and mapWidth) then | 604 if not (mapHeight and mapWidth) then |
568 mapWidth, mapHeight = owner:GetSize() | 605 mapWidth, mapHeight = owner:GetSize() |
569 end | 606 end |
570 if (self.x ~= dY) or (self.y ~= dY) then | 607 if (self.x ~= dY) or (self.y ~= dY) or (self.scaleFactor ~= scaleFactor) then |
571 self.x = dX | 608 self.x = dX |
572 self.y = dY | 609 self.y = dY |
573 local pX = (dX * mapWidth) | 610 self.scaleFactor = scaleFactor |
574 local pY = (-dY * mapHeight) | 611 local pX = (dX * mapWidth) * (1 / scaleFactor) |
612 local pY = (-dY * mapHeight) * (1 / scaleFactor) | |
575 self:SetPoint('CENTER', owner, 'TOPLEFT', pX, pY) | 613 self:SetPoint('CENTER', owner, 'TOPLEFT', pX, pY) |
576 end | 614 end |
577 else | 615 else |
578 if self.x or self.y then | 616 if self.x or self.y then |
579 self.x = nil | 617 self.x = nil |
644 return | 682 return |
645 end | 683 end |
646 if self.isNew then | 684 if self.isNew then |
647 --print('|cFFFFFF00push new poi stuff') | 685 --print('|cFFFFFF00push new poi stuff') |
648 self:OnNew() | 686 self:OnNew() |
649 elseif (self.isStale or (not self.title)) and not self.isAnimating then | 687 elseif self.isStale then |
650 --wprint('|cFFFFFF00push poi update') | 688 --wprint('|cFFFFFF00push poi update') |
651 self:Refresh() | 689 self:Refresh() |
652 return | 690 return |
653 end | 691 end |
654 | 692 |
657 if not self.dataLoaded then | 695 if not self.dataLoaded then |
658 --print('|cFFFF4400'..self:GetID()..':|r polling reward info') | 696 --print('|cFFFF4400'..self:GetID()..':|r polling reward info') |
659 if not (self.isAnimating) then | 697 if not (self.isAnimating) then |
660 self.PendingFade:Play() | 698 self.PendingFade:Play() |
661 end | 699 end |
662 self:GetData() | 700 local dataLoaded = self:GetData() |
701 if dataLoaded then | |
702 WorldPlanQuests.isZoomDirty = true | |
703 end | |
663 return | 704 return |
664 else | 705 else |
665 if self.PendingFade:IsPlaying() then | 706 if self.PendingFade:IsPlaying() then |
666 self.PendingFade:Stop() | 707 self.PendingFade:Stop() |
667 end | 708 end |
706 self:HideFrames() | 747 self:HideFrames() |
707 end | 748 end |
708 end | 749 end |
709 end | 750 end |
710 | 751 |
752 | |
711 function QuestPOI:Refresh () | 753 function QuestPOI:Refresh () |
712 | 754 |
713 rprint('|cFF00FF88'..self:GetID()..'|r:Refresh() type =', self.rewardType, 'title =', self.title) | 755 rprint('|cFF00FF88'..self:GetID()..'|r:Refresh() type =', self.rewardType, 'title =', self.title) |
714 | 756 |
715 | 757 local style = DEFAULT_STYLE |
716 | 758 if self.dataLoaded and not self.filtered then |
717 local styleType = (self.dataLoaded and self.rewardType) or STYLE_TYPE_PENDING | 759 style = REWARD_TYPE_STYLES[self.rewardType] |
718 local style,subStyle = self:GetTypeInfo(self.rewardType) | 760 else |
719 if (self.filtered or (not self.dataLoaded)) and (self.questID ~= GetSuperTrackedQuestID()) then | 761 style = MINIMIZED_STYLE |
720 subStyle = style.minimized | 762 end |
721 end | 763 |
722 self.style = style | 764 local currentWidth = style.iconWidth or DEFAULT_STYLE.iconWidth |
723 self.subStyle = subStyle | 765 |
724 --print(style, subStyle) | 766 |
725 self.currentWidth = subStyle.iconWidth | 767 |
726 self.borderWidth = subStyle.borderWidth | 768 local borderWidth = style.borderWidth or DEFAULT_STYLE.borderWidth |
727 self.highlightWidth = subStyle.highlightWidth | 769 local highlightWidth = style.highlightWidth or DEFAULT_STYLE.highlightWidth |
728 self.tagSize = subStyle.TagSize | 770 local tagSize = style.TagSize or DEFAULT_STYLE.TagSize |
729 self.maxAlertLevel = subStyle.maxAlertLevel | 771 local hideIcon = style.hideIcon or DEFAULT_STYLE.hideIcon |
730 self.NoIcon = subStyle.NoIcon | 772 local borderColor = style.border or DEFAULT_STYLE.border |
731 | |
732 local questID = self.questID | 773 local questID = self.questID |
733 local iconBorder = self.RewardBorder | 774 local iconBorder = self.RewardBorder |
734 local trackingBorder = self.HighlightBorder | 775 local trackingBorder = self.HighlightBorder |
735 local icon = self.icon | 776 local icon = self.icon |
736 local count = self.count | 777 local count = self.count |
778 local hideNumbers = style.hideNumber or DEFAULT_STYLE.hideNumber | |
779 | |
780 local tagIcon = self.tagIcon | |
781 self.maxAlertLevel = style.maxAlertLevel or DEFAULT_STYLE.maxAlertLevel | |
782 | |
783 | |
737 self.isBounty = WorldMapFrame.UIElementsFrame.BountyBoard:IsWorldQuestCriteriaForSelectedBounty(self.questID) | 784 self.isBounty = WorldMapFrame.UIElementsFrame.BountyBoard:IsWorldQuestCriteriaForSelectedBounty(self.questID) |
738 | 785 |
739 if self.itemName then | 786 if self.itemName then |
740 | 787 |
741 if self.itemNumber then | 788 if self.itemNumber and (self.itemNumber > 1) and (not hideNumbers) then |
742 local numberString = self.itemNumber | 789 local numberString = self.itemNumber |
743 if self.itemNumber >= 1000000 then | 790 if self.itemNumber >= 1000000 then |
744 numberString = (floor(self.itemNumber/100000)/10) .. 'M' | 791 numberString = (floor(self.itemNumber/100000)/10) .. 'M' |
745 elseif self.itemNumber >= 10000 then | 792 elseif self.itemNumber >= 10000 then |
746 numberString = floor(self.itemNumber/1000) .. 'k' | 793 numberString = floor(self.itemNumber/1000) .. 'k' |
752 numberString = numberString .. '.' .. tostring(floor(decimal/100)) | 799 numberString = numberString .. '.' .. tostring(floor(decimal/100)) |
753 end | 800 end |
754 numberString = numberString .. 'k' | 801 numberString = numberString .. 'k' |
755 end | 802 end |
756 self.count:SetText(numberString) | 803 self.count:SetText(numberString) |
804 self.count:Show() | |
757 else | 805 else |
758 self.count:SetText(nil) | 806 self.count:SetText(nil) |
759 end | 807 self.count:Hide() |
808 end | |
809 else | |
810 self.count:Hide() | |
760 end | 811 end |
761 | 812 |
762 if db.Config.ShowVerboseInfo then | 813 if db.Config.ShowVerboseInfo then |
763 self.Description:SetText(self.title .. "\n" .. floor(self.x*100+.5) .. "," .. floor(self.y*100+.5)) | 814 self.Description:SetText(self.title .. "\n" .. floor(self.x*100+.5) .. "," .. floor(self.y*100+.5)) |
764 end | 815 end |
765 | 816 |
766 | 817 |
767 icon:SetMask("Interface\\Minimap\\UI-Minimap-Background") | 818 icon:SetSize(currentWidth, currentWidth) |
819 icon:SetMask(style.iconMask or DEFAULT_STYLE.iconMask) | |
768 if self.itemTexture then | 820 if self.itemTexture then |
769 --iconBorder:SetTexture(WORLD_QUEST_BORDER) | 821 --iconBorder:SetTexture(WORLD_QUEST_BORDER) |
770 | 822 |
771 if self.NoIcon then | 823 if hideIcon then |
772 icon:SetTexture(PENDING_ICON) | 824 icon:SetTexture(PENDING_ICON) |
773 icon:SetDesaturated(true) | 825 icon:SetDesaturated(true) |
774 icon:SetVertexColor(style.r, style.g, style.b) | 826 icon:SetVertexColor(unpack(borderColor)) |
775 else | 827 else |
776 | |
777 icon:SetTexture(self.itemTexture) | 828 icon:SetTexture(self.itemTexture) |
778 icon:SetDesaturated(false) | 829 icon:SetDesaturated(false) |
779 icon:SetVertexColor(1, 1, 1) | 830 icon:SetVertexColor(1, 1, 1) |
780 end | 831 end |
781 else | 832 else |
782 -- | 833 -- |
783 icon:SetTexture(PENDING_ICON) | 834 icon:SetTexture(PENDING_ICON) |
784 icon:SetDesaturated(true) | 835 icon:SetDesaturated(true) |
785 icon:SetVertexColor(style.r, style.g, style.b) | 836 icon:SetVertexColor(unpack(borderColor)) |
786 end | 837 end |
787 | 838 local borderMask = style.borderMask or DEFAULT_STYLE.borderMask |
788 iconBorder:SetMask("Interface\\Minimap\\UI-Minimap-Background") | 839 local borderSize = currentWidth + (borderWidth * 2) |
840 | |
841 | |
842 iconBorder:SetSize(borderSize, borderSize) | |
843 iconBorder:SetMask(borderMask) | |
789 iconBorder:SetTexture(PENDING_BORDER) | 844 iconBorder:SetTexture(PENDING_BORDER) |
790 iconBorder:SetVertexColor(style.r, style.g, style.b, 1) | 845 iconBorder:SetVertexColor(unpack(borderColor)) |
791 | |
792 iconBorder:SetDesaturated(true) | 846 iconBorder:SetDesaturated(true) |
793 iconBorder:SetAlpha(subStyle.alpha or 1) | 847 |
794 | 848 local highlightSize = borderSize + (highlightWidth * 2) |
795 trackingBorder:SetMask("Interface\\Minimap\\UI-Minimap-Background") | 849 trackingBorder:SetSize(highlightSize, highlightSize) |
850 trackingBorder:SetMask(borderMask) | |
796 trackingBorder:SetTexture(PENDING_BORDER) | 851 trackingBorder:SetTexture(PENDING_BORDER) |
852 | |
853 self:SetSize(borderSize, borderSize) | |
854 | |
855 | |
856 | |
857 iconBorder:SetPoint('CENTER', (style.x or 0), (style.y or 0)) | |
858 trackingBorder:SetPoint('CENTER', (style.x or 0), (style.y or 0)) | |
797 | 859 |
798 self.tagIcon:SetShown((not self.filtered) and true or false) | 860 self.tagIcon:SetShown((not self.filtered) and true or false) |
799 self.tagIcon:SetAtlas(self.tagAtlas) | 861 self.tagIcon:SetAtlas(self.tagAtlas) |
800 | |
801 self.EliteBorder:SetShown(self.isElite and not self.filtered) | 862 self.EliteBorder:SetShown(self.isElite and not self.filtered) |
802 | 863 |
803 self:UpdateSize() | 864 self:UpdateSize() |
804 self:UpdateStatus() | 865 self:UpdateStatus() |
805 self.isStale = nil | 866 self.isStale = nil |
860 | 921 |
861 --- Fixes icons upon size update | 922 --- Fixes icons upon size update |
862 function QuestPOI:UpdateSize () | 923 function QuestPOI:UpdateSize () |
863 | 924 |
864 --qprint('|cFF00BB88'..self:GetID()..'|r:UpdateSize()', self.style, self.subStyle) | 925 --qprint('|cFF00BB88'..self:GetID()..'|r:UpdateSize()', self.style, self.subStyle) |
865 | 926 return |
927 --[[ | |
866 local style = self.style | 928 local style = self.style |
867 local subStyle = self.subStyle | 929 local subStyle = self.subStyle |
868 local icon = self.icon | 930 local icon = self.icon |
869 local iconBorder = self.RewardBorder | 931 local iconBorder = self.RewardBorder |
870 local trackingBorder = self.HighlightBorder | 932 local trackingBorder = self.HighlightBorder |
907 self.count:SetFontObject(_G[subStyle.numberFontObject]) | 969 self.count:SetFontObject(_G[subStyle.numberFontObject]) |
908 end | 970 end |
909 else | 971 else |
910 self.count:SetText(nil) | 972 self.count:SetText(nil) |
911 end | 973 end |
912 end | 974 --]] |
975 end |