Mercurial > wow > worldplan
diff QuestPOI.lua @ 78:fadf00b437fb v1.4.1
- Fixed pins not being removed upon completion
- Fixed animation stuttering
author | Nenue |
---|---|
date | Mon, 10 Apr 2017 13:14:05 -0400 |
parents | 78d78dc77822 |
children | 26d736fbfe67 |
line wrap: on
line diff
--- a/QuestPOI.lua Mon Apr 10 07:34:29 2017 -0400 +++ b/QuestPOI.lua Mon Apr 10 13:14:05 2017 -0400 @@ -259,7 +259,7 @@ end WorldMap_HijackTooltip(self.owningFrame); self:SetFrameLevel(pinBaseIndex+100) - self.Overlay:SetFrameLevel(pinBaseIndex+101) + self.Overlay:SetFrameLevel(overlayBaseIndex+100) if previousHighlight then previousHighlight:SetFrameLevel(pinBaseIndex+previousHighlight:GetID()) @@ -573,7 +573,7 @@ function QuestPOI:OnAnimStart() --qprint('|cFFFFFF00OnAnimStart(|r'..self:GetID()..'|cFFFFFF00)|r', self.fadeEvent) - self.isAnimating = true + self:Refresh('FADE_IN_START') self.isNew = nil end @@ -587,9 +587,7 @@ if self.dataLoaded then --qprint('|cFFFFFF00TryToFade('..self:GetID()..'|cFFFFFF00)|r', event) self:SetAlpha(0) - self:Refresh(event) self.FadeIn.FadeIn:SetToAlpha(db.PinAlpha) - self.isStale = true self.FadeIn:Play() else @@ -598,7 +596,6 @@ end function QuestPOI:OnAnimStop() - self.isAnimating = nil self:SetAlpha(db.PinAlpha) end @@ -606,19 +603,28 @@ if self.isNew then self:TryToFade('POI_ONSHOW_NEW') - else - if not self.isAnimating then - --print('|cFF00FF00Alpha correction') - self:SetAlpha(db.PinAlpha) -- fix stuck alpha - end + elseif not self.FadeIn:IsPlaying() then + print('|cFF00FF00Alpha correction') + self:SetAlpha(db.PinAlpha) -- fix stuck alpha if self.isStale then --print('|cFF00FF00refresh on show') self:Refresh('POI_ONSHOW_STALE') end end + self:RegisterEvent('QUEST_LOG_UPDATE') self:ShowFrames() end +function QuestPOI:OnEvent(event) + if not TQ_IsActive(self.questID) then + + self:UnregisterEvent('QUEST_LOG_UPDATE') + + self.hideReason = 'Hiding self because quest is inactive.' + self:SetShown(false) + end +end + function QuestPOI:OnHide() --DEFAULT_CHAT_FRAME:AddMessage('|cFFFFFF00'..self:GetName()..'|r:OnHide()') self:HideFrames() @@ -644,6 +650,10 @@ if owner then self:SetParent(owner) self.Overlay:SetParent(owner) + self:SetFrameStrata('HIGH') + self:SetFrameLevel(pinBaseIndex + self:GetID()) + self.Overlay:SetFrameStrata('HIGH') + self.Overlay:SetFrameLevel(overlayBaseIndex + self:GetID()) self.isStale = true else owner = self:GetParent() @@ -766,6 +776,7 @@ end +-- Non-hieriarchical display states, checked separately from used/filtered states function QuestPOI:GetCriteriaState() local isCriteria, isBounty, isSpellTarget if self.factionID then @@ -981,41 +992,44 @@ function QuestPOI:CheckFilterRules () local print = qprint local qType = self.worldQuestType - local filtered - local canShow = TQ_IsActive(self.questID) - + if not TQ_IsActive(self.questID) then + self.hideReason = 'Filter check ended because quest is inactive.' + self.used = nil + self:SetShown(false) + return + end if qType == LE_QUEST_TAG_TYPE_PROFESSION then if not(self.isKnownProfession or db.Config.ShowAllProfessionQuests) then - canShow = nil + self.hideReason = 'Failed profession check.' + self.used = nil + self:SetShown(false) + return end end - if canShow then - for filterKey, value in pairs(db.UsedFilters) do - if self[filterKey] ~= value then - if not self.filtered then - print('|cFFFF4400filtering', filterKey, value, '~=', self[filterKey], self.title) - end - filtered = true + local filtered + for filterKey, value in pairs(db.UsedFilters) do + if self[filterKey] ~= value then + if not self.filtered then + print('|cFFFF4400filtering', filterKey, value, '~=', self[filterKey], self.title) end + filtered = true end - if self.rewardType and cvar_check[self.rewardType] then - if not GetCVarBool(cvar_check[self.rewardType]) then - filtered = true - end + end + if self.rewardType and cvar_check[self.rewardType] then + if not GetCVarBool(cvar_check[self.rewardType]) then + filtered = true end - if canShow and self.filtered ~= filtered then - self.isStale = true - print(' '..self.questID..':|cFFFFFF00CheckFilterRules()|r ', canShow, filtered, self.title) - end - self.filtered = filtered end - self.used = canShow - if not canShow then - self.hideReason = "Failed filter check." + + print(' '..self.questID..':|cFFFFFF00CheckFilterRules()|r', filtered, self.title) + if self.filtered ~= filtered then + self.isStale = true end - self:SetShown(canShow) + + self.used = true + self:SetShown(true) end --- Fixes icons upon size update