comparison 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
comparison
equal deleted inserted replaced
20:6bd2102d340b 21:d5ee940de273
56 local OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED = OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED -- 0x0040 56 local OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED = OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED -- 0x0040
57 local OBJECTIVE_TRACKER_UPDATE_SCENARIO_BONUS_DELAYED = OBJECTIVE_TRACKER_UPDATE_SCENARIO_BONUS_DELAYED -- 0x0080 57 local OBJECTIVE_TRACKER_UPDATE_SCENARIO_BONUS_DELAYED = OBJECTIVE_TRACKER_UPDATE_SCENARIO_BONUS_DELAYED -- 0x0080
58 58
59 local OBJECTIVE_TRACKER_UPDATE_REASON = OBJECTIVE_TRACKER_UPDATE_ALL -- default 59 local OBJECTIVE_TRACKER_UPDATE_REASON = OBJECTIVE_TRACKER_UPDATE_ALL -- default
60 --- Used to determine which trackers are listening for money events 60 --- Used to determine which trackers are listening for money events
61 mod.MoneyReasons = 0 61 mod.watchMoneyReasons = 0
62 62
63 --- Baseline defaults table; values defined in the files that they pertain to 63 --- Baseline defaults table; values defined in the files that they pertain to
64 mod.defaults = {} 64 mod.defaults = {}
65 65
66 --- Tracker display order 66 --- Tracker display order
85 AnchorPoint = WRAPPER_ANCHOR_POINT, 85 AnchorPoint = WRAPPER_ANCHOR_POINT,
86 OffsetX = WRAPPER_OFFSET_X, 86 OffsetX = WRAPPER_OFFSET_X,
87 OffsetY = WRAPPER_OFFSET_Y, 87 OffsetY = WRAPPER_OFFSET_Y,
88 Height = WRAPPER_MAX_HEIGHT, 88 Height = WRAPPER_MAX_HEIGHT,
89 Width = WRAPPER_WIDTH, 89 Width = WRAPPER_WIDTH,
90 HeaderHeight = WRAPPER_HEADER_HEIGHT 90 HeaderHeight = WRAPPER_HEADER_HEIGHT,
91 } 91 TextSpacing = 3,
92 TitleSpacing = 3,
93 }
94
95
96
92 --- Tracker module definitions begin here; innards dealing with data retreival and output are defined further in 97 --- Tracker module definitions begin here; innards dealing with data retreival and output are defined further in
93 mod.DefaultTracker = { 98 mod.DefaultHandler = {
94 previousHeight = 0, 99 previousHeight = 0,
95 100
96 name = "temp", 101 name = "temp",
97 displayName = "temp", 102 displayName = "temp",
98 updateReasonModule = 0xFF00, 103 updateReasonModule = 0xFF00,
148 return self.name 153 return self.name
149 end 154 end
150 local Tracker_call = function (self, reason) 155 local Tracker_call = function (self, reason)
151 self:Update(reason) 156 self:Update(reason)
152 end 157 end
153 158 local Handler_Initialize = function (self, name, index)
154 local Tracker_Initialize = function (self, name, index)
155 print('Initializing |cFF00FFFF'..name..'|r module...') 159 print('Initializing |cFF00FFFF'..name..'|r module...')
156 160
157 local handler = setmetatable(mod[name] or {}, { 161 local handler = setmetatable(mod[name] or {}, {
158 __tostring = Tracker_string, 162 __tostring = Tracker_string,
159 __call = Tracker_call 163 __call = Tracker_call
193 local frame = CreateFrame('Frame', trackerName, _G.VeneerObjectiveScroll, 'VeneerTrackerTemplate') 197 local frame = CreateFrame('Frame', trackerName, _G.VeneerObjectiveScroll, 'VeneerTrackerTemplate')
194 frame.title:SetText(handler.displayName) 198 frame.title:SetText(handler.displayName)
195 mod.SetBlockStyle(frame, 'Tracker', 'Normal') 199 mod.SetBlockStyle(frame, 'Tracker', 'Normal')
196 handler.frame = frame 200 handler.frame = frame
197 handler.trackerName = trackerName 201 handler.trackerName = trackerName
202 handler.lines = {}
198 mod.orderedTrackers[index] = frame 203 mod.orderedTrackers[index] = frame
199 mod.namedTrackers[name] = frame 204 mod.namedTrackers[name] = frame
200 mod.indexedTrackers[handler] = frame 205 mod.indexedTrackers[handler] = frame
201 print('|cFFFF0088' .. trackerName .. '|r created for |cFF00FFFF' .. handler.displayName .. '|r module') 206 print('|cFFFF0088' .. trackerName .. '|r created for |cFF00FFFF' .. handler.displayName .. '|r module')
202 207
203 mod.orderedHandlers[index] = handler 208 mod.orderedHandlers[index] = handler
204 return true 209 return true
205 end 210 end
206 211
212
207 function mod:OnEvent (event, ...) 213 function mod:OnEvent (event, ...)
208 local isHandled 214 local isHandled
209 print('|cFF00FF00'.. event ..'|r', ...) 215 print('OnEvent(|cFF00FF00'.. event ..'|r):', ...)
210 if ( event == "QUEST_LOG_UPDATE" ) then 216 if ( event == "QUEST_LOG_UPDATE" ) then
211 mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST); 217 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST);
218
212 elseif ( event == "TRACKED_ACHIEVEMENT_UPDATE" ) then 219 elseif ( event == "TRACKED_ACHIEVEMENT_UPDATE" ) then
213 --AchievementObjectiveTracker_OnAchievementUpdate(...); 220 --AchievementObjectiveTracker_OnAchievementUpdate(...);
214 mod.Cheevs:Update(OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT) 221 mod.Cheevs:Update(OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT)
222
215 elseif ( event == "QUEST_ACCEPTED" ) then 223 elseif ( event == "QUEST_ACCEPTED" ) then
216 local questLogIndex, questID = ...; 224 local questLogIndex, questID = ...;
217 if ( IsQuestTask(questID) ) then 225 if ( IsQuestTask(questID) ) then
218 mod:Update(OBJECTIVE_TRACKER_UPDATE_TASK_ADDED, questID); 226 mod:Update(OBJECTIVE_TRACKER_UPDATE_TASK_ADDED, questID);
219 else 227 else
220 if ( AUTO_QUEST_WATCH == "1" and GetNumQuestWatches() < MAX_WATCHABLE_QUESTS ) then 228 if ( AUTO_QUEST_WATCH == "1" and GetNumQuestWatches() < MAX_WATCHABLE_QUESTS ) then
221 AddQuestWatch(questLogIndex); 229 AddQuestWatch(questLogIndex);
222 SetSuperTrackedQuestID(questID); 230 SetSuperTrackedQuestID(questID);
223 end 231 end
224 end 232 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST)
233 end
234
225 elseif ( event == "TRACKED_ACHIEVEMENT_LIST_CHANGED" ) then 235 elseif ( event == "TRACKED_ACHIEVEMENT_LIST_CHANGED" ) then
226 local achievementID, added = ...; 236 local achievementID, added = ...;
227 if ( added ) then 237 if ( added ) then
228 mod:Update(OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED, achievementID); 238 mod:Update(OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT_ADDED, achievementID);
229 else 239 else
230 mod:Update(OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT); 240 mod:Update(OBJECTIVE_TRACKER_UPDATE_ACHIEVEMENT);
231 end 241 end
242
232 elseif ( event == "QUEST_WATCH_LIST_CHANGED" ) then 243 elseif ( event == "QUEST_WATCH_LIST_CHANGED" ) then
233 local questID, added = ...; 244 local questID, added = ...;
234 if ( added ) then 245 if ( added ) then
235 if ( not IsQuestTask(questID) ) then 246 if ( not IsQuestTask(questID) ) then
236 mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED, questID); 247 mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST_ADDED, questID, added);
237 end 248 end
238 else 249 else
239 mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST); 250 mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST, questID, added);
240 end 251 end
252
241 elseif ( event == "QUEST_POI_UPDATE" ) then 253 elseif ( event == "QUEST_POI_UPDATE" ) then
242 QuestPOIUpdateIcons(); 254 QuestPOIUpdateIcons();
243 if ( GetCVar("trackQuestSorting") == "proximity" ) then 255 if ( GetCVar("trackQuestSorting") == "proximity" ) then
244 SortQuestWatches(); 256 SortQuestWatches();
245 end 257 end
246 258
247 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST); 259 mod:Update(OBJECTIVE_TRACKER_UPDATE_ALL);
248 260
249 elseif ( event == "SCENARIO_CRITERIA_UPDATE" ) then 261 elseif ( event == "SCENARIO_CRITERIA_UPDATE" ) then
250 mod:Update(OBJECTIVE_TRACKER_UPDATE_SCENARIO); 262 mod:Update(OBJECTIVE_TRACKER_UPDATE_SCENARIO);
251 elseif ( event == "SUPER_TRACKED_QUEST_CHANGED" ) then 263 elseif ( event == "SUPER_TRACKED_QUEST_CHANGED" ) then
252 mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST) 264 --mod:Update(OBJECTIVE_TRACKER_UPDATE_QUEST)
253 elseif ( event == "ZONE_CHANGED" ) then 265 elseif ( event == "ZONE_CHANGED" ) then
254 local inMicroDungeon = IsPlayerInMicroDungeon(); 266 local inMicroDungeon = IsPlayerInMicroDungeon();
255 if ( inMicroDungeon ~= self.inMicroDungeon ) then 267 if ( inMicroDungeon ~= self.inMicroDungeon ) then
256 if ( not WorldMapFrame:IsShown() and GetCVarBool("questPOI") ) then 268 if ( not WorldMapFrame:IsShown() and GetCVarBool("questPOI") ) then
257 SetMapToCurrentZone(); -- update the zone to get the right POI numbers for the tracker 269 SetMapToCurrentZone(); -- update the zone to get the right POI numbers for the tracker
260 self.inMicroDungeon = inMicroDungeon; 272 self.inMicroDungeon = inMicroDungeon;
261 end 273 end
262 elseif ( event == "QUEST_AUTOCOMPLETE" ) then 274 elseif ( event == "QUEST_AUTOCOMPLETE" ) then
263 local questId = ...; 275 local questId = ...;
264 AddAutoQuestPopUp(questId, "COMPLETE"); 276 AddAutoQuestPopUp(questId, "COMPLETE");
265 mod:Update(OBJECTIVE_TRACKER_UPDATE_STATIC) 277 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST)
266 elseif ( event == "SCENARIO_UPDATE" ) then 278 elseif ( event == "SCENARIO_UPDATE" ) then
267 local newStage = ...; 279 local newStage = ...;
268 if ( newStage ) then 280 if ( newStage ) then
269 mod:Update(OBJECTIVE_TRACKER_UPDATE_SCENARIO_NEW_STAGE); 281 mod:Update(OBJECTIVE_TRACKER_UPDATE_SCENARIO_NEW_STAGE);
270 else 282 else
273 elseif ( event == "ZONE_CHANGED_NEW_AREA" ) then 285 elseif ( event == "ZONE_CHANGED_NEW_AREA" ) then
274 if ( not WorldMapFrame:IsShown() and GetCVarBool("questPOI") ) then 286 if ( not WorldMapFrame:IsShown() and GetCVarBool("questPOI") ) then
275 SetMapToCurrentZone(); -- update the zone to get the right POI numbers for the tracker 287 SetMapToCurrentZone(); -- update the zone to get the right POI numbers for the tracker
276 end 288 end
277 SortQuestWatches(); 289 SortQuestWatches();
290 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE)
291 elseif (event == 'CRITERIA_COMPLETE') then
292 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE)
293
278 elseif ( event == "QUEST_TURNED_IN" ) then 294 elseif ( event == "QUEST_TURNED_IN" ) then
279 local questID, xp, money = ...; 295 local questID, xp, money = ...;
280 if ( IsQuestTask(questID) ) then 296 if ( IsQuestTask(questID) ) then
281 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE) 297 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_BONUS_OBJECTIVE)
298 else
299
300 mod:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST)
282 end 301 end
283 elseif ( event == "PLAYER_MONEY" and self.watchMoneyReasons > 0 ) then 302 elseif ( event == "PLAYER_MONEY" and self.watchMoneyReasons > 0 ) then
303 -- only update trackers that have money counters
284 mod:Update(self.watchMoneyReasons); 304 mod:Update(self.watchMoneyReasons);
285 end 305 end
286 end 306 end
287 307
288 --- Done once per ui load 308 --- Done once per ui load
315 end 335 end
316 end 336 end
317 end 337 end
318 Scroller:SetScrollChild(Scroll) 338 Scroller:SetScrollChild(Scroll)
319 Scroller:SetWidth(c.Width) 339 Scroller:SetWidth(c.Width)
320 Scroll:SetPoint('TOPLEFT', Scroller, 'TOPLEFT')
321 Scroll:SetWidth(c.Width) 340 Scroll:SetWidth(c.Width)
341 Scroll:ClearAllPoints()
342 Scroll:SetPoint('TOP', Scroller, 'TOP')
322 ObjectiveTrackerFrame:UnregisterAllEvents() 343 ObjectiveTrackerFrame:UnregisterAllEvents()
323 ObjectiveTrackerFrame:Hide() 344 ObjectiveTrackerFrame:Hide()
324 end 345 end
325 346
326 --- Done any time the the minimize button is toggled up 347 --- Done any time the the minimize button is toggled up
348
327 349
328 function mod:OnEnable() 350 function mod:OnEnable()
329 for id, name in ipairs(mod.orderedNames) do 351 for id, name in ipairs(mod.orderedNames) do
330 if not mod.orderedHandlers[id] then 352 if not mod.orderedHandlers[id] then
331 Tracker_Initialize(mod.DefaultTracker, name, id) 353 Handler_Initialize(mod.DefaultHandler, name, id)
332 end 354 end
333 end 355 end
334 356
335 for event, func in pairs(mod) do 357 Wrapper:RegisterEvent("CRITERIA_COMPLETE");
336 if type(func) == 'function' and event:match('^[A-Z_]+$') then 358 Wrapper:RegisterEvent("SCENARIO_UPDATE");
337 print('|cFFFF44FFlistening to', event) 359 Wrapper:RegisterEvent("SCENARIO_CRITERIA_UPDATE");
338 Wrapper:RegisterEvent(event) 360 Wrapper:RegisterEvent("PLAYER_MONEY");
339 end 361 Wrapper:RegisterEvent("QUEST_ACCEPTED");
340 end 362 Wrapper:RegisterEvent("QUEST_AUTOCOMPLETE");
363 Wrapper:RegisterEvent("QUEST_LOG_UPDATE");
364 Wrapper:RegisterEvent("QUEST_POI_UPDATE");
365 Wrapper:RegisterEvent("QUEST_TURNED_IN");
366 Wrapper:RegisterEvent("QUEST_WATCH_LIST_CHANGED");
367 Wrapper:RegisterEvent("SUPER_TRACKED_QUEST_CHANGED");
368 Wrapper:RegisterEvent("TRACKED_ACHIEVEMENT_LIST_CHANGED");
369 Wrapper:RegisterEvent("TRACKED_ACHIEVEMENT_UPDATE");
370 Wrapper:RegisterEvent("VARIABLES_LOADED");
371 Wrapper:RegisterEvent("ZONE_CHANGED_NEW_AREA");
372 Wrapper:RegisterEvent("ZONE_CHANGED");
373 Wrapper:SetScript('OnEvent', mod.OnEvent)
341 374
342 local c = mod.Conf.Wrapper 375 local c = mod.Conf.Wrapper
343 Wrapper:SetPoint(c.AnchorPoint, UIParent, c.AnchorPoint, c.OffsetX, c.OffsetY) 376 --Wrapper:SetPoint(c.AnchorPoint, UIParent, c.AnchorPoint, c.OffsetX, c.OffsetY)
344 B.Conf.FramePosition[Wrapper:GetName()] = {c.AnchorPoint, c.AnchorPoint, c.OffsetX, c.OffsetY} 377 --B.Conf.FramePosition[Wrapper:GetName()] = {c.AnchorPoint, c.AnchorPoint, c.OffsetX, c.OffsetY}
345 Wrapper:SetWidth(c.Width) 378 Wrapper:SetWidth(c.Width)
346 379
347 380
348 mod.InitializeWidgets() 381 mod.InitializeWidgets()
349 mod:Update() 382 mod:Update()