annotate ObjectiveCore.lua @ 21:d5ee940de273

use hardcoded aesthetic manipulations over loadstring cramming
author Nenue
date Fri, 08 Apr 2016 06:12:05 -0400
parents 6bd2102d340b
children 9b3fa734abff
rev   line source
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