# HG changeset patch
# User Nenue
# Date 1461697038 14400
# Node ID dd1ae565f559bb645e0be0edbf074601d9989144
# Parent 756e8aeb040b1968d40296a6d5a3f45695879107
Hooks and Handlers:
- correct argument mix-ups for AcceptQuest/QUEST_ACCEPTED handlers; fixes auto-watch
- respond to AcknowledgeAutoAcceptQuest; fixes lingering popups
- include Popup and Quest trackers in the response code for CompleteQuest; fixes content artifacts following the rollover of repeating popups seen in Ashran
- clean up wacky OnEvent header
Layout
- add alpha blend options
QuestData
- reset objectives data when a quest is in a completed state; keeps old data from ever reaching the Default.x code
diff -r 756e8aeb040b -r dd1ae565f559 ObjectiveTracker/APIHooks.lua
--- a/ObjectiveTracker/APIHooks.lua Mon Apr 25 19:37:13 2016 -0400
+++ b/ObjectiveTracker/APIHooks.lua Tue Apr 26 14:57:18 2016 -0400
@@ -12,6 +12,9 @@
local QuestPOIUpdateIcons = QuestPOIUpdateIcons
--- Module updates triggered by user events
+T.AcknowledgeAutoAcceptQuest = function(...)
+ return OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST + OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP
+end
T.AddQuestWatch = function(questID)
return OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST
@@ -28,6 +31,7 @@
return OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP
end
T.RemoveAutoQuestPopUp = function(questID)
+ AddQuestWatch(GetQuestLogIndexByID(questID))
return OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP
end
--- SUPER_TRACKED_QUEST_CHANGED will fires
@@ -43,10 +47,10 @@
end
end
end
- T.SuperTrackedQuestID = questID
end
+
local previousSelection
--@debug@
local tprint = B.print('Tracker') -- @debug@
diff -r 756e8aeb040b -r dd1ae565f559 ObjectiveTracker/AutoQuestPopupData.lua
--- a/ObjectiveTracker/AutoQuestPopupData.lua Mon Apr 25 19:37:13 2016 -0400
+++ b/ObjectiveTracker/AutoQuestPopupData.lua Tue Apr 26 14:57:18 2016 -0400
@@ -12,32 +12,42 @@
local GetNumAutoQuestPopUps, GetAutoQuestPopUp, GetQuestLogIndexByID, GetQuestLogTitle = GetNumAutoQuestPopUps, GetAutoQuestPopUp, GetQuestLogIndexByID, GetQuestLogTitle
--- Data retrieval
function AutoQuest:GetNumWatched ()
- if true then return 0, 0, nil end
- print(self.name, self)
- --Quest:GetNumWatched()
- self.numWatched = GetNumAutoQuestPopUps()
+ local numWatched = GetNumAutoQuestPopUps()
+ local numAll = numWatched
- return self.numWatched
+ self.print('GetNumWatched', numWatched, 'popups detected')
+ for i = 1, numWatched do
+ self:GetInfo(i)
+ end
+
+ for i, block in ipairs(self.usedBlocks) do
+ if not GetAutoQuestPopUp(block.info.id) then
+ self:FreeBlock(block)
+ end
+ end
+
+ self.numWatched = numWatched
+ self.WatchList = self.Info
+ return numWatched
end
-AutoQuest.GetInfo = function(self, popupIndex)
+AutoQuest.GetInfo = function(self, index)
- local questID, type = GetAutoQuestPopUp(popupIndex)
+ local questID, type = GetAutoQuestPopUp(index)
local questLogIndex = GetQuestLogIndexByID(questID)
local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(questLogIndex)
- self.Info[questID] = self.Info[questID] or {}
- local popup = self.Info[questID]
+ self.Info[index] = self.Info[index] or {}
+ local popup = self.Info[index]
popup.questID = questID
- popup.id = questID
+ popup.id = index
popup.title = title
popup.description = type
popup.popupType = type
popup.logIndex = questLogIndex
- popup.popupIndex = popupIndex
self.Info[questID] = popup
- self.WatchInfo[popupIndex] = popup
+ self.WatchInfo[index] = popup
return self.Info[questID]
diff -r 756e8aeb040b -r dd1ae565f559 ObjectiveTracker/Block.lua
--- a/ObjectiveTracker/Block.lua Mon Apr 25 19:37:13 2016 -0400
+++ b/ObjectiveTracker/Block.lua Tue Apr 26 14:57:18 2016 -0400
@@ -187,6 +187,4 @@
bprint(' animGroup', i, animGroup:GetName())
animGroup:Stop()
end
-
- T:Update(self.updateReasonsModule)
end
diff -r 756e8aeb040b -r dd1ae565f559 ObjectiveTracker/Default.lua
--- a/ObjectiveTracker/Default.lua Mon Apr 25 19:37:13 2016 -0400
+++ b/ObjectiveTracker/Default.lua Tue Apr 26 14:57:18 2016 -0400
@@ -54,7 +54,7 @@
elseif not reason then
reason = OBJECTIVE_TRACKER_UPDATE_ALL
end
- print(format('|cFFBB0066Update:|r |cFFFF%04X%d|r ', tick, lshift(reason, 4)), reason, ...)
+ print(format('|cFFBB0066Update:|r %d |cFFFF%04X%d|r ', tick, lshift(reason, 4)), reason, ...)
currentPosition = 0
for id, handler in pairs(T.orderedHandlers) do
diff -r 756e8aeb040b -r dd1ae565f559 ObjectiveTracker/Layout.lua
--- a/ObjectiveTracker/Layout.lua Mon Apr 25 19:37:13 2016 -0400
+++ b/ObjectiveTracker/Layout.lua Tue Apr 26 14:57:18 2016 -0400
@@ -65,11 +65,13 @@
local titlebg = {'HORIZONTAL', 1, 0, .7, 0, 1, 0, .7, .2}
local titleFont, titleSize, titleOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'OUTLINE'
-local titleColor = {0,.7,1,1}
+local titleColor = {0,.7,1,1 }
+local titleBlend = 'BLEND'
local textbg = {'HORIZONTAL', 0, 0, 0, 0.4, 0, 0, 0, 0 }
local textFont, textSize, textOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Regular.ttf]], 16, 'OUTLINE'
local textColor = {1,1,1,1 }
+local textBlend = 'BLEND'
local widgetTextFont, widgetTextSize, widgetTextOutline = [[Interface\Addons\SharedMedia_MyMedia\font\XOIREQE.TTF]], 11, 'OUTLINE'
local widgetTextColor = {1,1,1,1 }
@@ -122,6 +124,8 @@
titleSpacing, textSpacing, blockSpacing = c.titleSpacing, c.textSpacing, c.blockSpacing
titleIndent, textIndent,selectionIndent = c.titleIndex, c.textIndex, c.selectionIndent
titleColor = c.titleColor
+ titleBlend = c.titlebg[10] or 'BLEND'
+ textBlend = c.textbg[10] or 'BLEND'
print(unpack(c.titleColor))
rewardSize = 24
textFont, textSize, textOutline = unpack(c.textFont)
@@ -255,6 +259,7 @@
block.titlebg:SetGradientAlpha(unpack(titlebg))
block.titlebg:SetPoint('TOP', block, 'TOP', 0, 0)
block.titlebg:SetPoint('BOTTOM', block.title, 'BOTTOM', 0, -titleSpacing)
+ block.titlebg:SetBlendMode(titleBlend)
block.status:SetSpacing(textSpacing)
block.status:SetPoint('TOP', block.titlebg, 'BOTTOM', 0, -textSpacing)
block.status:SetPoint('LEFT', block.titlebg, 'LEFT', textIndent, 0)
@@ -262,6 +267,7 @@
block.statusbg:SetPoint('BOTTOM', block, 'BOTTOM', 0, 0)
block.statusbg:SetTexture(1,1,1,1)
block.statusbg:SetGradientAlpha(unpack(textbg))
+ block.statusbg:SetBlendMode(textBlend)
block.SelectionOverlay:SetGradientAlpha(unpack(selectionbg))
block.SelectionOverlay:SetPoint('TOPLEFT', selectionIndent, 0)
block.SelectionOverlay:SetPoint('BOTTOMRIGHT')
diff -r 756e8aeb040b -r dd1ae565f559 ObjectiveTracker/ObjectiveTracker.lua
--- a/ObjectiveTracker/ObjectiveTracker.lua Mon Apr 25 19:37:13 2016 -0400
+++ b/ObjectiveTracker/ObjectiveTracker.lua Tue Apr 26 14:57:18 2016 -0400
@@ -23,6 +23,7 @@
local BlizzHooks = {
'AcceptQuest',
'AddQuestWatch',
+ 'CompleteQuest',
'RemoveQuestWatch',
'AbandonQuest',
'AcknowledgeAutoAcceptQuest',
@@ -270,12 +271,14 @@
end
local GetNumQuestWatches, AddQuestWatch, SetSuperTrackedQuestID = GetNumQuestWatches, AddQuestWatch, SetSuperTrackedQuestID
Event.QUEST_ACCEPTED = function(questLogIndex, questID, added)
+
+ --todo: stall non-confirmed autoquests
+ AddQuestWatch(questLogIndex)
if ( IsQuestTask(questID) ) then
return OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED + OBJECTIVE_TRACKER_UPDATE_TASK_ADDED, questID, added
else
return OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED, questID, added
end
- AddQuestWatch(questID)
end
Event.QUEST_WATCH_LIST_CHANGED = function(questID, added)
@@ -446,12 +449,17 @@
local Play = function(file) if Devian and Devian.InWorkspace() then PlaySoundFile(file) end end
local tprint = B.print('Tracker')
+local ignoredNames = {
+ ['SelectQuestLogEntry'] = true
+}
T.OnHookedFunc = function(name, ...)
- print('|cFFFF8800securehook:|r', name, '|cFF00FFFFargs:|r', ...)
+ --tprint('|cFFFF8800securehook:|r', name, '|cFF00FFFFargs:|r', ...)
local updateReason, arg1, arg2, arg3 = T[name](...)
if updateReason then
- print('|cFF00FFFFupdate reason:|r', updateReason, arg1, arg2, arg3)
+ tprint('OnHookedFunc(|cFF00FFFF'..name..'|r):', ...)
T:Update(updateReason, arg1, arg2, arg3)
+ elseif not ignoredNames[name] then
+ tprint('OnHookedFunc(|cFFFF4400'..name..'|r):', ...)
end
end
@@ -468,21 +476,22 @@
end
else
print('no event handler set for', event)
+ tprint('no event handler set for', event)
Play([[Interface\Addons\SharedMedia_MyMedia\sound\IM.ogg]])
end
if reason then
- tprint('OnEvent(|cFF00FF00'.. event ..'|r):', ...)
+ local args = (reason or '0')
+ if arg1 then args = args .. ', ' .. tostring(arg1) end
+ if arg2 then args = args .. ', ' .. tostring(arg2) end
+ if arg3 then args = args .. ', ' .. tostring(arg3) end
+ print('OnEvent(|cFF00FF00'.. event ..'|r):', ..., '|cFFFFFF00=> Update (|r', args,'|cFFFFFF00)|r')
+ tprint('OnEvent(|cFF00FF00'.. event ..'|r):', ..., '|cFFFFFF00=> Update (|r', args,'|cFFFFFF00)|r')
T:Update(reason, arg1, arg2, arg3)
else
- print('OnEvent(|cFFFF4400'.. event ..'|r):', ...)
+ tprint('OnEvent(|cFFFF4400'.. event ..'|r):', ...)
print('no detected reason')
--Play([[Interface\Addons\SharedMedia_MyMedia\sound\Quack.ogg]])
end
- local args = (reason or '0')
- if arg1 then args = args .. ', ' .. tostring(arg1) end
- if arg2 then args = args .. ', ' .. tostring(arg2) end
- if arg3 then args = args .. ', ' .. tostring(arg3) end
- tprint('OnEvent(|cFF00FF00'.. event ..'|r):', ..., '|cFFFFFF00=> Update (|r', args,'|cFFFFFF00)|r')
end
@@ -506,6 +515,12 @@
end
+ local weekDays = {'Su', 'M', 'T', 'W', 'R' ,'F', 'Sa'}
+ Wrapper.Clock:SetScript('OnUpdate', function(self)
+ local weekday, month, day, year = CalendarGetDate()
+ local hour, min = GetGameTime()
+ self.time:SetFormattedText("%s.%s.%s %d:%02d", weekDays[weekday], month, day, hour, min)
+ end)
ObjectiveTrackerFrame:UnregisterAllEvents()
ObjectiveTrackerFrame:Hide()
diff -r 756e8aeb040b -r dd1ae565f559 ObjectiveTracker/ObjectiveTracker.xml
--- a/ObjectiveTracker/ObjectiveTracker.xml Mon Apr 25 19:37:13 2016 -0400
+++ b/ObjectiveTracker/ObjectiveTracker.xml Tue Apr 26 14:57:18 2016 -0400
@@ -162,16 +162,16 @@
-
+
-
+
-
+
-
+
@@ -179,9 +179,6 @@
- local hour, min = GetGameTime()
- self.time:SetFormattedText("%d:%02d", hour, min)
- --self:SetWidth(self.time:GetWidth()+4)
@@ -373,7 +370,7 @@
-
+
@@ -383,14 +380,14 @@
-
+
-
+
diff -r 756e8aeb040b -r dd1ae565f559 ObjectiveTracker/QuestData.lua
--- a/ObjectiveTracker/QuestData.lua Mon Apr 25 19:37:13 2016 -0400
+++ b/ObjectiveTracker/QuestData.lua Tue Apr 26 14:57:18 2016 -0400
@@ -53,9 +53,15 @@
block_schema = 'weekly'
end
local completionText
- if info.isComplete then
+
+ if info.isAutoComplete and info.isComplete then
+ displayObjectives = false
+ info.numObjectives = 1
+ self:AddLine(block, info.completionText, nil, 'complete')
+ elseif info.isComplete then
if T.Conf.ShowCompletionText then
self:AddLine(block, info.completionText, nil, 'complete')
+ displayObjectives = false
end
if not T.Conf.ShowObjectivesWhenComplete then
displayObjectives = false
@@ -64,6 +70,7 @@
block_schema = 'complete'
end
+
Default.UpdateObjectives(self, block, block_schema, displayObjectives)
return 0, block_schema
end
@@ -166,16 +173,20 @@
for index, block in ipairs(self.usedBlocks) do
local logIndex = GetQuestLogIndexByID(block.info.questID, 'player')
- print('GetNumWatched', '|cFFFF4400'.. index, (block and block:GetName() or '|cFFFF0000-|r'), logIndex or '|cFF444444-|r')
-- animating blocks have been evaluated
if not block.isAnimating then
if not logIndex then
self:ClearBlock(block)
- print('GetNumWatched', 'trim dropped quest', block:GetName())
+ print('GetNumWatched', '|cFF44FF00'.. index, (block and block:GetName() or '|cFFFF0000-|r'), '(trim not active)')
elseif not IsQuestWatched(block.info.logIndex) then
self:ClearBlock(block)
- print('GetNumWatched', 'trim untracked quest', block:GetName())
+ print('GetNumWatched', '|cFFFF4400'.. index, (block and block:GetName() or '|cFFFF0000-|r'), '(trim non-watched)')
+ else
+ print('GetNumWatched', '|cFF0088FF'.. index, (block and block:GetName() or '|cFFFF0000-|r'), logIndex or '|cFF444444-|r')
end
+ else
+
+ print('GetNumWatched', '|cFF00FFFF'.. index, (block and block:GetName() or '|cFFFF0000-|r'), ' (animating)')
end
end
@@ -266,7 +277,6 @@
if ( isComplete ) then
temp_status = 'COMPLETED_OBJECTIVES'
--objectives = Quest.GetObjectives(logIndex, numObjectives, true, isSequenced, isStory)
- q.objectives = objectives
if ( isAutoComplete ) then
temp_status = 'AUTOCOMPLETE_OBJECTIVES'
completionText = _G.QUEST_WATCH_CLICK_TO_COMPLETE
@@ -279,6 +289,9 @@
completionText = _G.QUEST_WATCH_QUEST_READY
end
end
+ if not T.Conf.ShowObjectivesWhenComplete then
+ q.objectives = {}
+ end
elseif ( questFailed ) then
temp_status = 'FAILED'
-- Case 2: failed quest
diff -r 756e8aeb040b -r dd1ae565f559 ObjectiveTracker/Schema.lua
--- a/ObjectiveTracker/Schema.lua Mon Apr 25 19:37:13 2016 -0400
+++ b/ObjectiveTracker/Schema.lua Tue Apr 26 14:57:18 2016 -0400
@@ -61,8 +61,8 @@
T.defaults.Schema.block = {
default = {
titleColor = {1, 1, 1, 1},
- titlebg = {'HORIZONTAL', 1, 0, .7, 0, 1, 0, .7, .125},
- textbg = {'HORIZONTAL', 0, 0, 0, 0, 0, 0, 0, 0.4 },
+ titlebg = {'HORIZONTAL', 1, 1, 1, 0, 1, 1, 1, 1, 'MOD'},
+ textbg = {'HORIZONTAL', 1, 1, 1, 1, .7, .7, .7, 1, 'MOD'},
selectionbg = {'HORIZONTAL', 1, 1, 1, 0, 1, 1, 1, 0.225},
titleFont = {[[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'OUTLINE'},
textFont = {[[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Regular.ttf]], 16, 'OUTLINE'},