# HG changeset patch # User Nick@Zahhak # Date 1490261211 14400 # Node ID 876c3f0bfd0e1bc08121e3d728c99d46fe969824 # Parent 8e130c92698fd32229365461faa7b89327954919 - script upvalues cleanup - add quest active status to pin metadata diff -r 8e130c92698f -r 876c3f0bfd0e QuestPOI.lua --- a/QuestPOI.lua Tue Mar 21 16:36:12 2017 -0400 +++ b/QuestPOI.lua Thu Mar 23 05:26:51 2017 -0400 @@ -4,8 +4,7 @@ -- %file-revision% -- local _, db = ... - -local TQ_GetQuestInfoByQuestID = C_TaskQuest.GetQuestInfoByQuestID -- Return the name of a quest with a given ID +local TQ_GetQuestInfoByQuestID = C_TaskQuest.GetQuestInfoByQuestID local TQ_GetQuestLocation = C_TaskQuest.GetQuestLocation local TQ_GetQuestTimeLeftMinutes = C_TaskQuest.GetQuestTimeLeftMinutes local TQ_IsActive = C_TaskQuest.IsActive @@ -14,6 +13,15 @@ local WorldMap_DoesWorldQuestInfoPassFilters = WorldMap_DoesWorldQuestInfoPassFilters local QuestMapFrame_IsQuestWorldQuest = QuestMapFrame_IsQuestWorldQuest local GetAchievementNumCriteria, GetAchievementCriteriaInfo, GetAchievementInfo = GetAchievementNumCriteria, GetAchievementCriteriaInfo, GetAchievementInfo + +local IsQuestFlaggedCompleted = IsQuestFlaggedCompleted +local GetFactionInfoByID, GetQuestObjectiveInfo = GetFactionInfoByID, GetQuestObjectiveInfo +local GetQuestTagInfo, GetProfessionInfo = GetQuestTagInfo, GetProfessionInfo +local GetNumQuestLogRewards, GetNumQuestLogRewardCurrencies, HaveQuestData = GetNumQuestLogRewards, GetNumQuestLogRewardCurrencies, HaveQuestData +local GetQuestLogRewardMoney, GetQuestLogRewardCurrencyInfo, GetMoneyString = GetQuestLogRewardMoney, GetQuestLogRewardCurrencyInfo, GetMoneyString +local SpellCanTargetQuest, GetCVarBool = SpellCanTargetQuest, GetCVarBool +local SetSuperTrackedQuestID = SetSuperTrackedQuestID + local pairs, ipairs, tinsert, unpack, select = pairs, ipairs, tinsert, unpack, select local floor, mod, tostring, tonumber, GetSuperTrackedQuestID = floor, mod, tostring, tonumber, GetSuperTrackedQuestID local GameTooltip = GameTooltip @@ -188,7 +196,6 @@ end -local GetFactionInfoByID, GetQuestObjectiveInfo = GetFactionInfoByID, GetQuestObjectiveInfo function QuestPOI:OnEnter() if self.filtered and (self.questID ~= GetSuperTrackedQuestID()) then @@ -274,7 +281,6 @@ end -- attempt to pull pin data -local GetQuestTagInfo, GetProfessionInfo = GetQuestTagInfo, GetProfessionInfo function QuestPOI:GetData () dprint('|cFF00FF88'..self:GetID()..':GetData()|r') local questID = self.questID @@ -341,8 +347,6 @@ return self.isStale, self.isPending end -local GetNumQuestLogRewards, GetNumQuestLogRewardCurrencies, HaveQuestData = GetNumQuestLogRewards, GetNumQuestLogRewardCurrencies, HaveQuestData -local GetQuestLogRewardMoney, GetQuestLogRewardCurrencyInfo, GetMoneyString = GetQuestLogRewardMoney, GetQuestLogRewardCurrencyInfo, GetMoneyString function QuestPOI:SetRewardInfo() local questID = self.questID if not HaveQuestData(questID) then @@ -468,16 +472,13 @@ self:ShowFrames() end - +-- Show/Hide the text overlays associated with the quest pin; they aren't hierarchically linked function QuestPOI:ShowFrames() if not self:IsShown() then - --self:SetShown(true) print('|cFFFFFF00' ..self:GetName()..':ShowFrames()') - qprint('|cFFFFFF00'..tostring(self:GetName())..':OnShow()|r update:', self.isStale, 'new:', self.isNew, 'animation:', self.isAnimating) - else + -- do not SetShown() here + end - --print(self:GetName()..':ShowFrames()') - end self.count:SetShown(true) self.Overlay:SetShown(true) self.count:SetShown(true) @@ -511,6 +512,7 @@ self.Overlay:SetPoint('TOPLEFT', self, 'TOPLEFT', 0, 4) self.Overlay:SetPoint('BOTTOMRIGHT', self, 'BOTTOMRIGHT', 0, -4) end + function QuestPOI:OnMouseDown(button) if button == 'RightButton' then SetSuperTrackedQuestID(nil) @@ -565,7 +567,9 @@ -- Called at static intervals and with Refresh function QuestPOI:UpdateStatus() -- update time elements - if TQ_IsActive(self.questID) then + self.isActive = TQ_IsActive(self.questID) + + if self.isActive then local tl = self.alertLevel local timeLeft = TQ_GetQuestTimeLeftMinutes(self.questID) if timeLeft > 0 then @@ -593,7 +597,6 @@ else if not self.completed then self.completed = true - WorldPlan:print('|cFFFFFF00'..tostring(self.title).. '|r is no longer active.') self:HideFrames() end end @@ -703,6 +706,8 @@ [REWARD_GEAR] = 'worldQuestFilterEquipment', } + + function QuestPOI:CheckFilterRules () local print = qprint local qType = self.worldQuestType diff -r 8e130c92698f -r 876c3f0bfd0e WorldPlan.lua --- a/WorldPlan.lua Tue Mar 21 16:36:12 2017 -0400 +++ b/WorldPlan.lua Thu Mar 23 05:26:51 2017 -0400 @@ -3,7 +3,7 @@ -- %file-revision% local addonFileName, db = ... local print = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end -local WP_VERSION = "1.0" +local WP_VERSION = "1.2" local tinsert, pairs, floor = tinsert, pairs, floor local tremove, ipairs, wipe, unpack = tremove, ipairs, wipe, unpack local select, type, tostring, tonumber = select, type, tostring, tonumber @@ -568,6 +568,7 @@ self.callbacks[func] = func end function WorldPlanCore:FireCallbacks() + self.callbacks = self.callbacks or {} for func in pairs(self.callbacks) do func() end diff -r 8e130c92698f -r 876c3f0bfd0e WorldQuests.lua --- a/WorldQuests.lua Tue Mar 21 16:36:12 2017 -0400 +++ b/WorldQuests.lua Thu Mar 23 05:26:51 2017 -0400 @@ -5,16 +5,24 @@ local _, db = ... local Module = WorldPlanQuestsMixin +local _G = _G local MC_GetNumZones, MC_GetZoneInfo = C_MapCanvas.GetNumZones, C_MapCanvas.GetZoneInfo local TQ_GetQuestsForPlayerByMapID = C_TaskQuest.GetQuestsForPlayerByMapID -- This function is not yet documented local TQ_GetQuestZoneID = C_TaskQuest.GetQuestZoneID -local GetMapInfo = GetMapInfo +local TQ_IsActive = C_TaskQuest.IsActive +local pairs, ipairs, tinsert, tremove, wipe = pairs, ipairs, tinsert, tremove, table.wipe +local GetTaskInfo, GetTasksTable, HaveQuestData = GetTaskInfo, GetTasksTable, HaveQuestData +local GetTime = GetTime +local SpellCanTargetQuest = SpellCanTargetQuest +local tonumber, abs = tonumber, math.abs +local GetQuestLogRewardInfo = GetQuestLogRewardInfo +local GetCurrentMapAreaID, GetMapInfo, GetMapNameByID = GetCurrentMapAreaID, GetMapInfo, GetMapNameByID + local print = DEVIAN_WORKSPACE and function(...) _G.print('WorldQuests', ...) end or function() end local rprint = DEVIAN_WORKSPACE and function(...) _G.print('WQRefresh', ...) end or function() end local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end local wprint = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end local mprint = DEVIAN_WORKSPACE and function(...) _G.print('Canvas', ...) end or function() end -local pairs = pairs local PinBaseIndex = 1200 local BROKEN_ISLES_ID, DALARAN_ID, AZSUNA_ID, VALSHARAH_ID, HIGHMOUNTAIN_ID, STORMHEIM_ID, SURAMAR_ID, EOA_ID = 1007, 1014, 1015,1018, 1024, 1017, 1033, 1096 @@ -89,7 +97,6 @@ end end -local SpellCanTargetQuest = SpellCanTargetQuest function Module:UpdateBlizzButtons() local func = SpellCanTargetQuest() and InternalShowButton or InternalHideButton @@ -250,6 +257,8 @@ WorldPlan.dataFlush = true end + pin.isActive = TQ_IsActive(questID) + pin:CheckFilterRules() pin.isStale = true rprint(pin:GetID(), pin.filtered, pin.used) @@ -270,6 +279,8 @@ end db.TasksByID[id] = nil end + pin.isActive = nil + pin.dataLoaded = nil pin:HideFrames() tinsert(db.FreePins, pin) @@ -277,6 +288,7 @@ print('|cFF00FF00-'.. (pin.mapID and GetMapNameByID(pin.mapID) or '???') ..'|r', id, pin.title) end + function Module:GetBonusObjectives() @@ -321,8 +333,6 @@ end - - -- use tooltip object to extract item details function Module:GetRewardHeader(questID) local name, icon, quantity, quality, _, itemID = GetQuestLogRewardInfo(1, questID) @@ -379,9 +389,6 @@ end return 128, icon, quantity, name, itemID, quality end - -local GetCurrentMapAreaID, GetMapNameByID= GetCurrentMapAreaID, GetMapNameByID -local wipe, pairs = wipe, pairs -- create of update quest pins for a map and its underlying zones function Module:UpdateWorldQuests (mapID) @@ -498,7 +505,6 @@ end end -local abs = math.abs function Module:UpdateQuestButton(info, mapID) local questID, x, y = info.questId, info.x, info.y local pin = self:AcquirePin(info)