comparison QuestPOI.lua @ 116:bf4a36378bb9

- Fixed flight map pins jumping about
author Nenue
date Fri, 24 Nov 2017 23:51:44 -0500
parents e8b6c5433128
children 1fcc4fe645dc
comparison
equal deleted inserted replaced
115:f4dedbad7a11 116:bf4a36378bb9
614 [1506] = true, -- argus waystone 614 [1506] = true, -- argus waystone
615 } 615 }
616 616
617 --- Returns true if data has changed (either from loading in or qualifications changed) 617 --- Returns true if data has changed (either from loading in or qualifications changed)
618 function QuestPOI:UpdateRewards() 618 function QuestPOI:UpdateRewards()
619 dprint('UpdateRewards()', self.questTitle)
619 local questID = self.questID 620 local questID = self.questID
620 if not HaveQuestRewardData(questID) then 621 if not HaveQuestRewardData(questID) then
621 C_TaskQuest.RequestPreloadRewardData(questID); 622 C_TaskQuest.RequestPreloadRewardData(questID);
622 return false; 623 return false;
623 else 624 else
641 if artifactXP > 0 then 642 if artifactXP > 0 then
642 rewardAP = artifactXP 643 rewardAP = artifactXP
643 rewardIcon = "Interface\\ICONS\\inv_7xp_inscription_talenttome01" 644 rewardIcon = "Interface\\ICONS\\inv_7xp_inscription_talenttome01"
644 rewardCount = artifactXP 645 rewardCount = artifactXP
645 rewardType = REWARD_ARTIFACT_POWER 646 rewardType = REWARD_ARTIFACT_POWER
646 --dprint(' artifactXP', artifactXP) 647 dprint(' artifactXP', artifactXP)
647 foundPrimary = true 648 foundPrimary = true
648 end 649 end
649 650
650 local numQuestCurrencies = GetNumQuestLogRewardCurrencies(questID); 651 local numQuestCurrencies = GetNumQuestLogRewardCurrencies(questID);
651 for i = 1, numQuestCurrencies do 652 for i = 1, numQuestCurrencies do
682 for i = 1, numQuestRewards do 683 for i = 1, numQuestRewards do
683 local name, texture, numItems, quality, isUsable, itemID = GetQuestLogRewardInfo(i, questID) 684 local name, texture, numItems, quality, isUsable, itemID = GetQuestLogRewardInfo(i, questID)
684 685
685 if itemID then 686 if itemID then
686 local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture, sellPrice, classID, subclassID = GetItemInfo(itemID); 687 local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture, sellPrice, classID, subclassID = GetItemInfo(itemID);
687 if ( classID == LE_ITEM_CLASS_WEAPON or classID == LE_ITEM_CLASS_ARMOR or (classID == LE_ITEM_CLASS_GEM and subclassID == LE_ITEM_GEM_ARTIFACTRELIC) ) then 688 if IsArtifactPowerItem(itemID) then
688 rewardType = REWARD_GEAR
689 rewardIcon = texture
690 rewardName = name
691 rewardCount = numItems
692 foundPrimary = true
693 elseif IsArtifactPowerItem(itemID) then
694 rewardType = REWARD_ARTIFACT_POWER 689 rewardType = REWARD_ARTIFACT_POWER
695 rewardIcon = texture 690 rewardIcon = texture
696 rewardName = name 691 rewardName = name
697 rewardCount = self:UpdateArtifactPower(itemLink) 692 rewardCount = self:UpdateArtifactPower(itemLink)
698 foundPrimary = true 693 foundPrimary = true
699 --dprint('is an AP token') 694 --dprint('is an AP token')
695
696
697 elseif ( classID == LE_ITEM_CLASS_WEAPON or classID == LE_ITEM_CLASS_ARMOR or (classID == LE_ITEM_CLASS_GEM and subclassID == LE_ITEM_GEM_ARTIFACTRELIC) ) then
698 rewardType = REWARD_GEAR
699 rewardIcon = texture
700 rewardName = name
701 rewardCount = numItems
702 foundPrimary = true
700 elseif classID == LE_ITEM_CLASS_TRADEGOODS then 703 elseif classID == LE_ITEM_CLASS_TRADEGOODS then
701 rewardType = REWARD_REAGENT 704 rewardType = REWARD_REAGENT
702 rewardIcon = texture 705 rewardIcon = texture
703 rewardName = name 706 rewardName = name
704 rewardCount = numItems 707 rewardCount = numItems
705 foundPrimary = true 708 foundPrimary = true
706 end 709 end
707 --dprint(' reward', i, name, " |T"..tostring(texture)..":12:12|t", quality, isUsable, itemID) 710 dprint(' reward', i, name, " |T"..tostring(texture)..":12:12|t", rewardCount, rewardType, isUsable, itemID)
708 tinsert(rewardItems, { 711 tinsert(rewardItems, {
709 name = name, 712 name = name,
710 texture = texture, 713 texture = texture,
711 numItems = numItems, 714 numItems = numItems,
712 quality = quality, 715 quality = quality,
742 end 745 end
743 end 746 end
744 end 747 end
745 748
746 749
750 local ap_strings = {
751 '([%d%.]+) billion ' .. ARTIFACT_POWER,
752 '([%d%.]+) million ' .. ARTIFACT_POWER,
753 '([%d]+) ' .. ARTIFACT_POWER,
754 }
755 local ap_factors = {1000000000, 1000000, 1}
756
747 function QuestPOI:UpdateArtifactPower(rewardLink) 757 function QuestPOI:UpdateArtifactPower(rewardLink)
758 dprint('UpdateArtifactPower')
748 if not (rewardLink or self.rewardLink) then 759 if not (rewardLink or self.rewardLink) then
749 return 760 return
750 end 761 end
751 762
752 self.rewardLink = rewardLink or self.rewardLink 763 self.rewardLink = rewardLink or self.rewardLink
755 WorldPlanTooltip:SetOwner(self, 'ANCHOR_NONE') 766 WorldPlanTooltip:SetOwner(self, 'ANCHOR_NONE')
756 WorldPlanTooltip:SetHyperlink(rewardLink or self.rewardLink) 767 WorldPlanTooltip:SetHyperlink(rewardLink or self.rewardLink)
757 for i = 1, WorldPlanTooltip:NumLines() do 768 for i = 1, WorldPlanTooltip:NumLines() do
758 local line = _G['WorldPlanTooltipTextLeft' .. i] 769 local line = _G['WorldPlanTooltipTextLeft' .. i]
759 local text = line and line:GetText() 770 local text = line and line:GetText()
760 local multiplier = (text:match('million') and 1000000) or 1 771
761 if text then 772 if text then
773
762 text = text:gsub(',', '') 774 text = text:gsub(',', '')
763 local ap = text:match('([%d]+) '..ARTIFACT_POWER) 775 for j, format in ipairs(ap_strings) do
764 if not ap then 776
765 ap = text:match('([%d%.]+) million '..ARTIFACT_POWER) 777 local ap = text:match(format)
766 if ap then 778 if ap then
767 ap = tonumber(ap) * 1000000 779
780 rewardCount = tonumber(ap) * ap_factors[j]
781 dprint(' ap text', format, tonumber(ap), ap_factors[j], rewardCount)
782 break
768 end 783 end
769 end 784
770 if ap then
771 rewardCount = tonumber(ap)
772 end 785 end
773 end 786 end
774 end 787 end
775 return rewardCount 788 return rewardCount
776 end 789 end
777 790
778 -- Applies position and sizing parameters to the pin data 791 -- Applies position and sizing parameters to the pin data
779 function QuestPOI:SetAnchor(owner, dX, dY, mapWidth, mapHeight, scaleFactor) 792 function QuestPOI:SetAnchor(owner, dX, dY, mapWidth, mapHeight, scaleFactor)
780 --dprint(self:GetName()..':SetAnchor()', owner, dX, dY, scaleFactor, self.filtered, self.used) 793 --dprint(self:GetName()..':SetAnchor()', owner, dX, dY, scaleFactor, self.filtered, self.used)
794 --dprint(debugstack(1,1))
795 --dprint(self:GetPoint(1))
781 if not self.used then 796 if not self.used then
782 self.hideReason = 'SetAnchor() on an unused frame.' 797 self.hideReason = 'SetAnchor() on an unused frame.'
783 self:HideOrShowFrames(false) 798 self:HideOrShowFrames(false)
784 return 799 return
785 end 800 end
932 self:OnCursor() 947 self:OnCursor()
933 end 948 end
934 949
935 local style = DEFAULT_STYLE 950 local style = DEFAULT_STYLE
936 if self.filtered or db.IgnoreTimers[self.questID] then 951 if self.filtered or db.IgnoreTimers[self.questID] then
937 print('choose minimized') 952 print('minimized type')
938 style = MINIMIZED_STYLE 953 style = MINIMIZED_STYLE
939 elseif self.dataLoaded then 954 elseif self.dataLoaded then
940 print('choose reward type') 955 print('reward type', self.rewardType)
941 style = REWARD_TYPE_STYLES[self.rewardType] 956 style = REWARD_TYPE_STYLES[self.rewardType]
942 else 957 else
943 print('choose default') 958 print('default type')
944 end 959 end
945 960
946 local currentWidth = style.iconWidth or DEFAULT_STYLE.iconWidth 961 local currentWidth = style.iconWidth or DEFAULT_STYLE.iconWidth
947 local borderWidth = style.borderWidth or DEFAULT_STYLE.borderWidth 962 local borderWidth = style.borderWidth or DEFAULT_STYLE.borderWidth
948 local highlightWidth = style.highlightWidth or DEFAULT_STYLE.highlightWidth 963 local highlightWidth = style.highlightWidth or DEFAULT_STYLE.highlightWidth
975 end 990 end
976 991
977 if self.itemName then 992 if self.itemName then
978 if self.itemNumber and (self.itemNumber > 1) and (not hideNumbers) then 993 if self.itemNumber and (self.itemNumber > 1) and (not hideNumbers) then
979 local numberString = self.itemNumber 994 local numberString = self.itemNumber
980 if self.itemNumber >= 1000000 then 995 if self.itemNumber >= 1000000000 then
981 numberString = (floor(self.itemNumber/100000)/10) .. 'M' 996 numberString = (floor(self.itemNumber/100000000)/10) .. '|cFFFF8800B|r'
997 elseif self.itemNumber >= 1000000 then
998 numberString = (floor(self.itemNumber/100000)/10) .. '|cFFFFFF00M|r'
982 elseif self.itemNumber >= 10000 then 999 elseif self.itemNumber >= 10000 then
983 numberString = floor(self.itemNumber/1000) .. 'k' 1000 numberString = floor(self.itemNumber/1000) .. 'k'
984 elseif self.itemNumber >= 1000 then 1001 elseif self.itemNumber >= 1000 then
985 local numeral = floor(self.itemNumber/1000) 1002 local numeral = floor(self.itemNumber/1000)
986 local decimal = mod(self.itemNumber, 1000) 1003 local decimal = mod(self.itemNumber, 1000)