comparison ObjectiveTracker/DefaultTracker.lua @ 40:03ed70f846de

- move block accessors into a new file - define a tMove function for reconciling the free/used tables as needed - when retrieving an old block frame, confirm ID still matches; resolves multiple watch items on one block - stop any animations when a block is freed; resolves stuck flare graphics
author Nenue
date Sun, 24 Apr 2016 14:15:25 -0400
parents 92534dc793f2
children
comparison
equal deleted inserted replaced
39:92534dc793f2 40:03ed70f846de
68 68
69 if handler.numWatched >= 1 then 69 if handler.numWatched >= 1 then
70 hasStuff = true 70 hasStuff = true
71 currentPosition = currentPosition + 1 71 currentPosition = currentPosition + 1
72 Default.AddTracker(handler, frame, currentPosition) 72 Default.AddTracker(handler, frame, currentPosition)
73 73 frame.wasEmpty = nil
74 else 74 else
75 frame:ClearAllPoints()
76 frame:SetPoint('BOTTOM', Scroll, 'BOTTOM', 0, 0)
77 frame.destinationOffset = 0 75 frame.destinationOffset = 0
78 frame:Hide() 76 if not frame.wasEmpty and not frame.fadeOut:IsPlaying() then
77 frame.fadeOut:Play()
78 end
79 frame.wasEmpty = true 79 frame.wasEmpty = true
80 end 80 end
81 end 81 end
82 82
83 -- do these whenever there is content or content is being added 83 -- do these whenever there is content or content is being added
90 90
91 Default.UpdateTracker = function (handler, reason, id, isNew) 91 Default.UpdateTracker = function (handler, reason, id, isNew)
92 local print = handler.print 92 local print = handler.print
93 local frame = handler.frame 93 local frame = handler.frame
94 local blockIndex = 0 94 local blockIndex = 0
95 print('UpdateTracker', handler.name, reason) 95 print('MODULE:'..handler.name, 'message:', reason, 'id:', id, (isNew and '|cFF88FF88' or '|cFF555555')..'isNew|r')
96 handler.updateReason = reason 96 handler.updateReason = reason
97 local numWatched, numAll, watchTable = handler:GetNumWatched(id, isNew) 97 local numWatched, numAll, watchTable = handler:GetNumWatched(id, isNew)
98 98
99 if numWatched >= 1 then 99 if numWatched >= 1 then
100 if watchTable then 100 if watchTable then
118 print(' |cFF'..handler.internalColor..'finished|r @', blockIndex) 118 print(' |cFF'..handler.internalColor..'finished|r @', blockIndex)
119 break -- done with quest stuff 119 break -- done with quest stuff
120 end 120 end
121 end 121 end
122 122
123
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))
128 127
144 143
145 block.handler = handler 144 block.handler = handler
146 block.info = info 145 block.info = info
147 146
148 info.blockIndex = index 147 info.blockIndex = index
148 local keyInfo
149 if info.id then 149 if info.id then
150 print(' storing id', info.id, 'for', block:GetName()) 150 keyInfo = (keyInfo and (keyInfo..', ') or '') .. 'InfoBlock[' .. info.id .. '] = *' .. block:GetName():gsub('%D', '')
151 handler.InfoBlock[info.id] = block 151 handler.InfoBlock[info.id] = block
152 end 152 end
153 if info.logIndex then 153 if info.logIndex then
154 print(' storing logIndex', info.logIndex, 'for', block:GetName()) 154 keyInfo = (keyInfo and (keyInfo..', ') or '') .. 'LogBlock[' .. info.logIndex .. '] = ' .. block:GetName():gsub('%D', '')
155 handler.LogBlock[info.logIndex] = block 155 handler.LogBlock[info.logIndex] = block
156 end 156 end
157 if info.watchIndex then 157 if info.watchIndex then
158 print(' storing watchIndex', info.watchIndex, 'for', block:GetName()) 158 keyInfo = (keyInfo and (keyInfo..', ') or '') .. 'WatchBlock[' .. info.watchIndex .. '] = ' .. block:GetName():gsub('%D', '')
159 handler.WatchBlock[info.watchIndex] = block 159 handler.WatchBlock[info.watchIndex] = block
160 end 160 end
161 if keyInfo then print(' assigned', keyInfo) end
161 handler.BlockInfo[index] = info 162 handler.BlockInfo[index] = info
162 block.endPoint = block.titlebg 163 block.endPoint = block.titlebg
163 block.attachmentHeight = 0 164 block.attachmentHeight = 0
164 block.currentLine = 0 165 block.currentLine = 0
165 handler:UpdateObjectives(block, block.schema) 166 local attachments, override_schema = handler:UpdateObjectives(block, block.schema)
166 167
167 block.title:SetText(info.title) 168 block.title:SetText(info.title)
168 169
169 if info.specialItem and not info.itemButton then 170 if info.specialItem and not info.itemButton then
170 print(' - |cFF00FFFFgenerating item button for info set') 171 print(' - |cFF00FFFFgenerating item button for info set')
173 --info.itemButton = nil 174 --info.itemButton = nil
174 end 175 end
175 176
176 local tagPoint, tagAnchor, tagRelative, x, y = 'TOPRIGHT', block, 'TOPRIGHT', -2, -2 177 local tagPoint, tagAnchor, tagRelative, x, y = 'TOPRIGHT', block, 'TOPRIGHT', -2, -2
177 178
178 local numCurrency = 0
179 for i, rewardTile in ipairs(block.rewardTile) do
180 if info.rewardInfo and info.rewardInfo[i] then
181 local reward = info.rewardInfo[i]
182 --rewardTile:SetPoint(tagPoint, tagAnchor, tagRelative, -2, -2)
183 rewardTile:SetTexture(reward.texture)
184 rewardTile:Show()
185
186 print('updating reward tile #'.. i, reward.type, reward.count, reward.text, reward.texture)
187 if reward.count and reward.count > 1 then
188 block.rewardLabel[i]:SetText(reward.count)
189 block.rewardLabel[i]:Show()
190 end
191
192 rewardTile:ClearAllPoints()
193 rewardTile:SetPoint(tagPoint, tagAnchor, tagRelative, x, y)
194 tagPoint, tagAnchor, tagRelative, x, y = 'TOPRIGHT', rewardTile, 'TOPLEFT', -2, 0
195 else
196 rewardTile:Hide()
197 block.rewardLabel[i]:Hide()
198 end
199 end
200 179
201 if info.selected then 180 if info.selected then
202 block.SelectionOverlay:Show() 181 block.SelectionOverlay:Show()
203 else 182 else
204 block.SelectionOverlay:Hide() 183 block.SelectionOverlay:Hide()
222 block_schema = block_schema or block.schema 201 block_schema = block_schema or block.schema
223 local info = block.info 202 local info = block.info
224 print(' |cFF00FF00default.objectives', block:GetName()) 203 print(' |cFF00FF00default.objectives', block:GetName())
225 -- reset the starting positions 204 -- reset the starting positions
226 local text, attachment, template 205 local text, attachment, template
227 206 local numAttachments = 0
228 207
229 if info.objectives and displayObjectives then 208 if info.objectives and displayObjectives then
230 for i, data in ipairs(info.objectives) do 209 for i, data in ipairs(info.objectives) do
231 text, attachment, template = handler:UpdateLine(block, data) 210 text, attachment, template = handler:UpdateLine(block, data)
232 if text or attachment then 211 if text or attachment then
233 local line = handler:GetLine(block) 212 local line = handler:GetLine(block)
234 line.height = 0 213 line.height = 0
235 print(' |cFF88FF00#', i, data.type, text, attachment) 214 print(' |cFF88FF00#', i, data.type, text, attachment)
236 handler:AddLine(block, text, attachment, template) 215 handler:AddLine(block, text, attachment, template)
237 end 216 end
217 if attachment then
218 numAttachments = numAttachments + 1
219 end
238 end 220 end
239 end 221 end
240 222
241 if block.currentLine < block.numLines then 223 if block.currentLine < block.numLines then
242 print(' - cull', block.currentLine, block.numLines) 224 print(' - cull', block.currentLine, block.numLines)
249 231
250 if block.currentLine > 0 then 232 if block.currentLine > 0 then
251 block.attachmentHeight = block.attachmentHeight 233 block.attachmentHeight = block.attachmentHeight
252 print(' |cFF00FF00attachment:', block.attachmentHeight) 234 print(' |cFF00FF00attachment:', block.attachmentHeight)
253 end 235 end
254 return block_schema 236 return numAttachments, block_schema
255 end 237 end
256 238
257 Default.UpdateLine = function(handler, block, data) 239 Default.UpdateLine = function(handler, block, data)
258 return block.info.description, nil, 'default' 240 return block.info.description, nil, 'default'
259 end 241 end