annotate ObjectiveEvents.lua @ 6:589de8ea05b9

- validate tracked objects' existence by use of those handler.Info tables we made - apply collision checking to action buttons when their corresponding entry has scrolled out
author Nenue
date Fri, 01 Apr 2016 01:30:42 -0400
parents a2396b03ce63
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