Mercurial > wow > buffalo2
comparison ObjectiveTracker/DefaultTracker.lua @ 38:1f8f9cc3d956
- module integration brought up to speed with current frame management structure
author | Nenue |
---|---|
date | Thu, 21 Apr 2016 11:36:41 -0400 |
parents | e84d645c8ab8 |
children | 92534dc793f2 |
comparison
equal
deleted
inserted
replaced
37:e84d645c8ab8 | 38:1f8f9cc3d956 |
---|---|
3 -- @project-revision@ @project-hash@ | 3 -- @project-revision@ @project-hash@ |
4 -- @file-revision@ @file-hash@ | 4 -- @file-revision@ @file-hash@ |
5 -- Created: 4/17/2016 7:33 AM | 5 -- Created: 4/17/2016 7:33 AM |
6 local B = select(2,...).frame | 6 local B = select(2,...).frame |
7 local T = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame') | 7 local T = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame') |
8 local Devian = Devian | |
8 local _G, ipairs, max, min, unpack, floor, pairs, tostring, type, band = _G, ipairs, max, min, unpack, floor, pairs, tostring, type, bit.band | 9 local _G, ipairs, max, min, unpack, floor, pairs, tostring, type, band = _G, ipairs, max, min, unpack, floor, pairs, tostring, type, bit.band |
9 local IsResting, UnitXP, UnitXPMax, GetXPExhaustion, tinsert, tremove = IsResting, UnitXP, UnitXPMax, GetXPExhaustion, table.insert, table.remove | 10 local IsResting, UnitXP, UnitXPMax, GetXPExhaustion, tinsert, tremove = IsResting, UnitXP, UnitXPMax, GetXPExhaustion, table.insert, table.remove |
10 local UnitLevel, IsQuestWatched, UIParent = UnitLevel, IsQuestWatched, UIParent | 11 local UnitLevel, IsQuestWatched, UIParent = UnitLevel, IsQuestWatched, UIParent |
11 local GetAutoQuestPopUp, GetQuestLogCompletionText = GetAutoQuestPopUp, GetQuestLogCompletionText | 12 local GetAutoQuestPopUp, GetQuestLogCompletionText = GetAutoQuestPopUp, GetQuestLogCompletionText |
12 local PERCENTAGE_STRING, GetQuestProgressBarPercent = PERCENTAGE_STRING, GetQuestProgressBarPercent | 13 local PERCENTAGE_STRING, GetQuestProgressBarPercent = PERCENTAGE_STRING, GetQuestProgressBarPercent |
32 | 33 |
33 --- Placing the Update functions here since they shouldn't be messing with schema stuff | 34 --- Placing the Update functions here since they shouldn't be messing with schema stuff |
34 local currentPosition, anchorFrame, anchorPoint | 35 local currentPosition, anchorFrame, anchorPoint |
35 --- Positioning and stuff | 36 --- Positioning and stuff |
36 local tick = 0 | 37 local tick = 0 |
37 local firstUpdate = true | 38 local initReason = OBJECTIVE_TRACKER_UPDATE_ALL |
39 local requiresInit | |
38 function T:Update (reason, ...) | 40 function T:Update (reason, ...) |
39 if not B.Conf.VeneerObjectiveWrapper.enabled then | 41 if not B.Conf.VeneerObjectiveWrapper.enabled then |
40 return | 42 return |
41 end | 43 end |
42 | |
43 tick = tick + 1 | 44 tick = tick + 1 |
44 if firstUpdate or not reason then | |
45 reason = _G.OBJECTIVE_TRACKER_UPDATE_ALL | |
46 end | |
47 | |
48 local print = tprint | 45 local print = tprint |
49 local hasStuff = false | 46 local hasStuff = false |
50 local insertingStuff = false | 47 local insertingStuff = false |
51 | 48 |
49 if initReason then | |
50 reason = initReason | |
51 initReason = nil | |
52 elseif not reason then | |
53 reason = OBJECTIVE_TRACKER_UPDATE_ALL | |
54 end | |
52 print(format('|cFFBB0066Update:|r |cFFFF%04X%d|r ', tick, lshift(reason, 4)), reason, ...) | 55 print(format('|cFFBB0066Update:|r |cFFFF%04X%d|r ', tick, lshift(reason, 4)), reason, ...) |
53 currentPosition = 0 | 56 currentPosition = 0 |
54 | 57 |
55 for id, handler in pairs(T.orderedHandlers) do | 58 for id, handler in pairs(T.orderedHandlers) do |
56 local frame = handler.frame | 59 local frame = handler.frame |
57 | 60 |
58 | 61 print('') |
59 if band(reason, handler.updateReasonModule + handler.updateReasonEvents) > 0 then | 62 if band(reason, handler.updateReasonModule + handler.updateReasonEvents) > 0 then |
60 insertingStuff = handler:UpdateTracker(reason, ...) | 63 insertingStuff = handler:UpdateTracker(reason, ...) |
61 else | 64 else |
62 print(' |cFFFF4400Update:|r skipping',handler.name) | 65 print(' |cFFFF4400Update:|r skipping',handler.name) |
63 end | 66 end |
80 if hasStuff or insertingStuff then | 83 if hasStuff or insertingStuff then |
81 T:FinishWrapper() | 84 T:FinishWrapper() |
82 end | 85 end |
83 Quest.GetClosest() | 86 Quest.GetClosest() |
84 --T.UpdateActionButtons(reason) | 87 --T.UpdateActionButtons(reason) |
85 if firstUpdate then | |
86 firstUpdate = nil | |
87 end | |
88 end | 88 end |
89 | 89 |
90 Default.UpdateTracker = function (handler, reason, id, isNew) | 90 Default.UpdateTracker = function (handler, reason, id, isNew) |
91 local print = tprint | 91 local print = handler.print |
92 local frame = handler.frame | 92 local frame = handler.frame |
93 local blockIndex = 0 | 93 local blockIndex = 0 |
94 | 94 print('UpdateTracker', handler.name, reason) |
95 print(format(' |cFFFF8800UpdateTracker|r(%s): %s', handler.name, reason)) | |
96 handler.updateReason = reason | 95 handler.updateReason = reason |
97 local numWatched, numAll, watchTable = handler:GetNumWatched(id, isNew) | 96 local numWatched, numAll, watchTable = handler:GetNumWatched(id, isNew) |
98 | 97 |
99 if numWatched >= 1 then | 98 if numWatched >= 1 then |
100 if watchTable then | 99 if watchTable then |
101 print('|cFF00FF00 n ID Obj wID Log Blk') | 100 print(' WatchList', ' n ID Obj wID Log Blk') |
102 for i, w in ipairs(watchTable) do | 101 for i, w in ipairs(watchTable) do |
103 print(format(' %2d => %6d %3d %3d %3s %s', i, w.id, w.numObjectives, w.watchIndex, (w.logIndex or ''), (handler.InfoBlock[w.id] and handler.InfoBlock[w.id]:GetName() or ''))) | 102 print(' WatchList', format('%2d => %6d %3d %3d %3s %s', i, w.id, w.numObjectives, w.watchIndex, (w.logIndex or ''), (handler.InfoBlock[w.id] and handler.InfoBlock[w.id]:GetName() or ''))) |
104 end | 103 end |
105 end | 104 end |
106 end | 105 end |
107 | 106 |
108 handler.numWatched = numWatched | 107 handler.numWatched = numWatched |
113 for blockIndex = 1, numWatched do | 112 for blockIndex = 1, numWatched do |
114 local currentBlock = handler:UpdateBlock(blockIndex, id, isNew) | 113 local currentBlock = handler:UpdateBlock(blockIndex, id, isNew) |
115 if currentBlock then | 114 if currentBlock then |
116 handler:AddBlock(currentBlock) | 115 handler:AddBlock(currentBlock) |
117 else | 116 else |
118 print(' |cFFFF9900finished|r @', blockIndex) | 117 print(' |cFF'..handler.internalColor..'finished|r @', blockIndex) |
119 break -- done with quest stuff | 118 break -- done with quest stuff |
120 end | 119 end |
121 end | 120 end |
122 | 121 |
123 | 122 |
124 local numBlocks = handler.numBlocks | 123 local numBlocks = handler.numBlocks |
125 local used = handler.usedBlocks | 124 local used = handler.usedBlocks |
126 local free = handler.freeBlocks | 125 local free = handler.freeBlocks |
127 print(format(' (%s): |cFFFF8800%04X|r --- blocks |cFFFF8800%d|r, (used/free: |cFFFF8800%d|r/|cFFFF8800%d|r)', handler.name, band(reason, handler.updateReasonModule + handler.updateReasonEvents, reason), numBlocks, #used, #free)) | 126 print(format('#### %s ## |cFFFF8800%04X|r --- blocks |cFFFF8800%d|r, (used/free: |cFFFF8800%d|r/|cFFFF8800%d|r)', handler.name, band(reason, handler.updateReasonModule + handler.updateReasonEvents, reason), numBlocks, #used, #free)) |
127 | |
128 return numWatched, numAll | 128 return numWatched, numAll |
129 end | 129 end |
130 | 130 |
131 Default.UpdateBlock = function (handler, index) | 131 Default.UpdateBlock = function (handler, index) |
132 local print = bprint | 132 local print = bprint |
156 if info.watchIndex then | 156 if info.watchIndex then |
157 print(' storing watchIndex', info.watchIndex, 'for', block:GetName()) | 157 print(' storing watchIndex', info.watchIndex, 'for', block:GetName()) |
158 handler.WatchBlock[info.watchIndex] = block | 158 handler.WatchBlock[info.watchIndex] = block |
159 end | 159 end |
160 handler.BlockInfo[index] = info | 160 handler.BlockInfo[index] = info |
161 handler:UpdateObjectives(block) | 161 block.endPoint = block.titlebg |
162 block.attachmentHeight = 0 | |
163 block.currentLine = 0 | |
164 handler:UpdateObjectives(block, block.schema) | |
162 | 165 |
163 block.title:SetText(info.title) | 166 block.title:SetText(info.title) |
164 | |
165 print(' |cFFFFFF00height|r:', block.height) | |
166 print(' |cFF00FFFF)|r -> ', block, block:GetHeight()) | |
167 | |
168 block:Show() | |
169 | 167 |
170 if info.specialItem and not info.itemButton then | 168 if info.specialItem and not info.itemButton then |
171 print(' - |cFF00FFFFgenerating item button for info set') | 169 print(' - |cFF00FFFFgenerating item button for info set') |
172 info.itemButton = T.SetItemButton(block, info) | 170 info.itemButton = T.SetItemButton(block, info) |
173 else | 171 else |
212 end | 210 end |
213 | 211 |
214 if info.schema then | 212 if info.schema then |
215 block.schema = info.schema | 213 block.schema = info.schema |
216 end | 214 end |
217 | |
218 if info.statusKey and (Devian and Devian.InWorkspace()) then | |
219 block.debugText:SetText(tostring(info.statusKey) .. ' ' .. tostring(block.posIndex) .. ' '.. tostring(info.logIndex)) | |
220 block.debugText:Show() | |
221 end | |
222 return block | 215 return block |
223 end | 216 end |
224 | 217 |
225 Default.UpdateObjectives = function(handler, block) | 218 Default.UpdateObjectives = function(handler, block, block_schema, displayObjectives) |
226 local print = lprint | 219 local print = lprint |
227 local block_schema = block.schema | 220 displayObjectives = displayObjectives or true |
221 block_schema = block_schema or block.schema | |
228 local info = block.info | 222 local info = block.info |
229 print(' |cFF00FF00default.objectives', block:GetName()) | 223 print(' |cFF00FF00default.objectives', block:GetName()) |
230 -- reset the starting positions | 224 -- reset the starting positions |
231 block.endPoint = block.titlebg | |
232 block.attachmentHeight = 0 | |
233 block.currentLine = 0 | |
234 | |
235 local displayObjectiveHeader = false | |
236 | |
237 block.attachmentHeight = 0 | |
238 local text, attachment, template | 225 local text, attachment, template |
239 | 226 |
240 | 227 |
241 if info.description and #info.description >= 1 then | 228 if info.objectives and displayObjectives then |
242 print(' |cFF00FFFF header line:|r', info.description) | 229 for i, data in ipairs(info.objectives) do |
243 text = info.description | 230 text, attachment, template = handler:UpdateLine(block, data) |
244 handler:AddLine(block, text, nil) | 231 if text or attachment then |
245 end | |
246 | |
247 if (info.isComplete or info.numObjectives == 0) and info.completionText then | |
248 print(' overriding line #1 for completion text:', info.completionText) | |
249 text = info.completionText | |
250 handler:AddLine(block, text, nil, 'completed') | |
251 else | |
252 if info.objectives then | |
253 for i, data in ipairs(info.objectives) do | |
254 local line = handler:GetLine(block) | 232 local line = handler:GetLine(block) |
255 displayObjectiveHeader = true | |
256 line.height = 0 | 233 line.height = 0 |
257 text, attachment, template = handler:UpdateLine(block, line, data) | |
258 print(' |cFF88FF00#', i, data.type, text, attachment) | 234 print(' |cFF88FF00#', i, data.type, text, attachment) |
259 handler:AddLine(block, text, attachment, template) | 235 handler:AddLine(block, text, attachment, template) |
260 | |
261 end | 236 end |
262 end | 237 end |
263 end | 238 end |
264 | 239 |
265 if block.currentLine < block.numLines then | 240 if block.currentLine < block.numLines then |
276 print(' |cFF00FF00attachment:', block.attachmentHeight) | 251 print(' |cFF00FF00attachment:', block.attachmentHeight) |
277 end | 252 end |
278 return block_schema | 253 return block_schema |
279 end | 254 end |
280 | 255 |
281 Default.UpdateLine = function(handler, block, line, data) | 256 Default.UpdateLine = function(handler, block, data) |
282 return data.text, line.widget, 'normal' | 257 return block.info.description, nil, 'default' |
283 end | 258 end |
284 | 259 |
285 Default.Select = function(handler, block) | 260 Default.Select = function(handler, block) |
286 T:Update() | 261 T:Update() |
287 end | 262 end |