Nenue@0
|
1 --- ${PACKAGE_NAME}
|
Nenue@0
|
2 -- @file-author@
|
Nenue@0
|
3 -- @project-revision@ @project-hash@
|
Nenue@0
|
4 -- @file-revision@ @file-hash@
|
Nenue@0
|
5 -- Created: 3/26/2016 1:51 AM
|
Nenue@19
|
6 local B, _G = select(2,...).frame, _G
|
Nenue@19
|
7 local pairs, setmetatable, type, tostring = _G.pairs, _G.setmetatable, _G.type, _G.tostring
|
Nenue@19
|
8 local format = _G.format
|
Nenue@16
|
9 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
|
Nenue@0
|
10 local print = B.print('Objectives')
|
Nenue@19
|
11 local ObjectiveTrackerFrame, VeneerObjectiveScroll, CreateFrame = _G.ObjectiveTrackerFrame, _G.VeneerObjectiveScroll, _G.CreateFrame
|
Nenue@19
|
12 local Wrapper = _G.VeneerObjectiveWrapper
|
Nenue@19
|
13 local ipairs, tinsert, hooksecurefunc = _G.ipairs, _G.tinsert, _G.hooksecurefunc
|
Nenue@19
|
14 local Scroller = VeneerObjectiveWrapper.scrollArea
|
Nenue@19
|
15 local Scroll = _G.VeneerObjectiveScroll
|
Nenue@16
|
16
|
Nenue@16
|
17 --- Performance values
|
Nenue@16
|
18 --[[
|
Nenue@16
|
19 self:RegisterEvent("QUEST_LOG_UPDATE");
|
Nenue@16
|
20 self:RegisterEvent("TRACKED_ACHIEVEMENT_LIST_CHANGED");
|
Nenue@16
|
21 self:RegisterEvent("QUEST_WATCH_LIST_CHANGED");
|
Nenue@16
|
22 self:RegisterEvent("QUEST_AUTOCOMPLETE");
|
Nenue@16
|
23 self:RegisterEvent("QUEST_ACCEPTED");
|
Nenue@16
|
24 self:RegisterEvent("SUPER_TRACKED_QUEST_CHANGED");
|
Nenue@16
|
25 self:RegisterEvent("SCENARIO_UPDATE");
|
Nenue@16
|
26 self:RegisterEvent("SCENARIO_CRITERIA_UPDATE");
|
Nenue@16
|
27 self:RegisterEvent("TRACKED_ACHIEVEMENT_UPDATE");
|
Nenue@16
|
28 self:RegisterEvent("ZONE_CHANGED_NEW_AREA");
|
Nenue@16
|
29 self:RegisterEvent("ZONE_CHANGED");
|
Nenue@16
|
30 self:RegisterEvent("QUEST_POI_UPDATE");
|
Nenue@16
|
31 self:RegisterEvent("VARIABLES_LOADED");
|
Nenue@16
|
32 self:RegisterEvent("QUEST_TURNED_IN");
|
Nenue@16
|
33 self:RegisterEvent("PLAYER_MONEY");
|
Nenue@16
|
34 ]]
|
Nenue@16
|
35
|
Nenue@19
|
36
|
Nenue@19
|
37 --- These are the bitfields used by Blizzard_ObjectiveTracker to determine which segments get parsed.
|
Nenue@19
|
38 --- They are replicated here so that plugins can make use of any securehook args involving this info.
|
Nenue@19
|
39 local OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST = OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST -- 0x0100
|
Nenue@19
|
40 local OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP = OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP -- 0x0200
|
Nenue@19
|
41 local OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE = OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE -- 0x0400
|
Nenue@19
|
42 local OBJECTIVE_TRACKER_UPDATE_MODULE_SCENARIO = OBJECTIVE_TRACKER_UPDATE_MODULE_SCENARIO -- 0x0800
|
Nenue@19
|
43 local OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT = OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT -- 0x1000
|
Nenue@19
|
44
|
Nenue@19
|
45
|
Nenue@19
|
46 local OBJECTIVE_TRACKER_UPDATE_STATIC = OBJECTIVE_TRACKER_UPDATE_STATIC -- 0x0000
|
Nenue@19
|
47 local OBJECTIVE_TRACKER_UPDATE_ALL = OBJECTIVE_TRACKER_UPDATE_ALL -- 0xFFFF
|
Nenue@19
|
48 local OBJECTIVE_TRACKER_UPDATE_ID = OBJECTIVE_TRACKER_UPDATE_ID -- 0
|
Nenue@19
|
49
|
Nenue@19
|
50 local OBJECTIVE_TRACKER_UPDATE_QUEST = OBJECTIVE_TRACKER_UPDATE_QUEST -- 0x0001
|
Nenue@19
|
51 local OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED = OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED -- 0x0002
|
Nenue@19
|
52 local OBJECTIVE_TRACKER_UPDATE_TASK_ADDED = OBJECTIVE_TRACKER_UPDATE_TASK_ADDED -- 0x0004
|
Nenue@19
|
53 local OBJECTIVE_TRACKER_UPDATE_SCENARIO = OBJECTIVE_TRACKER_UPDATE_SCENARIO -- 0x0008
|
Nenue@19
|
54 local OBJECTIVE_TRACKER_UPDATE_SCENARIO_NEW_STAGE = OBJECTIVE_TRACKER_UPDATE_SCENARIO_NEW_STAGE -- 0x0010
|
Nenue@19
|
55 local OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT = OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT -- 0x0020
|
Nenue@19
|
56 local OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED = OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED -- 0x0040
|
Nenue@19
|
57 local OBJECTIVE_TRACKER_UPDATE_SCENARIO_BONUS_DELAYED = OBJECTIVE_TRACKER_UPDATE_SCENARIO_BONUS_DELAYED -- 0x0080
|
Nenue@19
|
58
|
Nenue@19
|
59 local OBJECTIVE_TRACKER_UPDATE_REASON = OBJECTIVE_TRACKER_UPDATE_ALL -- default
|
Nenue@19
|
60 --- Used to determine which trackers are listening for money events
|
Nenue@21
|
61 mod.watchMoneyReasons = 0
|
Nenue@0
|
62
|
Nenue@19
|
63 --- Baseline defaults table; values defined in the files that they pertain to
|
Nenue@16
|
64 mod.defaults = {}
|
Nenue@10
|
65
|
Nenue@19
|
66 --- Tracker display order
|
Nenue@16
|
67 mod.orderedNames = {'Bonus', 'AutoQuest', 'Quest', 'Cheevs'}
|
Nenue@0
|
68
|
Nenue@19
|
69 --- ipairs() argument tables
|
Nenue@19
|
70 mod.orderedHandlers = setmetatable({}, {__mode = "k"})
|
Nenue@19
|
71 mod.orderedTrackers = setmetatable({}, {__mode = "k"})
|
Nenue@19
|
72 mod.indexedTrackers = setmetatable({}, {__mode = "k"})
|
Nenue@0
|
73
|
Nenue@19
|
74 --- pairs() argument tables
|
Nenue@19
|
75 mod.namedTrackers = setmetatable({}, {__mode = "k"})
|
Nenue@19
|
76
|
Nenue@19
|
77 local WRAPPER_ANCHOR_POINT = 'TOPRIGHT'
|
Nenue@19
|
78 local WRAPPER_OFFSET_X = 0
|
Nenue@19
|
79 local WRAPPER_OFFSET_Y = -200
|
Nenue@19
|
80 local WRAPPER_MAX_HEIGHT = 670
|
Nenue@19
|
81 local WRAPPER_WIDTH = 280
|
Nenue@19
|
82 local WRAPPER_HEADER_HEIGHT = 24
|
Nenue@19
|
83
|
Nenue@19
|
84 mod.defaults.Wrapper = {
|
Nenue@19
|
85 AnchorPoint = WRAPPER_ANCHOR_POINT,
|
Nenue@19
|
86 OffsetX = WRAPPER_OFFSET_X,
|
Nenue@19
|
87 OffsetY = WRAPPER_OFFSET_Y,
|
Nenue@19
|
88 Height = WRAPPER_MAX_HEIGHT,
|
Nenue@19
|
89 Width = WRAPPER_WIDTH,
|
Nenue@21
|
90 HeaderHeight = WRAPPER_HEADER_HEIGHT,
|
Nenue@21
|
91 TextSpacing = 3,
|
Nenue@21
|
92 TitleSpacing = 3,
|
Nenue@19
|
93 }
|
Nenue@21
|
94
|
Nenue@21
|
95
|
Nenue@21
|
96
|
Nenue@19
|
97 --- Tracker module definitions begin here; innards dealing with data retreival and output are defined further in
|
Nenue@21
|
98 mod.DefaultHandler = {
|
Nenue@19
|
99 previousHeight = 0,
|
Nenue@19
|
100
|
Nenue@19
|
101 name = "temp",
|
Nenue@19
|
102 displayName = "temp",
|
Nenue@19
|
103 updateReasonModule = 0xFF00,
|
Nenue@19
|
104 updateReasonEvent = 0x00FF,
|
Nenue@19
|
105
|
Nenue@19
|
106 numWatched = 0, --- number of entries being handled
|
Nenue@19
|
107 numBlocks = 0, --- number of blocks created
|
Nenue@19
|
108 actualBlocks = 0, --- number of blocks in use
|
Nenue@19
|
109
|
Nenue@19
|
110 freeBlocks = {}, --- block heap
|
Nenue@19
|
111 usedBlocks = {},
|
Nenue@19
|
112
|
Nenue@19
|
113 Info = {}, -- find data by ID
|
Nenue@19
|
114 BlockInfo = {}, -- find data by block ID
|
Nenue@19
|
115 Watched = {}, -- find watchIndex by data ID
|
Nenue@19
|
116 WatchInfo = {}, -- find data by watch index
|
Nenue@19
|
117 WatchBlock = {}, -- find block by watch index
|
Nenue@19
|
118 }
|
Nenue@19
|
119
|
Nenue@16
|
120 mod.AutoQuest = {
|
Nenue@14
|
121 name = "AutoQuest",
|
Nenue@16
|
122 displayName = "Notice",
|
Nenue@19
|
123 updateReasonModule = OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST,
|
Nenue@19
|
124 updateReasonEvents = OBJECTIVE_TRACKER_UPDATE_QUEST +
|
Nenue@19
|
125 OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED,
|
Nenue@0
|
126 }
|
Nenue@16
|
127 mod.Quest = {
|
Nenue@14
|
128 name = "Quest",
|
Nenue@14
|
129 displayName = "Quests",
|
Nenue@19
|
130 updateReasonModule = OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST,
|
Nenue@19
|
131 updateReasonEvents = OBJECTIVE_TRACKER_UPDATE_QUEST +
|
Nenue@19
|
132 OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED,
|
Nenue@0
|
133 }
|
Nenue@16
|
134 mod.Cheevs = {
|
Nenue@14
|
135 name = "Cheevs",
|
Nenue@14
|
136 displayName = "Achievements",
|
Nenue@19
|
137 updateReasonModule = OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT,
|
Nenue@19
|
138 updateReasonEvents = OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT +
|
Nenue@19
|
139 OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED,
|
Nenue@14
|
140 }
|
Nenue@16
|
141 mod.Bonus = {
|
Nenue@14
|
142 name = "Bonus",
|
Nenue@14
|
143 displayName = "Bonus Objectives",
|
Nenue@19
|
144 updateReasonModule = OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE,
|
Nenue@19
|
145 updateReasonEvents = OBJECTIVE_TRACKER_UPDATE_QUEST +
|
Nenue@19
|
146 OBJECTIVE_TRACKER_UPDATE_TASK_ADDED +
|
Nenue@19
|
147 OBJECTIVE_TRACKER_UPDATE_SCENARIO +
|
Nenue@19
|
148 OBJECTIVE_TRACKER_UPDATE_SCENARIO_NEW_STAGE +
|
Nenue@19
|
149 OBJECTIVE_TRACKER_UPDATE_SCENARIO_BONUS_DELAYED
|
Nenue@0
|
150 }
|
Nenue@0
|
151
|
Nenue@19
|
152 local Tracker_string = function (self)
|
Nenue@19
|
153 return self.name
|
Nenue@19
|
154 end
|
Nenue@19
|
155 local Tracker_call = function (self, reason)
|
Nenue@19
|
156 self:Update(reason)
|
Nenue@19
|
157 end
|
Nenue@21
|
158 local Handler_Initialize = function (self, name, index)
|
Nenue@19
|
159 print('Initializing |cFF00FFFF'..name..'|r module...')
|
Nenue@16
|
160
|
Nenue@16
|
161 local handler = setmetatable(mod[name] or {}, {
|
Nenue@19
|
162 __tostring = Tracker_string,
|
Nenue@19
|
163 __call = Tracker_call
|
Nenue@0
|
164 })
|
Nenue@16
|
165 if type(mod.orderedHandlers[index]) == 'table' then
|
Nenue@16
|
166 return mod.orderedHandlers[index]
|
Nenue@0
|
167 end
|
Nenue@0
|
168
|
Nenue@19
|
169 print('|cFFFFFF00Acquiring locals')
|
Nenue@0
|
170 local preset = {}
|
Nenue@19
|
171 for k, _ in pairs(handler) do
|
Nenue@0
|
172 preset[k] = true
|
Nenue@0
|
173 end
|
Nenue@0
|
174
|
Nenue@16
|
175
|
Nenue@19
|
176 print('|cFFFF8800Inheriting')
|
Nenue@0
|
177 for k, v in pairs(self) do
|
Nenue@0
|
178 if not handler[k] then
|
Nenue@0
|
179 if type(v) == 'table' then
|
Nenue@0
|
180 -- assume all tables to be local data; don't inherit or ref
|
Nenue@0
|
181 handler[k] = {}
|
Nenue@0
|
182 else
|
Nenue@19
|
183 handler[k] = self[k]
|
Nenue@0
|
184 end
|
Nenue@19
|
185 print('copying', k)
|
Nenue@0
|
186 end
|
Nenue@0
|
187 end
|
Nenue@0
|
188 print('|cFFFF4400'..tostring(name)..'|r:')
|
Nenue@0
|
189 for k, v in pairs(handler) do
|
Nenue@19
|
190 print(format("%32s %8s %s", (preset[k] and '|cFFFFFFFF' or '|cFFFFFF00') .. k .. '|r', type(v), tostring(v)))
|
Nenue@0
|
191 end
|
Nenue@16
|
192
|
Nenue@16
|
193 mod[name] = handler
|
Nenue@16
|
194
|
Nenue@19
|
195 local trackerName = 'Veneer'..name..'Tracker'
|
Nenue@19
|
196 local handler = mod[name]
|
Nenue@19
|
197 local frame = CreateFrame('Frame', trackerName, _G.VeneerObjectiveScroll, 'VeneerTrackerTemplate')
|
Nenue@19
|
198 frame.title:SetText(handler.displayName)
|
Nenue@19
|
199 mod.SetBlockStyle(frame, 'Tracker', 'Normal')
|
Nenue@19
|
200 handler.frame = frame
|
Nenue@19
|
201 handler.trackerName = trackerName
|
Nenue@21
|
202 handler.lines = {}
|
Nenue@19
|
203 mod.orderedTrackers[index] = frame
|
Nenue@19
|
204 mod.namedTrackers[name] = frame
|
Nenue@19
|
205 mod.indexedTrackers[handler] = frame
|
Nenue@19
|
206 print('|cFFFF0088' .. trackerName .. '|r created for |cFF00FFFF' .. handler.displayName .. '|r module')
|
Nenue@19
|
207
|
Nenue@16
|
208 mod.orderedHandlers[index] = handler
|
Nenue@0
|
209 return true
|
Nenue@0
|
210 end
|
Nenue@0
|
211
|
Nenue@21
|
212
|
Nenue@19
|
213 function mod:OnEvent (event, ...)
|
Nenue@19
|
214 local isHandled
|
Nenue@21
|
215 print('OnEvent(|cFF00FF00'.. event ..'|r):', ...)
|
Nenue@19
|
216 if ( event == "QUEST_LOG_UPDATE" ) then
|
Nenue@21
|
217 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST);
|
Nenue@21
|
218
|
Nenue@19
|
219 elseif ( event == "TRACKED_ACHIEVEMENT_UPDATE" ) then
|
Nenue@19
|
220 --AchievementObjectiveTracker_OnAchievementUpdate(...);
|
Nenue@19
|
221 mod.Cheevs:Update(OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT)
|
Nenue@21
|
222
|
Nenue@19
|
223 elseif ( event == "QUEST_ACCEPTED" ) then
|
Nenue@19
|
224 local questLogIndex, questID = ...;
|
Nenue@19
|
225 if ( IsQuestTask(questID) ) then
|
Nenue@19
|
226 mod:Update(OBJECTIVE_TRACKER_UPDATE_TASK_ADDED, questID);
|
Nenue@0
|
227 else
|
Nenue@19
|
228 if ( AUTO_QUEST_WATCH == "1" and GetNumQuestWatches() < MAX_WATCHABLE_QUESTS ) then
|
Nenue@19
|
229 AddQuestWatch(questLogIndex);
|
Nenue@19
|
230 SetSuperTrackedQuestID(questID);
|
Nenue@19
|
231 end
|
Nenue@21
|
232 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST)
|
Nenue@19
|
233 end
|
Nenue@21
|
234
|
Nenue@19
|
235 elseif ( event == "TRACKED_ACHIEVEMENT_LIST_CHANGED" ) then
|
Nenue@19
|
236 local achievementID, added = ...;
|
Nenue@19
|
237 if ( added ) then
|
Nenue@19
|
238 mod:Update(OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED, achievementID);
|
Nenue@19
|
239 else
|
Nenue@19
|
240 mod:Update(OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT);
|
Nenue@19
|
241 end
|
Nenue@21
|
242
|
Nenue@19
|
243 elseif ( event == "QUEST_WATCH_LIST_CHANGED" ) then
|
Nenue@19
|
244 local questID, added = ...;
|
Nenue@19
|
245 if ( added ) then
|
Nenue@19
|
246 if ( not IsQuestTask(questID) ) then
|
Nenue@21
|
247 mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED, questID, added);
|
Nenue@19
|
248 end
|
Nenue@19
|
249 else
|
Nenue@21
|
250 mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST, questID, added);
|
Nenue@19
|
251 end
|
Nenue@21
|
252
|
Nenue@19
|
253 elseif ( event == "QUEST_POI_UPDATE" ) then
|
Nenue@19
|
254 QuestPOIUpdateIcons();
|
Nenue@19
|
255 if ( GetCVar("trackQuestSorting") == "proximity" ) then
|
Nenue@19
|
256 SortQuestWatches();
|
Nenue@0
|
257 end
|
Nenue@0
|
258
|
Nenue@21
|
259 mod:Update(OBJECTIVE_TRACKER_UPDATE_ALL);
|
Nenue@19
|
260
|
Nenue@19
|
261 elseif ( event == "SCENARIO_CRITERIA_UPDATE" ) then
|
Nenue@19
|
262 mod:Update(OBJECTIVE_TRACKER_UPDATE_SCENARIO);
|
Nenue@19
|
263 elseif ( event == "SUPER_TRACKED_QUEST_CHANGED" ) then
|
Nenue@21
|
264 --mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST)
|
Nenue@19
|
265 elseif ( event == "ZONE_CHANGED" ) then
|
Nenue@19
|
266 local inMicroDungeon = IsPlayerInMicroDungeon();
|
Nenue@19
|
267 if ( inMicroDungeon ~= self.inMicroDungeon ) then
|
Nenue@19
|
268 if ( not WorldMapFrame:IsShown() and GetCVarBool("questPOI") ) then
|
Nenue@19
|
269 SetMapToCurrentZone(); -- update the zone to get the right POI numbers for the tracker
|
Nenue@19
|
270 end
|
Nenue@19
|
271 --SortQuestWatches();
|
Nenue@19
|
272 self.inMicroDungeon = inMicroDungeon;
|
Nenue@19
|
273 end
|
Nenue@19
|
274 elseif ( event == "QUEST_AUTOCOMPLETE" ) then
|
Nenue@19
|
275 local questId = ...;
|
Nenue@19
|
276 AddAutoQuestPopUp(questId, "COMPLETE");
|
Nenue@21
|
277 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST)
|
Nenue@19
|
278 elseif ( event == "SCENARIO_UPDATE" ) then
|
Nenue@19
|
279 local newStage = ...;
|
Nenue@19
|
280 if ( newStage ) then
|
Nenue@19
|
281 mod:Update(OBJECTIVE_TRACKER_UPDATE_SCENARIO_NEW_STAGE);
|
Nenue@19
|
282 else
|
Nenue@19
|
283 mod:Update(OBJECTIVE_TRACKER_UPDATE_SCENARIO);
|
Nenue@19
|
284 end
|
Nenue@19
|
285 elseif ( event == "ZONE_CHANGED_NEW_AREA" ) then
|
Nenue@19
|
286 if ( not WorldMapFrame:IsShown() and GetCVarBool("questPOI") ) then
|
Nenue@19
|
287 SetMapToCurrentZone(); -- update the zone to get the right POI numbers for the tracker
|
Nenue@19
|
288 end
|
Nenue@19
|
289 SortQuestWatches();
|
Nenue@21
|
290 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE)
|
Nenue@21
|
291 elseif (event == 'CRITERIA_COMPLETE') then
|
Nenue@21
|
292 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE)
|
Nenue@21
|
293
|
Nenue@19
|
294 elseif ( event == "QUEST_TURNED_IN" ) then
|
Nenue@19
|
295 local questID, xp, money = ...;
|
Nenue@19
|
296 if ( IsQuestTask(questID) ) then
|
Nenue@20
|
297 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE)
|
Nenue@21
|
298 else
|
Nenue@21
|
299
|
Nenue@21
|
300 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST)
|
Nenue@19
|
301 end
|
Nenue@19
|
302 elseif ( event == "PLAYER_MONEY" and self.watchMoneyReasons > 0 ) then
|
Nenue@21
|
303 -- only update trackers that have money counters
|
Nenue@19
|
304 mod:Update(self.watchMoneyReasons);
|
Nenue@0
|
305 end
|
Nenue@0
|
306 end
|
Nenue@0
|
307
|
Nenue@19
|
308 --- Done once per ui load
|
Nenue@19
|
309 local BlizzHooks = {
|
Nenue@19
|
310 ['AddQuestWatch'] = 'AddQuestWatch',
|
Nenue@19
|
311 ['RemoveQuestWatch'] = 'RemoveQuestWatch',
|
Nenue@19
|
312 ['AbandonQuest'] = 'AbandonQuest',
|
Nenue@19
|
313 ['AcknowledgeAutoAcceptQuest'] = 'AcknowledgeAutoAcceptQuest',
|
Nenue@19
|
314 ['AddAutoQuestPopUp'] = 'AddAutoQuestPopUp',
|
Nenue@19
|
315 ['RemoveAutoQuestPopUp'] = 'RemoveAutoQuestPopUp',
|
Nenue@19
|
316 ['AddTrackedAchievement'] = 'AddTrackedAchievement',
|
Nenue@19
|
317 ['RemoveTrackedAchievement'] = 'RemoveTrackedAchievement',
|
Nenue@19
|
318 ['SetSuperTrackedQuestID'] = 'SetSuperTrackedQuestID'
|
Nenue@19
|
319 }
|
Nenue@19
|
320 local VeneerData
|
Nenue@16
|
321 function mod:OnInitialize()
|
Nenue@19
|
322 local c = mod.Conf.Wrapper
|
Nenue@19
|
323 VeneerData = _G.VeneerData
|
Nenue@19
|
324 VeneerData.CallLog = VeneerData.CallLog or {}
|
Nenue@19
|
325 if not mod.isHooked then
|
Nenue@19
|
326 mod.isHooked = true
|
Nenue@19
|
327 for blizzFunc, veneerFunc in pairs(BlizzHooks) do
|
Nenue@19
|
328 if mod[veneerFunc] then
|
Nenue@19
|
329 hooksecurefunc(blizzFunc, mod[veneerFunc])
|
Nenue@19
|
330 else
|
Nenue@19
|
331 hooksecurefunc(blizzFunc, function(...)
|
Nenue@19
|
332 print('|cFFFF0088securehook('..tostring(blizzFunc)..')|r args:', ...)
|
Nenue@19
|
333 tinsert(VeneerData.CallLog, {blizzFunc, ...})
|
Nenue@19
|
334 end)
|
Nenue@19
|
335 end
|
Nenue@19
|
336 end
|
Nenue@19
|
337 end
|
Nenue@19
|
338 Scroller:SetScrollChild(Scroll)
|
Nenue@19
|
339 Scroller:SetWidth(c.Width)
|
Nenue@19
|
340 Scroll:SetWidth(c.Width)
|
Nenue@21
|
341 Scroll:ClearAllPoints()
|
Nenue@21
|
342 Scroll:SetPoint('TOP', Scroller, 'TOP')
|
Nenue@0
|
343 ObjectiveTrackerFrame:UnregisterAllEvents()
|
Nenue@0
|
344 ObjectiveTrackerFrame:Hide()
|
Nenue@0
|
345 end
|
Nenue@19
|
346
|
Nenue@19
|
347 --- Done any time the the minimize button is toggled up
|
Nenue@19
|
348
|
Nenue@21
|
349
|
Nenue@19
|
350 function mod:OnEnable()
|
Nenue@19
|
351 for id, name in ipairs(mod.orderedNames) do
|
Nenue@19
|
352 if not mod.orderedHandlers[id] then
|
Nenue@21
|
353 Handler_Initialize(mod.DefaultHandler, name, id)
|
Nenue@19
|
354 end
|
Nenue@19
|
355 end
|
Nenue@19
|
356
|
Nenue@21
|
357 Wrapper:RegisterEvent("CRITERIA_COMPLETE");
|
Nenue@21
|
358 Wrapper:RegisterEvent("SCENARIO_UPDATE");
|
Nenue@21
|
359 Wrapper:RegisterEvent("SCENARIO_CRITERIA_UPDATE");
|
Nenue@21
|
360 Wrapper:RegisterEvent("PLAYER_MONEY");
|
Nenue@21
|
361 Wrapper:RegisterEvent("QUEST_ACCEPTED");
|
Nenue@21
|
362 Wrapper:RegisterEvent("QUEST_AUTOCOMPLETE");
|
Nenue@21
|
363 Wrapper:RegisterEvent("QUEST_LOG_UPDATE");
|
Nenue@21
|
364 Wrapper:RegisterEvent("QUEST_POI_UPDATE");
|
Nenue@21
|
365 Wrapper:RegisterEvent("QUEST_TURNED_IN");
|
Nenue@21
|
366 Wrapper:RegisterEvent("QUEST_WATCH_LIST_CHANGED");
|
Nenue@21
|
367 Wrapper:RegisterEvent("SUPER_TRACKED_QUEST_CHANGED");
|
Nenue@21
|
368 Wrapper:RegisterEvent("TRACKED_ACHIEVEMENT_LIST_CHANGED");
|
Nenue@21
|
369 Wrapper:RegisterEvent("TRACKED_ACHIEVEMENT_UPDATE");
|
Nenue@21
|
370 Wrapper:RegisterEvent("VARIABLES_LOADED");
|
Nenue@21
|
371 Wrapper:RegisterEvent("ZONE_CHANGED_NEW_AREA");
|
Nenue@21
|
372 Wrapper:RegisterEvent("ZONE_CHANGED");
|
Nenue@21
|
373 Wrapper:SetScript('OnEvent', mod.OnEvent)
|
Nenue@19
|
374
|
Nenue@19
|
375 local c = mod.Conf.Wrapper
|
Nenue@21
|
376 --Wrapper:SetPoint(c.AnchorPoint, UIParent, c.AnchorPoint, c.OffsetX, c.OffsetY)
|
Nenue@21
|
377 --B.Conf.FramePosition[Wrapper:GetName()] = {c.AnchorPoint, c.AnchorPoint, c.OffsetX, c.OffsetY}
|
Nenue@19
|
378 Wrapper:SetWidth(c.Width)
|
Nenue@19
|
379
|
Nenue@19
|
380
|
Nenue@19
|
381 mod.InitializeWidgets()
|
Nenue@19
|
382 mod:Update()
|
Nenue@19
|
383 end
|
Nenue@19
|
384
|
Nenue@19
|
385 function mod:OnDisable()
|
Nenue@19
|
386
|
Nenue@19
|
387 end
|
Nenue@19
|
388
|
Nenue@19
|
389
|