annotate ObjectiveEvents.lua @ 7:5301c68f28d8

TrackerBlock - use IsModifiedClick function to determine appropriate OnClick actions - handle 'CHATLINK' modifier - handle 'TOGGLEQUESTWATCH' modifier TrackerBlockObjectives - use a generic framework to manage frame creation for various criteria tracker types: - ProgressBar when Blizzard flag data indicates so - skip when Blizzard flag data indicates so - DynamicText otherwise - events related to the criteria are registered in the criteria frame, and unregistered when the frame is hidden, either by destruction of its parent or completion
author Nenue
date Fri, 01 Apr 2016 12:27:05 -0400
parents 589de8ea05b9
children 7923243ae972
rev   line source
Nenue@1 1 --- ${PACKAGE_NAME}
Nenue@1 2 -- @file-author@
Nenue@1 3 -- @project-revision@ @project-hash@
Nenue@1 4 -- @file-revision@ @file-hash@
Nenue@1 5 -- Created: 3/30/2016 1:23 AM
Nenue@1 6 local B = select(2,...).frame
Nenue@1 7 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
Nenue@1 8 local print = B.print('ObjectiveEvent')
Nenue@1 9
Nenue@6 10 local isHooked
Nenue@6 11 local SmallEvents = {
Nenue@6 12 QUEST_ACCEPTED = 'OnQuestAccepted',
Nenue@6 13 QUEST_REMOVED = 'OnQuestRemoved'
Nenue@6 14 }
Nenue@6 15
Nenue@6 16 local HandlerEvents = {
Nenue@6 17 QUEST_ACCEPTED = mod.Quest,
Nenue@6 18 QUEST_REMOVED = mod.Quest,
Nenue@6 19 QUEST_WATCH_LIST_CHANGED = mod.Quest,
Nenue@6 20 SUPER_TRACKED_QUEST_CHANGED = mod.Quest,
Nenue@6 21 QUEST_LOG_UPDATE = mod.Quest,
Nenue@6 22 TRACKED_ACHIEVEMENT_LIST_CHANGED = mod.Cheevs,
Nenue@6 23 TRACKED_ACHIEVEMENT_UPDATE = mod.Cheevs
Nenue@6 24 }
Nenue@6 25
Nenue@6 26 local BlizzHooks = {
Nenue@6 27 ['AddQuestWatch'] = 'AddQuestWatch',
Nenue@6 28 ['RemoveQuestWatch'] = 'RemoveQuestWatch',
Nenue@6 29 ['AbandonQuest'] = 'AbandonQuest',
Nenue@6 30 ['AcknowledgeAutoAcceptQuest'] = 'AcknowledgeAutoAcceptQuest',
Nenue@6 31 ['AddAutoQuestPopUp'] = 'AddAutoQuestPopUp'
Nenue@6 32 }
Nenue@6 33
Nenue@6 34 mod.SetEvents = function()
Nenue@6 35
Nenue@6 36 for event, _ in pairs(SmallEvents) do
Nenue@6 37 mod:RegisterEvent(event)
Nenue@6 38 end
Nenue@6 39
Nenue@6 40 for event, _ in pairs(HandlerEvents) do
Nenue@6 41 mod:RegisterEvent(event)
Nenue@6 42 end
Nenue@6 43 mod:SetScript('OnEvent', mod.OnEvent)
Nenue@6 44
Nenue@6 45
Nenue@6 46 if not isHooked then
Nenue@6 47 VeneerData.CallLog = {}
Nenue@6 48 isHooked = true
Nenue@6 49 for blizzFunc, veneerFunc in pairs(BlizzHooks) do
Nenue@6 50 if mod[veneerFunc] then
Nenue@6 51 hooksecurefunc(blizzFunc, mod[veneerFunc])
Nenue@6 52 else
Nenue@6 53 hooksecurefunc(blizzFunc, function(...)
Nenue@6 54 print('catching', blizzFunc, ...)
Nenue@6 55 tinsert(VeneerData.CallLog, {blizzFunc, ...})
Nenue@6 56 end)
Nenue@6 57 end
Nenue@6 58 end
Nenue@6 59
Nenue@6 60 end
Nenue@6 61 end
Nenue@6 62
Nenue@6 63 function mod:OnEvent (event, ...)
Nenue@6 64 local isHandled
Nenue@6 65 if SmallEvents[event] then
Nenue@6 66 print('|cFF00FF00'..SmallEvents[event]..'(' ..event..'|r', ...)
Nenue@6 67 mod[SmallEvents[event]](event, ...)
Nenue@6 68 isHandled = true
Nenue@6 69 end
Nenue@6 70 if HandlerEvents[event] then
Nenue@6 71 print('|cFF0088FF'..event..'|r wrapper update')
Nenue@6 72 mod.UpdateWrapper()
Nenue@6 73 isHandled = true
Nenue@6 74 end
Nenue@6 75 if not isHandled then
Nenue@6 76 print('|cFFFF4400'..event..'|r', ...)
Nenue@6 77 end
Nenue@6 78 end
Nenue@6 79
Nenue@1 80 --------------------------------------------------------------------
Nenue@6 81 --- Events that are handled by Blizzard_ObjectiveTracker
Nenue@1 82 --------------------------------------------------------------------
Nenue@1 83 print(mod:GetName())
Nenue@1 84 mod.OnQuestAccepted = function(_, questLogIndex, questID)
Nenue@1 85 AddQuestWatch(questLogIndex)
Nenue@1 86 SetSuperTrackedQuestID(questID)
Nenue@1 87 end
Nenue@1 88
Nenue@1 89 mod.OnQuestComplete = function(_, questLogIndex, questID)
Nenue@1 90 QuestPOIUpdateIcons()
Nenue@1 91 end
Nenue@1 92
Nenue@1 93 mod.OnQuestFinished = function(_, questLogIndex, questID)
Nenue@1 94 mod.TrackClosest()
Nenue@1 95 RemoveQuestWatch(questLogIndex)
Nenue@1 96 end
Nenue@1 97
Nenue@6 98
Nenue@2 99 mod.OnQuestRemoved = function(_, questLogIndex, questID)
Nenue@6 100
Nenue@6 101 mod.UpdateWrapper()
Nenue@6 102
Nenue@2 103 end
Nenue@2 104
Nenue@1 105 mod.OnQuestFromLocation = function(event) end
Nenue@1 106
Nenue@6 107 -------------------------------------------------------------------
Nenue@6 108 --- Function hooks for BlizzUI compatibility
Nenue@6 109 -------------------------------------------------------------------
Nenue@6 110 mod.AddQuestWatch = function(questID)
Nenue@6 111 mod.UpdateWrapper()
Nenue@1 112 end
Nenue@6 113
Nenue@6 114 mod.RemoveQuestWatch = function(questIndex)
Nenue@6 115 mod.UpdateWrapper()
Nenue@6 116 end
Nenue@6 117
Nenue@6 118 mod.AcceptQuest = function()
Nenue@6 119 end
Nenue@6 120
Nenue@6 121 mod.AbandonQuest = function()
Nenue@6 122 end
Nenue@6 123
Nenue@6 124 mod.TurnInQuest = function()
Nenue@6 125 end