Mercurial > wow > worldplan
comparison QuestPOI.lua @ 57:54aa7f8ebca8 v1.0-release
- fix profession quests showing when not enabled
- fix profession quest time borders always coloring as urgent
author | Nenue |
---|---|
date | Fri, 20 Jan 2017 19:57:13 -0500 |
parents | 0749e38081e7 |
children | bc09961d5a98 |
comparison
equal
deleted
inserted
replaced
56:0749e38081e7 | 57:54aa7f8ebca8 |
---|---|
189 end | 189 end |
190 | 190 |
191 local GetFactionInfoByID, GetQuestObjectiveInfo = GetFactionInfoByID, GetQuestObjectiveInfo | 191 local GetFactionInfoByID, GetQuestObjectiveInfo = GetFactionInfoByID, GetQuestObjectiveInfo |
192 | 192 |
193 function QuestPOI:OnEnter() | 193 function QuestPOI:OnEnter() |
194 if self.filtered and (self.questID ~= GetSuperTrackedQuestID()) then | |
195 return | |
196 end | |
194 WorldMap_HijackTooltip(self.owningFrame); | 197 WorldMap_HijackTooltip(self.owningFrame); |
195 if self.filtered then | |
196 return | |
197 end | |
198 self:SetFrameLevel(pinBaseIndex+100) | 198 self:SetFrameLevel(pinBaseIndex+100) |
199 self.Overlay:SetFrameLevel(pinBaseIndex+101) | 199 self.Overlay:SetFrameLevel(pinBaseIndex+101) |
200 | 200 |
201 if previousHighlight then | 201 if previousHighlight then |
202 previousHighlight:SetFrameLevel(pinBaseIndex+previousHighlight:GetID()) | 202 previousHighlight:SetFrameLevel(pinBaseIndex+previousHighlight:GetID()) |
265 --WorldMapTooltip.recalculatePadding = true; | 265 --WorldMapTooltip.recalculatePadding = true; |
266 --print(WorldMapTooltip:GetParent()) | 266 --print(WorldMapTooltip:GetParent()) |
267 --print(WorldMapTooltip:IsVisible()) | 267 --print(WorldMapTooltip:IsVisible()) |
268 end | 268 end |
269 function QuestPOI:OnLeave() | 269 function QuestPOI:OnLeave() |
270 if self.filtered and (self.questID ~= GetSuperTrackedQuestID()) then | |
271 return | |
272 end | |
270 WorldMap_RestoreTooltip() | 273 WorldMap_RestoreTooltip() |
271 self.MouseGlow:Hide() | 274 self.MouseGlow:Hide() |
272 WorldMapTooltip:Hide(); | 275 WorldMapTooltip:Hide(); |
273 end | 276 end |
274 | 277 |
422 --qprint('|cFFFFFF00popping new pin handler') | 425 --qprint('|cFFFFFF00popping new pin handler') |
423 self:StartFade() | 426 self:StartFade() |
424 end | 427 end |
425 | 428 |
426 if not self.isAnimating then | 429 if not self.isAnimating then |
427 self:SetAlpha(1) -- fix stuck alpha | 430 self:SetAlpha(db.PinAlpha) -- fix stuck alpha |
428 end | 431 end |
429 self.Overlay:SetShown(true) | 432 self.Overlay:SetShown(true) |
430 end | 433 end |
431 function QuestPOI:OnHide() | 434 function QuestPOI:OnHide() |
432 qprint('|cFFFFFF00'..self:GetID()..'r:OnHide()') | 435 qprint('|cFFFFFF00'..self:GetID()..'r:OnHide()') |
433 self.isAnimating = nil | 436 self.isAnimating = nil |
434 self:SetAlpha(db.PinAlpha) | 437 self:SetAlpha(db.PinAlpha) |
435 self.Overlay:SetShown(false) | 438 self.Overlay:SetShown(false) |
436 end | 439 end |
437 | 440 |
441 -- different from owningFrame | |
438 function QuestPOI:SetAnchor(owner, dX, dY, mapWidth, mapHeight) | 442 function QuestPOI:SetAnchor(owner, dX, dY, mapWidth, mapHeight) |
439 wqprint(self:GetName()..':SetAnchor', self.filtered, self.used) | 443 wqprint(self:GetName()..':SetAnchor', self.filtered, self.used) |
440 self:SetParent(owner) | 444 self:SetParent(owner) |
441 self:ClearAllPoints() | 445 self:ClearAllPoints() |
442 self:SetFrameLevel(pinBaseIndex + self:GetID()) | 446 self:SetFrameLevel(pinBaseIndex + self:GetID()) |
467 self.Description = self.Overlay.Description | 471 self.Description = self.Overlay.Description |
468 self.timeLabel = self.Overlay.timeLabel | 472 self.timeLabel = self.Overlay.timeLabel |
469 self.updateRate = PIN_REQUEST_DELAY | 473 self.updateRate = PIN_REQUEST_DELAY |
470 self.itemName = '|cFF0088FF' .. RETRIEVING_DATA..'|r' | 474 self.itemName = '|cFF0088FF' .. RETRIEVING_DATA..'|r' |
471 | 475 |
472 self:SetScript('OnMouseDown', TaskPOI_OnClick) | |
473 | |
474 self.Overlay:SetPoint('TOPLEFT', self, 'TOPLEFT', 0, 4) | 476 self.Overlay:SetPoint('TOPLEFT', self, 'TOPLEFT', 0, 4) |
475 self.Overlay:SetPoint('BOTTOMRIGHT', self, 'BOTTOMRIGHT', 0, -4) | 477 self.Overlay:SetPoint('BOTTOMRIGHT', self, 'BOTTOMRIGHT', 0, -4) |
476 end | 478 end |
479 function QuestPOI:OnMouseDown(button) | |
480 if button == 'RightButton' then | |
481 SetSuperTrackedQuestID(nil) | |
482 else | |
483 TaskPOI_OnClick(self, button) | |
484 end | |
485 end | |
486 | |
477 | 487 |
478 function QuestPOI:OnEvent(event, ...) | 488 function QuestPOI:OnEvent(event, ...) |
479 if event == 'SUPER_TRACKED_QUEST_CHANGED' then | 489 if event == 'SUPER_TRACKED_QUEST_CHANGED' then |
480 self.isStale = true | 490 self.isStale = true |
481 end | 491 end |
534 if self.worldQuestType ~= LE_QUEST_TAG_TYPE_PROFESSION then | 544 if self.worldQuestType ~= LE_QUEST_TAG_TYPE_PROFESSION then |
535 self:SetShown(false) | 545 self:SetShown(false) |
536 end | 546 end |
537 end | 547 end |
538 | 548 |
539 if timeLeft and (timeLeft < 120) then | 549 if tl and (timeLeft < 120) then |
540 self.HighlightBorder:SetVertexColor(1,0,0,0.7) | 550 self.HighlightBorder:SetVertexColor(1,0,0,0.7) |
541 elseif self.isBounty then | 551 elseif self.isBounty then |
542 self.HighlightBorder:SetVertexColor(.25,.5,1,1) | 552 self.HighlightBorder:SetVertexColor(.25,.5,1,1) |
543 else | 553 else |
544 self.HighlightBorder:SetVertexColor(0,0,0,0.7) | 554 self.HighlightBorder:SetVertexColor(0,0,0,0.7) |
548 self.timeLabel:SetShown(self.worldQuest and (self.maxAlertLevel >= 1)) | 558 self.timeLabel:SetShown(self.worldQuest and (self.maxAlertLevel >= 1)) |
549 end | 559 end |
550 | 560 |
551 function QuestPOI:Refresh (fromUser) | 561 function QuestPOI:Refresh (fromUser) |
552 | 562 |
553 --rprint('|c'..(fromUser and 'FF0088FF' or 'FF00FF88' )..self:GetID()..'|r:Refresh() type =', self.rewardType, 'title =', self.title) | 563 rprint('|c'..(fromUser and 'FF0088FF' or 'FF00FF88' )..self:GetID()..'|r:Refresh() type =', self.rewardType, 'title =', self.title) |
554 | 564 |
555 | 565 |
556 | 566 |
557 local styleType = (self.isPending and STYLE_TYPE_PENDING) or self.rewardType | 567 local styleType = (self.isPending and STYLE_TYPE_PENDING) or self.rewardType |
558 local style,subStyle = self:GetTypeInfo(self.rewardType) | 568 local style,subStyle = self:GetTypeInfo(self.rewardType) |
567 self.highlightWidth = subStyle.highlightWidth | 577 self.highlightWidth = subStyle.highlightWidth |
568 self.tagSize = subStyle.TagSize | 578 self.tagSize = subStyle.TagSize |
569 self.maxAlertLevel = subStyle.maxAlertLevel | 579 self.maxAlertLevel = subStyle.maxAlertLevel |
570 self.NoIcon = subStyle.NoIcon | 580 self.NoIcon = subStyle.NoIcon |
571 | 581 |
572 local questID = self:GetID() | 582 local questID = self.questID |
573 local iconBorder = self.RewardBorder | 583 local iconBorder = self.RewardBorder |
574 local trackingBorder = self.HighlightBorder | 584 local trackingBorder = self.HighlightBorder |
575 local icon = self.icon | 585 local icon = self.icon |
576 local count = self.count | 586 local count = self.count |
577 self.isBounty = WorldMapFrame.UIElementsFrame.BountyBoard:IsWorldQuestCriteriaForSelectedBounty(self.questID) | 587 self.isBounty = WorldMapFrame.UIElementsFrame.BountyBoard:IsWorldQuestCriteriaForSelectedBounty(self.questID) |
637 self.EliteBorder:SetShown(self.isElite and not self.filtered) | 647 self.EliteBorder:SetShown(self.isElite and not self.filtered) |
638 | 648 |
639 self:UpdateSize() | 649 self:UpdateSize() |
640 self:UpdateStatus() | 650 self:UpdateStatus() |
641 self.isStale = nil | 651 self.isStale = nil |
652 | |
653 -- signal filter info update | |
654 WorldPlanSummary.isStale = true | |
642 end | 655 end |
643 | 656 |
644 local cvar_check = { | 657 local cvar_check = { |
645 [REWARD_CASH] = 'worldQuestFilterGold', | 658 [REWARD_CASH] = 'worldQuestFilterGold', |
646 [REWARD_ARTIFACT_POWER] = 'worldQuestFilterArtifactPower', | 659 [REWARD_ARTIFACT_POWER] = 'worldQuestFilterArtifactPower', |
647 [REWARD_CURRENCY] = 'worldQuestFilterOrderResources', | 660 [REWARD_CURRENCY] = 'worldQuestFilterOrderResources', |
648 [REWARD_REAGENT]= 'worldQuestFilterProfessionMaterials', | 661 [REWARD_REAGENT]= 'worldQuestFilterProfessionMaterials', |
649 [REWARD_GEAR] = 'worldQuestFilterEquipment', | 662 [REWARD_GEAR] = 'worldQuestFilterEquipment', |
650 } | 663 } |
651 | 664 |
652 | 665 function QuestPOI:CheckFilterRules () |
653 function QuestPOI:IsFiltered () | |
654 local filtered | |
655 local usingFilters | |
656 for filterKey, value in pairs(db.UsedFilters) do | |
657 usingFilters = true | |
658 print('|cFFFF4400', filterKey, self[filterKey]) | |
659 if self[filterKey] ~= value then | |
660 filtered = true | |
661 end | |
662 end | |
663 if self.rewardType and cvar_check[self.rewardType] then | |
664 if not GetCVarBool(cvar_check[self.rewardType]) then | |
665 filtered = true | |
666 end | |
667 end | |
668 self.filtered = filtered | |
669 end | |
670 | |
671 function QuestPOI:IsShowable () | |
672 local print = qprint | 666 local print = qprint |
673 local qType = self.worldQuestType | 667 local qType = self.worldQuestType |
674 | 668 local filtered |
675 if not self.worldQuest then | 669 local canShow = TQ_IsActive(self.questID) |
676 --print('ignoring showable check') | |
677 return self.used, self.filtered | |
678 end | |
679 self.used = TQ_IsActive(self.questID) | |
680 if SpellCanTargetQuest() then | 670 if SpellCanTargetQuest() then |
681 -- hiding so player can click a valid target | 671 -- hiding so player can click a valid target |
682 self.used = nil | 672 self.used = nil |
683 elseif qType == LE_QUEST_TAG_TYPE_PROFESSION then | 673 elseif qType == LE_QUEST_TAG_TYPE_PROFESSION then |
684 if (not self.isKnownProfession) and (db.Config.ShowAllProfessionQuests == false) then | 674 if not(self.isKnownProfession or db.Config.ShowAllProfessionQuests) then |
685 self.used = nil | 675 canShow = nil |
686 end | 676 end |
687 end | 677 end |
688 rprint(' '..self.questID..':|cFFFFFF00IsShowable()|r ', self.used, self.title) | 678 if canShow then |
679 for filterKey, value in pairs(db.UsedFilters) do | |
680 if self[filterKey] ~= value then | |
681 if not self.filtered then | |
682 print('|cFFFF4400filtering', filterKey, value, '~=', self[filterKey], self.title) | |
683 end | |
684 | |
685 filtered = true | |
686 end | |
687 end | |
688 if self.rewardType and cvar_check[self.rewardType] then | |
689 if not GetCVarBool(cvar_check[self.rewardType]) then | |
690 filtered = true | |
691 end | |
692 end | |
693 if canShow and self.filtered ~= filtered then | |
694 self.isStale = true | |
695 print(' '..self.questID..':|cFFFFFF00CheckFilterRules()|r ', canShow, filtered, self.title) | |
696 end | |
697 | |
698 self.filtered = filtered | |
699 end | |
700 | |
701 self.used = canShow | |
702 | |
703 | |
689 end | 704 end |
690 | 705 |
691 --- Fixes icons upon size update | 706 --- Fixes icons upon size update |
692 function QuestPOI:UpdateSize () | 707 function QuestPOI:UpdateSize () |
693 | 708 |
707 | 722 |
708 | 723 |
709 self:SetSize(highlightWidth, highlightWidth) | 724 self:SetSize(highlightWidth, highlightWidth) |
710 if self.questID == GetSuperTrackedQuestID() then | 725 if self.questID == GetSuperTrackedQuestID() then |
711 highlightWidth = highlightWidth + 2 | 726 highlightWidth = highlightWidth + 2 |
727 if self.filtered then | |
728 self:SetAlpha(db.PinAlpha * 0.5) | |
729 else | |
730 self:SetAlpha(db.PinAlpha) | |
731 end | |
732 | |
712 end | 733 end |
713 | 734 |
714 if self.rarity and WORLD_QUEST_QUALITY_COLORS[self.rarity] then | 735 if self.rarity and WORLD_QUEST_QUALITY_COLORS[self.rarity] then |
715 highlightWidth = highlightWidth + self.rarity | 736 highlightWidth = highlightWidth + self.rarity |
716 end | 737 end |