Mercurial > wow > buffalo2
view ObjectiveEvents.lua @ 16:880828018bf4
ObjectiveEvents
- trim down the number of events that fire full updates
- begin the general outline for determining which trackers need to refresh
- handlers for accepting and completing auto-popup quests
ObjectiveFrame
- correct variables for money reward calculation
- make sure everythign is scaling to the font strings and that the font strings aren't being pinned by SetSize
ObjectiveInfo
- implementation of autoquest popups
- discern between internal and client bonus objective indexes
- acquire the correct data set from bonus objective query
ObjectiveStyle
- look for a style table under the previously interpreted set before deferring standard options
- horizontal/vertical options in gradient
- remove height-fixing for font strings
author | Nenue |
---|---|
date | Tue, 05 Apr 2016 00:39:12 -0400 |
parents | 7923243ae972 |
children | 605e8f0e46db |
line wrap: on
line source
--- ${PACKAGE_NAME} -- @file-author@ -- @project-revision@ @project-hash@ -- @file-revision@ @file-hash@ -- Created: 3/30/2016 1:23 AM local B = select(2,...).frame local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame') local print = B.print('ObjectiveEvent') local isHooked local SmallEvents = { QUEST_ACCEPTED = 'OnQuestAccepted', QUEST_REMOVED = 'OnQuestRemoved' } --- Using the same values as Blizzard_ObjectiveTracker for use in securehook local OBJECTIVE_TRACKER_UPDATE_QUEST = 0x0001; local OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED = 0x0002; local OBJECTIVE_TRACKER_UPDATE_TASK_ADDED = 0x0004; local OBJECTIVE_TRACKER_UPDATE_SCENARIO = 0x0008; local OBJECTIVE_TRACKER_UPDATE_SCENARIO_NEW_STAGE = 0x0010; local OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT = 0x0020; local OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED = 0x0040; local OBJECTIVE_TRACKER_UPDATE_SCENARIO_BONUS_DELAYED = 0x0080; local OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST = 0x0100; local OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP = 0x0200; local OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE = 0x0400; local OBJECTIVE_TRACKER_UPDATE_MODULE_SCENARIO = 0x0800; local OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT = 0x1000; local OBJECTIVE_TRACKER_UPDATE_STATIC = 0x0000; local OBJECTIVE_TRACKER_UPDATE_ALL = 0xFFFF; local OBJECTIVE_TRACKER_UPDATE_REASON = OBJECTIVE_TRACKER_UPDATE_ALL; -- default local OBJECTIVE_TRACKER_UPDATE_ID = 0; local HandlerEvents = { QUEST_ACCEPTED = 0x0003, QUEST_WATCH_LIST_CHANGED = 0x0003, SUPER_TRACKED_QUEST_CHANGED = mod.Quest, QUEST_LOG_UPDATE = mod.Quest, TRACKED_ACHIEVEMENT_LIST_CHANGED = mod.Cheevs, TRACKED_ACHIEVEMENT_UPDATE = mod.Cheevs } local BlizzHooks = { ['AddQuestWatch'] = 'AddQuestWatch', ['RemoveQuestWatch'] = 'RemoveQuestWatch', ['AbandonQuest'] = 'AbandonQuest', ['AcknowledgeAutoAcceptQuest'] = 'AcknowledgeAutoAcceptQuest', ['AddAutoQuestPopUp'] = 'AddAutoQuestPopUp', ['RemoveAutoQuestPopUp'] = 'RemoveAutoQuestPopUp', ['RemoveTrackedAchievement'] = 'RemoveTrackedAchievement' } mod.SetEvents = function() for event, _ in pairs(SmallEvents) do mod:RegisterEvent(event) end for event, _ in pairs(HandlerEvents) do mod:RegisterEvent(event) end mod:SetScript('OnEvent', mod.OnEvent) if not isHooked then VeneerData.CallLog = {} isHooked = true for blizzFunc, veneerFunc in pairs(BlizzHooks) do if mod[veneerFunc] then hooksecurefunc(blizzFunc, mod[veneerFunc]) else hooksecurefunc(blizzFunc, function(...) print('catching', blizzFunc, ...) tinsert(VeneerData.CallLog, {blizzFunc, ...}) end) end end end end function mod:OnEvent (event, ...) local isHandled if SmallEvents[event] then print('|cFF00FF00'..SmallEvents[event]..'(' ..event..'|r', ...) mod[SmallEvents[event]](event, ...) isHandled = true end if HandlerEvents[event] then print('|cFF0088FF'..event..'|r wrapper update') mod.UpdateWrapper(event) isHandled = true end if not isHandled then print('|cFFFF4400'..event..'|r', ...) end end -------------------------------------------------------------------- --- Events that are handled by Blizzard_ObjectiveTracker -------------------------------------------------------------------- print(mod:GetName()) mod.OnQuestAccepted = function(_, questLogIndex, questID) AddQuestWatch(questLogIndex) SetSuperTrackedQuestID(questID) end mod.OnQuestComplete = function(_, questLogIndex, questID) QuestPOIUpdateIcons() end mod.OnQuestFinished = function(_, questLogIndex, questID) mod.TrackClosest() RemoveQuestWatch(questLogIndex) end mod.OnQuestRemoved = function(_, questLogIndex, questID) mod.UpdateWrapper(0x00000003) end mod.OnQuestFromLocation = function(event) end ------------------------------------------------------------------- --- Function hooks for BlizzUI compatibility ------------------------------------------------------------------- mod.AddQuestWatch = function(questID) mod.UpdateWrapper(0x00000003) end mod.RemoveQuestWatch = function(questIndex, ...) print('|cFFFF8800RemoveQuestWatch', questIndex, ...) local info = mod.Quest.LogInfo[questIndex] -- remove quest refs mod.Quest.LogBlock[questIndex] = nil mod.Quest.QuestBlock[info.questID] = nil -- remove if they still match if mod.Quest.WatchInfo[info.watchIndex] == info then print('cleaning dead WatchInfo entry') mod.Quest.WatchInfo[info.watchIndex] = nil end mod.UpdateWrapper('RemovedQuestWatch' .. tostring(questIndex)) QuestPOIUpdateIcons() end mod.RemoveTrackedAchievement = function(cheevID) print('|cFFFF8800UntrackAchievement', cheevID) mod.CleanWidgets() end mod.AcceptQuest = function() end mod.AbandonQuest = function() QuestPOIUpdateIcons() end mod.TurnInQuest = function() QuestPOIUpdateIcons() end mod.AddAutoQuestPopUp = function(...) print('|cFFFF8800AddAutoQuestPopUp|r', ...) mod.UpdateWrapper(OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP) end mod.RemoveAutoQuestPopUp = function(...) print('|cFFFF8800RemoveAutoQuestPopUp|r', ...) mod.UpdateWrapper(OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP) end