# HG changeset patch
# User Nenue
# Date 1477164985 14400
# Node ID 34d9fbf7af201e89529288b7eb9cd3d6ccd190de
# Parent 48001b6a94966db67b1edf9b2e20d23ebff6bcfd
beginning of reflecting code path isolation in file structure
diff -r 48001b6a9496 -r 34d9fbf7af20 QuestPOI.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/QuestPOI.lua Sat Oct 22 15:36:25 2016 -0400
@@ -0,0 +1,212 @@
+-- WorldPlan
+-- QuestPOI.lua
+-- Created: 10/1/2016 7:21 PM
+-- %file-revision%
+--
+local TQ_GetQuestLocation = C_TaskQuest.GetQuestLocation
+local TQ_GetQuestTimeLeftMinutes = C_TaskQuest.GetQuestTimeLeftMinutes
+local QuestPOIGetIconInfo, WorldMapPOIFrame = QuestPOIGetIconInfo, WorldMapPOIFrame
+
+local print = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end
+local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end
+local iprint = DEVIAN_WORKSPACE and function(...) _G.print('ItemScan', ...) end or function() end
+local QuestPOI = WorldPlanPOIMixin
+
+ local familiars = {
+ [42159] = {npc = 106552, name = 'Nightwatcher Merayl'},
+ [40277] = {npc = 97804, name = 'Tiffany Nelson'},
+ [40298] = {npc = 99182, name = 'Sir Galveston'},
+ [40282] = {npc= 99150, name = 'Grixis Tinypop'},
+ [40278] = {npc = 98270, name = 'Robert Craig'},
+ [48195] = {npc = 105250, name = 'Aulier'},
+ [41990] = {npc = 105674, name = 'Varenne'},
+ [41860] = {npc = 104970, name = 'Xorvasc'},
+ [40299] = {npc = 99210, name = 'Bodhi Sunwayver'},
+ [42442] = {npc = 107489, name = 'Amalia'},
+ [40280] = {npc = 99077, name = 'Bredda Tenderhide'},
+ [41687] = {npc = 104553, name = 'Odrogg'},
+ [41944] = {npc = 105455, name = 'Trapper Jarrun'},
+ [40337] = {npc = 97709, name = 'Master Tamer Flummox'},
+ [40279] = {npc = 99035, name = 'Durian Strongfruit'}
+ }
+ local familiars_id = 9696
+
+
+local PIN_TIME_CONTEXT = {
+ {max = 60,
+ r=1, g=0.25, b =0, format = function (minutes) return '|cFFFF4400'.. minutes .. 'm' end,
+ continentAlpha = 1, swipeTime = 1440,
+ },
+ {max = 240,
+ r=1, g=.5, b=0, format = function(minutes) return '|cFFFF4400'.. floor(minutes/60) .. 'h' end,
+ continentAlpha = 1, swipeTime = 1440,
+ },
+ {max = 1440,
+ r=1, g=1, b=0, format = function(minutes) return '|cFFFFFF00'.. floor(minutes/60) .. 'h' end,
+ continentAlpha = .55, swipeTime = 1440
+ },
+ {max = 10081,
+ r=0, g=1, b=0,
+ continentAlpha = .3,
+ }, -- 7 days + 1 minute
+}
+
+
+function QuestPOI:OnEnter()
+ local completed = select(4,GetAchievementInfo(familiars_id))
+ if not completed then
+ if self.worldQuestType == LE_QUEST_TAG_TYPE_PET_BATTLE and familiars[self.questID] then
+ WorldMapTooltip:SetOwner(self, 'ANCHOR_RIGHT')
+ WorldMapTooltip:AddLine('Family Familiars')
+ local trainer = familiars[self.questID].name
+ local numCheevs = GetAchievementNumCriteria(familiars_id)
+ for index = 1, numCheevs do
+ local cheevName, cType, cCompleted, quantity, requiredQuantity, charName, flags, cheevID, quantityString, criteriaID = GetAchievementCriteriaInfo(familiars_id, index)
+ local numTrainers = GetAchievementNumCriteria(cheevID)
+ for subIndex = 1, numTrainers do
+ local desc, cType, partCompleted = GetAchievementCriteriaInfo(cheevID, subIndex)
+ if desc == trainer then
+ if not partCompleted then
+ local iconPath = select(10, GetAchievementInfo(cheevID))
+ WorldMapTooltip:AddLine(cheevName)
+ WorldMapTooltip:AddTexture(iconPath)
+ end
+ end
+ end
+ end
+ WorldMapTooltip:Show()
+ return
+ end
+ end
+ TaskPOI_OnEnter(self)
+end
+function QuestPOI:OnLeave()
+ TaskPOI_OnLeave(self)
+end
+function QuestPOI:OnMouseDown()
+ TaskPOI_OnClick(self)
+end
+
+
+function WorldPlanPOIMixin:SetAchievementProgressTooltip()
+ print('cheevos')
+
+
+end
+
+
+function QuestPOI:OnShow ()
+ qprint('|cFFFFFF00["'..tostring(self.title)..'"]|r:OnShow()')
+ -- pop this on principle
+ self:Refresh()
+end
+function QuestPOI:OnHide()
+ --qprint('|cFFFFFF00["'..tostring(self.title)..'"]|r:OnHide()')
+end
+
+function QuestPOI:SetAnchor(frame, mapID, mapWidth, mapHeight)
+ self:ClearAllPoints()
+ local dX, dY = TQ_GetQuestLocation(self.questID, mapID)
+ if not dX or dX == 0 then
+ local _, x, y = QuestPOIGetIconInfo(self.questID)
+ if x and floor(x) ~= 0 then
+ dX, dY = x, y
+ else
+ dX, dY = self.x, self.y
+ end
+ end
+ self.x = dX
+ self.y = dY
+
+ print(' |cFF00FF00'..self.questID..':|r', format("%0.2f %0.2f", dX, dY))
+
+ local pX = (dX * mapWidth)
+ local pY = (-dY * mapHeight)
+
+ self:SetParent(WorldMapPOIFrame)
+ self:SetPoint('CENTER', frame, 'TOPLEFT', pX, pY)
+end
+
+
+function QuestPOI:OnLoad()
+ self:RegisterEvent('SUPER_TRACKED_QUEST_CHANGED')
+end
+
+function QuestPOI:OnEvent(event, ...)
+ if event == 'SUPER_TRACKED_QUEST_CHANGED' then
+ if self:IsVisible() then
+ self:Refresh()
+ end
+ end
+end
+
+
+local PIN_UPDATE_DELAY = .016
+local TOP_PIN_ID
+function QuestPOI:OnUpdate (sinceLast)
+ -- control update check intervals
+ self.throttle = (self.throttle or PIN_UPDATE_DELAY) - sinceLast
+ if self.throttle <= 0 then
+ -- factor overtime into the throttle timer
+ self.throttle = PIN_UPDATE_DELAY - self.throttle
+ else
+ return
+ end
+
+ -- query for reward data if it wasn't found in the original scan
+ local questID = self.questID
+ if self.isPending then
+ self:Reset()
+ if not (self.PendingFade:IsPlaying() or self.isAnimating) then
+ self.PendingFade:Play()
+ end
+ return
+ else
+ if self.PendingFade:IsPlaying() then
+ self.PendingFade:Stop()
+ end
+ end
+
+ if self.hasUpdate then
+ self:Refresh()
+ self.hasUpdate = nil
+ end
+
+ -- update time elements
+ local tl = self.timeThreschold
+ local timeLeft = TQ_GetQuestTimeLeftMinutes(questID)
+ if timeLeft > 0 then
+ for i, context in ipairs(PIN_TIME_CONTEXT) do
+ if i > self.TimeleftStage then
+ self.timeLabel:SetText(nil)
+ break
+ end
+
+
+ if timeLeft <= context.max then
+ if tl ~= i then
+ tl = i
+ end
+
+ if context.format then
+ self.timeLabel:SetText(context.format(timeLeft))
+ else
+ self.timeLabel:SetText(nil)
+ end
+ break
+ end
+ end
+ else
+ -- remove self in a timely manner
+ if not self.isPending then
+ self:Hide()
+ end
+ end
+ self.timeThreschold = tl
+
+ if self:IsMouseOver() then
+ self.MouseGlow:Show()
+ else
+ self.MouseGlow:Hide()
+ end
+end
\ No newline at end of file
diff -r 48001b6a9496 -r 34d9fbf7af20 WorldPlan.lua
--- a/WorldPlan.lua Fri Oct 21 18:10:53 2016 -0400
+++ b/WorldPlan.lua Sat Oct 22 15:36:25 2016 -0400
@@ -23,6 +23,9 @@
local WP_VERSION = "1.0"
local print = DEVIAN_WORKSPACE and function(...) _G.print('WP', ...) end or function() end
+local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end
+local iprint = DEVIAN_WORKSPACE and function(...) _G.print('ItemScan', ...) end or function() end
+
local wipe, tremove, tinsert, pairs, floor, tContains = table.wipe, table.remove, table.insert, pairs, floor, tContains
local TQ_GetQuestInfoByQuestID = C_TaskQuest.GetQuestInfoByQuestID -- Return the name of a quest with a given ID
local TQ_GetQuestsForPlayerByMapID = C_TaskQuest.GetQuestsForPlayerByMapID -- This function is not yet documented
@@ -45,8 +48,6 @@
local GetCurrentMapAreaID, GetMapNameByID, GetSuperTrackedQuestID = GetCurrentMapAreaID, GetMapNameByID, GetSuperTrackedQuestID
local MC_GetNumZones, MC_GetZoneInfo = C_MapCanvas.GetNumZones, C_MapCanvas.GetZoneInfo
-local qprint = DEVIAN_WORKSPACE and function(...) _G.print('POI', ...) end or function() end
-local iprint = DEVIAN_WORKSPACE and function(...) _G.print('ItemScan', ...) end or function() end
local SearchFaction
local PinBaseIndex = 1600
@@ -177,25 +178,6 @@
{ filterKey= 'worldQuestType', filterValue = LE_QUEST_TAG_TYPE_DUNGEON, label = 'Dungeon', texture = "Interface\\LFGFRAME\\UI-LFR-PORTRAIT", },
}
-local PIN_TIME_CONTEXT = {
- {max = 60,
- r=1, g=0.25, b =0, format = function (minutes) return '|cFFFF4400'.. minutes .. 'm' end,
- continentAlpha = 1, swipeTime = 1440,
- },
- {max = 240,
- r=1, g=.5, b=0, format = function(minutes) return '|cFFFF4400'.. floor(minutes/60) .. 'h' end,
- continentAlpha = 1, swipeTime = 1440,
- },
- {max = 1440,
- r=1, g=1, b=0, format = function(minutes) return '|cFFFFFF00'.. floor(minutes/60) .. 'h' end,
- continentAlpha = .55, swipeTime = 1440
- },
- {max = 10081,
- r=0, g=1, b=0,
- continentAlpha = .3,
- }, -- 7 days + 1 minute
-}
-
local numPins = 0
local QuestsByZone = {}
local QuestsByFaction = {}
@@ -499,13 +481,6 @@
--print('|cFF00FF00Creating', name)
pin = CreateFrame('Frame', name, WorldMapPOIFrame, 'WorldPlanQuestPin')
pin:SetFrameStrata('HIGH')
- pin:SetScript('OnEnter', function(self)
- TaskPOI_OnEnter(self)
- end)
- pin:SetScript('OnLeave', function(self)
- TaskPOI_OnLeave(self)
- end)
- pin:SetScript('OnMouseDown', TaskPOI_OnClick)
NumPinFrames = NumPinFrames + 1
@@ -519,6 +494,10 @@
-- used by TaskPOI_x scripts
pin.questID = questID
pin.worldQuest = true
+
+ pin.Reset = function(self)
+ WorldQuests:GetPinByQuestID(questID)
+ end
else
--print('|cFF00FF00Using', pin:GetName())
end
@@ -883,96 +862,9 @@
local tooltipLine3 = _G['VeneerWorldQuestsScannerTextLeft3']
local GetTime, mod = GetTime, mod
-function QuestPOI:OnLoad()
- self:RegisterEvent('SUPER_TRACKED_QUEST_CHANGED')
-end
-function QuestPOI:OnEvent(event, ...)
- if event == 'SUPER_TRACKED_QUEST_CHANGED' then
- if self:IsVisible() then
- self:Refresh()
- end
- end
-end
-local PIN_UPDATE_DELAY = .016
-local TOP_PIN_ID
-function QuestPOI:OnUpdate (sinceLast)
- -- control update check intervals
- self.throttle = (self.throttle or PIN_UPDATE_DELAY) - sinceLast
- if self.throttle <= 0 then
- -- factor overtime into the throttle timer
- self.throttle = PIN_UPDATE_DELAY - self.throttle
- else
- return
- end
- -- query for reward data if it wasn't found in the original scan
- local questID = self.questID
- if self.isPending then
- WorldQuests:GetPinByQuestID(questID)
- if not (self.PendingFade:IsPlaying() or self.isAnimating) then
- self.PendingFade:Play()
- end
- return
- else
- if self.PendingFade:IsPlaying() then
- self.PendingFade:Stop()
- end
- end
-
- if self.hasUpdate then
- self:Refresh()
- self.hasUpdate = nil
- end
-
- -- update time elements
- local tl = self.timeThreschold
- local timeLeft = TQ_GetQuestTimeLeftMinutes(questID)
- if timeLeft > 0 then
- for i, context in ipairs(PIN_TIME_CONTEXT) do
- if i > self.TimeleftStage then
- self.timeLabel:SetText(nil)
- break
- end
-
-
- if timeLeft <= context.max then
- if tl ~= i then
- tl = i
- end
-
- if context.format then
- self.timeLabel:SetText(context.format(timeLeft))
- else
- self.timeLabel:SetText(nil)
- end
- break
- end
- end
- else
- -- remove self in a timely manner
- if not self.isPending then
- self:Hide()
- end
- end
- self.timeThreschold = tl
-
- if self:IsMouseOver() then
- self.MouseGlow:Show()
- else
- self.MouseGlow:Hide()
- end
-end
-
-function QuestPOI:OnShow ()
- qprint('|cFFFFFF00["'..tostring(self.title)..'"]|r:OnShow()')
- -- pop this on principle
- self:Refresh()
-end
-function QuestPOI:OnHide()
- --qprint('|cFFFFFF00["'..tostring(self.title)..'"]|r:OnHide()')
-end
function QuestPOI:Refresh ()
print('|cFF00FF88["'..tostring(self.title)..'"]|r:Refresh()', tostring(self.title), "|T"..tostring(self.itemTexture)..":12:12|t", tostring(self.itemName))
qprint(self.style)
@@ -1035,28 +927,7 @@
qprint('|cFF88FF00updated', questID, self.title, self.rewardType, (style.showNumber and self.itemNumber) or '')
end
-function QuestPOI:SetAnchor(frame, mapID, mapWidth, mapHeight)
- self:ClearAllPoints()
- local dX, dY = TQ_GetQuestLocation(self.questID, mapID)
- if not dX or dX == 0 then
- local _, x, y = QuestPOIGetIconInfo(self.questID)
- if x and floor(x) ~= 0 then
- dX, dY = x, y
- else
- dX, dY = self.x, self.y
- end
- end
- self.x = dX
- self.y = dY
- print(' |cFF00FF00'..self.questID..':|r', format("%0.2f %0.2f", dX, dY))
-
- local pX = (dX * mapWidth)
- local pY = (-dY * mapHeight)
-
- self:SetParent(WorldMapPOIFrame)
- self:SetPoint('CENTER', frame, 'TOPLEFT', pX, pY)
-end
function QuestPOI:IsShowable (ignoreFilters)
@@ -1161,7 +1032,6 @@
end
-
function FilterBar:OnEvent(event)
if event == 'QUEST_LOG_UPDATE' then
self:Refresh()
diff -r 48001b6a9496 -r 34d9fbf7af20 WorldPlan.xml
--- a/WorldPlan.xml Fri Oct 21 18:10:53 2016 -0400
+++ b/WorldPlan.xml Sat Oct 22 15:36:25 2016 -0400
@@ -2,6 +2,7 @@
..\FrameXML\UI.xsd">
+
@@ -139,12 +140,18 @@
+
+
+