comparison ObjectiveUI.lua @ 19:605e8f0e46db

ObjectiveCore / Style / Events / Frame - polishing the execution path for better performance - make use of the Blizzard_ObjectiveTracker bitfield values to ensure compatibility in possible secure hooks - avoid full updates when possible (using said bitfield values to indicate targeted sections) - extreme streamlining of event handling layout: specific reason updates are invoked from API hooks; broader updates are invoked by when the event listener catches something vague like 'QUEST_LOG_UPDATE'
author Nenue
date Wed, 06 Apr 2016 07:38:35 -0400
parents 880828018bf4
children d5ee940de273
comparison
equal deleted inserted replaced
18:d1812fb10ae6 19:605e8f0e46db
4 -- @file-revision@ @file-hash@ 4 -- @file-revision@ @file-hash@
5 -- Created: 3/29/2016 7:07 PM 5 -- Created: 3/29/2016 7:07 PM
6 local B = select(2,...).frame 6 local B = select(2,...).frame
7 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame') 7 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
8 local print = B.print('Objectives') 8 local print = B.print('Objectives')
9 local Tracker, AutoQuest, Quest, Cheevs = mod.Tracker, mod.AutoQuest, mod.Quest, mod.Cheevs 9 local DefaultTracker, AutoQuest, Quest, Cheevs = mod.DefaultTracker, mod.AutoQuest, mod.Quest, mod.Cheevs
10 local itemButtonSize, itemButtonSpacing = 36, 1 10 local itemButtonSize, itemButtonSpacing = 36, 1
11 local tremove, tremovebyval = table.remove, table.removebyval 11 local tremove, tremovebyval = table.remove, table.removebyval
12 12
13 -------------------------------------------------------------------- 13 --------------------------------------------------------------------
14 --- Functions responsible for: 14 --- Functions responsible for:
15 --- - UI interactions that propagate to the BlizzardUI (sending RemoveQuestWatch() on remove quest action) 15 --- - UI interactions that propagate to the BlizzardUI (sending RemoveQuestWatch() on remove quest action)
16 --- - 16 --- -
17 -------------------------------------------------------------------- 17 --------------------------------------------------------------------
18 18
19 Tracker.Select = function(self) end 19 DefaultTracker.Select = function(self) end
20 Tracker.Open = function(self) end 20 DefaultTracker.Open = function(self) end
21 Tracker.Remove = function(self) end 21 DefaultTracker.Remove = function(self) end
22 Tracker.Report = function(self) 22 DefaultTracker.Report = function(self)
23 print('Stats:', self.numWatched,'items tracked,', self.numBlocks,'blocks assigned.') 23 print('Stats:', self.numWatched,'items tracked,', self.numBlocks,'blocks assigned.')
24 end 24 end
25 25
26 Tracker.OnMouseUp = function(self, button) 26 DefaultTracker.OnMouseUp = function(self, button)
27 print(self.handler.name, self.mainStyle, self.subStyle) 27 print(self.handler.name, self.mainStyle, self.subStyle)
28 if button == 'LeftButton' then 28 if button == 'LeftButton' then
29 if IsModifiedClick("CHATLINK") and ChatEdit_GetActiveWindow() then 29 if IsModifiedClick("CHATLINK") and ChatEdit_GetActiveWindow() then
30 self:Link() 30 self:Link()
31 elseif IsModifiedClick("QUESTWATCHTOGGLE") then 31 elseif IsModifiedClick("QUESTWATCHTOGGLE") then
41 self.modQuestWatch = nil 41 self.modQuestWatch = nil
42 self:SetStyle('TrackerBlock', self.handler.name, self.mainStyle, self.subStyle) 42 self:SetStyle('TrackerBlock', self.handler.name, self.mainStyle, self.subStyle)
43 print('|cFFFF8800'..tostring(self:GetName())..':MouseUp()|r') 43 print('|cFFFF8800'..tostring(self:GetName())..':MouseUp()|r')
44 end 44 end
45 45
46 Tracker.OnMouseDown = function(self, button) 46 DefaultTracker.OnMouseDown = function(self, button)
47 self:SetStyle('TrackerBlock', self.handler.name, 'MouseDown') 47 self:SetStyle('TrackerBlock', self.handler.name, 'MouseDown')
48 print(IsModifiedClick("CHATLINK"), IsModifiedClick("QUESTWATCHTOGGLE")) 48 print(IsModifiedClick("CHATLINK"), IsModifiedClick("QUESTWATCHTOGGLE"))
49 print(self.info.title) 49 print(self.info.title)
50 end 50 end
51
51 52
52 AutoQuest.Select = function(self) 53 AutoQuest.Select = function(self)
53 if self.info.popupType == 'OFFER' then 54 if self.info.popupType == 'OFFER' then
54 ShowQuestOffer(self.info.questIndex) 55 ShowQuestOffer(self.info.questIndex)
55 else 56 else
56 ShowQuestComplete(self.info.questIndex) 57 ShowQuestComplete(self.info.questIndex)
57 end 58 end
58 RemoveAutoQuestPopUp(self.info.questID) 59 RemoveAutoQuestPopUp(self.info.questID)
59 end 60 end
60 61
61 Quest.Select = function(self) -- remote quests will get listed here as well, so their turn-in data needs to be checked 62 Quest.Select = function(self)
62 if AutoQuest.Info[self.info.questID] then 63 if self.info.isAutoComplete and self.info.isComplete then
63 AutoQuest.Select(self) 64 ShowQuestComplete(self.info.questLogIndex)
64 else 65 else
65 SetSuperTrackedQuestID(self.info.questID) 66 SetSuperTrackedQuestID(self.info.questID)
66 end 67 end
67 mod.UpdateWrapper()
68 end 68 end
69 69
70 Quest.Link = function(self) 70 Quest.Link = function(self)
71 local questLink = GetQuestLink(block.questLogIndex); 71 local questLink = GetQuestLink(block.questLogIndex);
72 if ( questLink ) then 72 if ( questLink ) then
90 end 90 end
91 Cheevs.Remove = function(self) 91 Cheevs.Remove = function(self)
92 RemoveTrackedAchievement(self.info.cheevID) 92 RemoveTrackedAchievement(self.info.cheevID)
93 end 93 end
94 Cheevs.OnMouseUp = function(self, button) 94 Cheevs.OnMouseUp = function(self, button)
95 Tracker.OnMouseUp(self, button) 95 DefaultTracker.OnMouseUp(self, button)
96 end 96 end
97 Cheevs.Link = function(self) 97 Cheevs.Link = function(self)
98 local achievementLink = GetAchievementLink(self.info.cheevID); 98 local achievementLink = GetAchievementLink(self.info.cheevID);
99 if ( achievementLink ) then 99 if ( achievementLink ) then
100 ChatEdit_InsertLink(achievementLink); 100 ChatEdit_InsertLink(achievementLink);