comparison ObjectiveTracker/ObjectiveFrame.lua @ 25:4b3da1b221de v1.0-beta

- distinction between all possible types of values for the 'isComplete' field - style polish applied to title headers - clickable regions altered to somewhat match those of the blizzard objectives tracker, for more world frame space and quicker user familiarity
author Nenue
date Wed, 13 Apr 2016 11:20:09 -0400
parents 66b927b46776
children
comparison
equal deleted inserted replaced
24:66b927b46776 25:4b3da1b221de
32 local scrollWidth, scrollHeight 32 local scrollWidth, scrollHeight
33 local previousBlock 33 local previousBlock
34 local currentBlock 34 local currentBlock
35 --- todo: source these from config 35 --- todo: source these from config
36 local itemButtonSize, itemButtonSpacing = 36, 1 36 local itemButtonSize, itemButtonSpacing = 36, 1
37 local titleFont, textFont = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Regular.ttf]] 37
38 local titleSize, textSize = 16, 16 38 local headerHeight, headerColor, headerSpacing = 16, {1,1,1,1}, 2
39 local titlebg, textbg = {'HORIZONTAL', 1, 0, .7, .25, 1, 0, .7, .125}, {'HORIZONTAL', 0, 0, 0, 0.4, 0, 0, 0, 0 } 39 local headerbg = {'VERTICAL', 1, 1, 0.5, 0.5, 1, 1, 0.5, 0}
40 local titlebg_daily, textbg_daily = {'HORIZONTAL', 0, .7, 1, .25, 0, 1, .7, .125}, {'HORIZONTAL', 0, .7, 1, .1, 0, 1, .7, .075 } 40 local headerFont, headerSize, headerOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 14, 'OUTLINE'
41 local textbg_account,titlebg_account = {'HORIZONTAL', 0, .45, 1, .25, 0, .45, 1, .125}, {'HORIZONTAL', 0, .45, 1, 0.4, 0, .41, 1, .085 } 41
42 local titlebg = {'HORIZONTAL', 1, 0, .7, .25, 1, 0, .7, .125}
43 local titlebg_daily = {'HORIZONTAL', 0, .7, 1, .25, 0, 1, .7, .125 }
44 local titlebg_account = {'HORIZONTAL', 0, .45, 1, .25, 0, .45, 1, .125}
45 local titleFont, titleSize, titleOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'OUTLINE'
46
47 local textbg = {'HORIZONTAL', 0, 0, 0, 0.4, 0, 0, 0, 0 }
48 local textbg_daily = {'HORIZONTAL', 0, .7, 1, .1, 0, 1, .7, .075 }
49 local textbg_account = {'HORIZONTAL', 0, .45, 1, 0.4, 0, .41, 1, .085 }
50 local textFont, textSize, textOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Regular.ttf]], 16, 'OUTLINE'
51
52
42 local selectionbg = {'HORIZONTAL', 1, 1, 1, 0, 1, 1, 1, 0.225} 53 local selectionbg = {'HORIZONTAL', 1, 1, 1, 0, 1, 1, 1, 0.225}
43 local titleOutline, textOutline = "OUTLINE", "OUTLINE"
44 local titleSpacing, textSpacing, blockSpacing = 3, 3, 1 54 local titleSpacing, textSpacing, blockSpacing = 3, 3, 1
45 local titleIndent, textIndent,selectionIndent = 2, 5, 50 55 local titleIndent, textIndent,selectionIndent = 2, 5, 50
56
46 local wrapperMaxWidth, wrapperMaxHeight = 270, 490 -- these are the hard bounds, actual *Height variables are changed 57 local wrapperMaxWidth, wrapperMaxHeight = 270, 490 -- these are the hard bounds, actual *Height variables are changed
47 local wrapperHeadFont, wrapperHeadSize, wrapperHeadOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'NONE' 58 local wrapperHeadFont, wrapperHeadSize, wrapperHeadOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'NONE'
48 local headerFont, headerSize, headerHeight = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 18, 24
49 local headerOutline, headerColor, headerSpacing = 'OUTLINE', {1,1,1,1}, 2
50 local wrapperPosition = {'RIGHT', UIParent, 'RIGHT', -84, 0 } 59 local wrapperPosition = {'RIGHT', UIParent, 'RIGHT', -84, 0 }
51 local rewardSize = 32 60 local rewardSize = 32
52 local oprint = B.print('Objectives') 61 local oprint = B.print('Objectives')
53 local bprint = B.print('Block') 62 local bprint = B.print('Block')
54 local tprint = B.print('Tracker') 63 local tprint = B.print('Tracker')
175 184
176 block.Select = handler.Select 185 block.Select = handler.Select
177 block.Open = handler.Open 186 block.Open = handler.Open
178 block.Remove = handler.Remove 187 block.Remove = handler.Remove
179 block.Link = handler.Link 188 block.Link = handler.Link
180 block:SetScript('OnMouseUp', handler.OnMouseUp) 189 block.clickZone:SetScript('OnMouseUp', function(self, ...) handler.OnMouseUp(block, ...) end)
181 block:SetScript('OnMouseDown', handler.OnMouseDown) 190 block.clickZone:SetScript('OnMouseDown', function(self, ...) handler.OnMouseDown(block, ...) end)
182 block.attachmentHeight = 0 191 block.attachmentHeight = 0
183 block:ClearAllPoints() 192 block:ClearAllPoints()
184 193
185 B.SetConfigLayers(block) 194 B.SetConfigLayers(block)
186 195
228 block.attachmentHeight = 0 237 block.attachmentHeight = 0
229 block.endPoint = block.titlebg 238 block.endPoint = block.titlebg
230 local completionScore, completionMax = 0, 0 239 local completionScore, completionMax = 0, 0
231 local displayObjectiveHeader = false 240 local displayObjectiveHeader = false
232 241
233 if info.description and #info.description >= 1 then
234 print(' |cFF00FFFF header line:|r', info.description)
235 block.status:SetText(info.description)
236 displayObjectiveHeader = true
237 end
238 242
239 --- The first line is going to be used no matter what, so it is hard-pulled. 243 --- The first line is going to be used no matter what, so it is hard-pulled.
240 -- It also ensures that we're in the right position for cleaning up the leftover lines. 244 -- It also ensures that we're in the right position for cleaning up the leftover lines.
241 local lineIndex = 1 245 local lineIndex = 1
242 local line = T.GetLine(handler, block, lineIndex) 246 local line = T.GetLine(handler, block, lineIndex)
243 247
244 block.numLines = 0 248 block.numLines = 0
245 block.attachmentHeight = 0 249 block.attachmentHeight = 0
246 if info.isComplete then 250
247 print(' overriding line #1 for a completed block') 251 if info.description and #info.description >= 1 then
252 print(' |cFF00FFFF header line:|r', info.description)
253 line.status:SetText(info.description)
254 line.height = floor(line.status:GetStringHeight()+.5) + textSpacing
248 if line.widget then 255 if line.widget then
249 line.widget:Hide() 256 line.widget:Hide()
250 end 257 end
258 T.AddLine(block, line)
259
260 lineIndex = lineIndex + 1
261 line = T.GetLine(handler, block, lineIndex)
262 end
263
264 if (info.isComplete == true or info.isComplete == nil) and info.completionText then
265 print(' overriding line #1 for completion text:', info.completionText)
251 line.status:SetText(info.completionText) 266 line.status:SetText(info.completionText)
252 line.height = floor(line.status:GetHeight()+.5) + textSpacing 267 line.height = floor(line.status:GetStringHeight()+.5) + textSpacing
268 if line.widget then
269 line.widget:Hide()
270 end
253 T.AddLine(block, line) 271 T.AddLine(block, line)
254 else 272 else
255 if info.objectives then 273 if info.objectives then
256 for i, data in ipairs(info.objectives) do 274 for i, data in ipairs(info.objectives) do
257 print(' |cFF88FF00#', i, data.type, data.text) 275 print(' |cFF88FF00#', i, data.type, data.text)
496 514
497 Default.Update = function (self, reason, ...) 515 Default.Update = function (self, reason, ...)
498 local print = tprint 516 local print = tprint
499 local tracker = self.frame 517 local tracker = self.frame
500 local blockIndex = 0 518 local blockIndex = 0
501 local trackerHeight = floor(tracker.titlebg:GetHeight()+.5) 519 local trackerHeight = headerHeight
520
521 tracker.title:SetFont(headerFont, headerSize, headerOutline)
522 tracker.titlebg:SetHeight(headerHeight)
523 tracker.title:SetTextColor(unpack(headerColor))
524 --tracker.titlebg:SetGradientAlpha(unpack(headerbg))
502 525
503 self.currentAnchor = tracker.titlebg 526 self.currentAnchor = tracker.titlebg
504 local numWatched = self:GetNumWatched() 527 local numWatched = self:GetNumWatched()
505 local numBlocks = self.numBlocks 528 local numBlocks = self.numBlocks
506 local actualBlocks = 0 529 local actualBlocks = 0
541 self.actualBlocks = actualBlocks 564 self.actualBlocks = actualBlocks
542 565
543 tracker.previousHeight = tracker.height 566 tracker.previousHeight = tracker.height
544 if numBlocks >= 1 then 567 if numBlocks >= 1 then
545 previousBlock = nil 568 previousBlock = nil
546 569 if tracker.isEmpty then
570 tracker.headerFade:Play()
571 tracker.isEmpty = nil
572 end
547 tracker.height = trackerHeight 573 tracker.height = trackerHeight
548 tracker:SetHeight(tracker.height) 574 tracker:SetHeight(tracker.height)
549 tracker:Show() 575 tracker:Show()
550 576 else
551 577 tracker.isEmpty = true
552 else
553 tracker.height = 0 578 tracker.height = 0
554 tracker:Hide() 579 tracker:Hide()
555 end 580 end
556 581
557 return tracker.numWatched, tracker.numAll 582 return tracker.numWatched, tracker.numAll