comparison ObjectiveTracker/Frame.lua @ 31:48b3e3959a0a

- clean up method arguments
author Nenue
date Thu, 14 Apr 2016 19:39:05 -0400
parents 7583684becf4
children a3afe6c3771e
comparison
equal deleted inserted replaced
30:7583684becf4 31:48b3e3959a0a
35 35
36 local headerHeight, headerColor, headerSpacing = 16, {1,.75,0,1}, 2 36 local headerHeight, headerColor, headerSpacing = 16, {1,.75,0,1}, 2
37 local headerbg = {'VERTICAL', 1, 1, 0.5, 0.5, 1, 1, 0.5, 0} 37 local headerbg = {'VERTICAL', 1, 1, 0.5, 0.5, 1, 1, 0.5, 0}
38 local headerFont, headerSize, headerOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 14, 'OUTLINE' 38 local headerFont, headerSize, headerOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 14, 'OUTLINE'
39 39
40 local titlebg = {'HORIZONTAL', 1, 0, .7, .25, 1, 0, .7, .125} 40 local titlebg = {'HORIZONTAL', 1, 0, .7, 0, 1, 0, .7, .2}
41 local titlebg_daily = {'HORIZONTAL', 0, .7, 1, .25, 0, 1, .7, .125 } 41 local titlebg_daily = {'HORIZONTAL', 0, .7, 1, 0, 0, 1, .7, .2 }
42 local titlebg_account = {'HORIZONTAL', 0, .45, 1, .25, 0, .45, 1, .125} 42 local titlebg_account = {'HORIZONTAL', 0, .45, 1, 0, 0, .45, 1, .2}
43 local titleFont, titleSize, titleOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'OUTLINE' 43 local titleFont, titleSize, titleOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'OUTLINE'
44 44
45 local textbg = {'HORIZONTAL', 0, 0, 0, 0.4, 0, 0, 0, 0 } 45 local textbg = {'HORIZONTAL', 0, 0, 0, 0.4, 0, 0, 0, 0 }
46 local textbg_daily = {'HORIZONTAL', 0, .7, 1, .1, 0, 1, .7, .075 } 46 local textbg_daily = {'HORIZONTAL', 0, .7, 1, .1, 0, 1, .7, .075 }
47 local textbg_account = {'HORIZONTAL', 0, .45, 1, 0.4, 0, .41, 1, .085 } 47 local textbg_account = {'HORIZONTAL', 0, .45, 1, 0.4, 0, .41, 1, .085 }
51 local selectionbg = {'HORIZONTAL', 1, 1, 1, 0, 1, 1, 1, 0.225} 51 local selectionbg = {'HORIZONTAL', 1, 1, 1, 0, 1, 1, 1, 0.225}
52 local titleSpacing, textSpacing, blockSpacing = 3, 3, 1 52 local titleSpacing, textSpacing, blockSpacing = 3, 3, 1
53 local titleIndent, textIndent,selectionIndent = 2, 5, 50 53 local titleIndent, textIndent,selectionIndent = 2, 5, 50
54 54
55 local lineColors = { 55 local lineColors = {
56 text = {.5,.75,1}, 56 normal = {
57 text = {.5,.75,1},
58 },
59 completed = {
60 text = {1,0,.1}
61 },
62 failed = {
63 text = {1,0,0 }
64 },
65 autocomplete = {
66 text = {0,1,0 }
67 },
68 object = {
69 text = {0,1,1}
70 },
71 monster = {
72 text = {1,1,0}
73 },
74 item = {
75 text = {1,.25,.5}
76 }
57 } 77 }
58 78
59 local wrapperMaxWidth, wrapperMaxHeight = 270, 490 -- these are the hard bounds, actual *Height variables are changed 79 local wrapperMaxWidth, wrapperMaxHeight = 270, 490 -- these are the hard bounds, actual *Height variables are changed
60 local wrapperHeadFont, wrapperHeadSize, wrapperHeadOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'NONE' 80 local wrapperHeadFont, wrapperHeadSize, wrapperHeadOutline = [[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'NONE'
61 local wrapperPosition = {'RIGHT', UIParent, 'RIGHT', -84, 0 } 81 local wrapperPosition = {'RIGHT', UIParent, 'RIGHT', -84, 0 }
104 --- Adds the given line to the current content and advances the anchor pointer to that new line for the following call. 124 --- Adds the given line to the current content and advances the anchor pointer to that new line for the following call.
105 Default.AddLine = function(handler, block, text, attachment, template) 125 Default.AddLine = function(handler, block, text, attachment, template)
106 local print = lprint 126 local print = lprint
107 local lineIndex = block.currentLine + 1 127 local lineIndex = block.currentLine + 1
108 local line = handler:GetLine(block) 128 local line = handler:GetLine(block)
129 line.index = lineIndex
109 line:ClearAllPoints() 130 line:ClearAllPoints()
110 line:SetPoint('LEFT', block, 'LEFT', 0, 0) 131 line:SetPoint('LEFT', block, 'LEFT', 0, 0)
111 line:SetPoint('TOP', block.endPoint, 'BOTTOM', 0, -textSpacing) 132 line:SetPoint('TOP', block.endPoint, 'BOTTOM', 0, 0)
112 line:SetPoint('RIGHT', block, 'RIGHT', 0, 0) 133 line:SetPoint('RIGHT', block, 'RIGHT', 0, 0)
113 line:Show() 134 line:Show()
114 135
115 local r, g, b, a = 1, 1, 1, 1 136 print(' |cFF0088FFAddLine >>|r', block, '::', block.endPoint:GetName(),'"'.. text .. '"', attachment, template)
116 if lineColors[template] then
117 r, g, b = unpack(lineColors[template])
118 end
119
120 line.status:SetText(text) 137 line.status:SetText(text)
121 line.height = floor(line.status:GetStringHeight()+.5) + textSpacing 138 line.height = floor(line.status:GetStringHeight()+.5) + textSpacing
122 line:SetHeight(line.height) 139 line:SetHeight(line.height)
140
141 local r, g, b, a = 1, 1, 1, 1
142 if lineColors[template] then
143 r, g, b = unpack(lineColors[template].text)
144 end
123 line.status:SetTextColor(r, g, b, a) 145 line.status:SetTextColor(r, g, b, a)
124 146
125 -- For progressbar and timer lines, status text may be used as the title heading 147 -- For progressbar and timer lines, status text may be used as the title heading
126 if attachment then 148 if attachment then
127 local widgetPosition = 0 149 local widgetOffset = 0
128 attachment:SetPoint('TOP', line, 'TOP', 0, -block.attachmentHeight) 150 if text and #text >= 1 then
151 widgetOffset = line.status:GetHeight() + textSpacing
152 line.height = floor(line.status:GetStringHeight()+.5) + textSpacing + attachment.height
153 print(' |cFFFF0088doing things with captioned widget')
154 else
155 print(' |cFFFF0088doing things with a widget')
156 end
157 attachment:SetPoint('TOP', line, 'TOP', 0, -widgetOffset)
129 attachment:Show() 158 attachment:Show()
130 if text and #text >= 1 then 159 end
131 widgetPosition = line.status:GetHeight() + textSpacing 160
132 line.status:SetText(text) 161 block.attachmentHeight = block.attachmentHeight + line.height
133 line.height = floor(line.status:GetStringHeight()+.5) + textSpacing + attachment.height
134 print(' - progressbar has text, adjust')
135 end
136 else
137 print(' |cFFFF0088no attachments')
138 end
139
140 block.endIndex = line.index
141 block.attachmentHeight = block.attachmentHeight + (line.height + textSpacing)
142 print(' |cFF0088FFsetting line #'..lineIndex..' for|r', block.info.title, "\n |cFF0088FFsize:|r", line.height, 162 print(' |cFF0088FFsetting line #'..lineIndex..' for|r', block.info.title, "\n |cFF0088FFsize:|r", line.height,
143 "|cFF0088FFpoint:|r", line:GetPoint(1), "|cFF0088FFwidget:|r", (line.widget and 'Y' or 'N')) 163 "|cFF0088FFpoint:|r", line:GetPoint(1), "|cFF0088FFwidget:|r", (line.widget and 'Y' or 'N'))
144 block.currentLine = lineIndex 164 block.currentLine = lineIndex
145 block.endPoint = line 165 block.endPoint = line.statusbg -- edge used for the next block
166
167 return lineIndex
146 end 168 end
147 169
148 --- Creates or retrieves a complete line data object 170 --- Creates or retrieves a complete line data object
149 Default.GetLine = function(handler, block, lineIndex) 171 Default.GetLine = function(handler, block, lineIndex)
150 local print = lprint 172 local print = lprint
151 local blockIndex = block.index 173 local blockIndex = block.index
152 local lines = block.lines 174 local lines = block.lines
153 if not lineIndex then 175 if not lineIndex then
154 lineIndex = block.currentLine + 1 176 lineIndex = block.currentLine + 1
155 print('fetching the "next" line:', lineIndex) 177 print(' fetching the "next" line:', lineIndex)
156 else 178 else
157 print('fetching explicit offset:', lineIndex) 179 print(' fetching explicit offset:', lineIndex)
158 end 180 end
159 181
160 block.numLines = max(block.numLines, lineIndex) 182 block.numLines = max(block.numLines, lineIndex)
161 print('|cFF00FFFFnumLines:|r', block.numLines, '|cFF00FFFFcurrentLine:|r', block.currentLine) 183 print(' |cFF00FFFFposition|r', block.currentLine, '|cFF00FFFFof|r|cFFFFFF00' , block.numLines)
162 184
163 if not lines[lineIndex] then 185 if not lines[lineIndex] then
164 print(' |cFF00FF88created line #'..lineIndex..' from for '..handler.name..' block #'..blockIndex) 186 print(' |cFF00FF88created line #'..lineIndex..' from for '..handler.name..' block #'..blockIndex)
165 lines[lineIndex] = CreateFrame('Frame', 'Vn'..handler.name .. blockIndex..'ObjectiveLine'..lineIndex, block, 'VeneerTrackerObjective') 187 lines[lineIndex] = CreateFrame('Frame', 'Vn'..handler.name .. blockIndex..'ObjectiveLine'..lineIndex, block, 'VeneerTrackerObjective')
166 local line = lines[lineIndex] 188 local line = lines[lineIndex]
207 229
208 block.title:SetSpacing(c.TitleSpacing) 230 block.title:SetSpacing(c.TitleSpacing)
209 block.title:SetPoint('TOP', block, 'TOP', 0, -titleSpacing) 231 block.title:SetPoint('TOP', block, 'TOP', 0, -titleSpacing)
210 232
211 block.titlebg:SetTexture(1,1,1,1) 233 block.titlebg:SetTexture(1,1,1,1)
212 block.titlebg:SetGradientAlpha(unpack(Module.colors.default.titlebg)) 234 block.titlebg:SetGradientAlpha(unpack(titlebg))
213 block.titlebg:SetPoint('TOP', block, 'TOP', 0, 0) 235 block.titlebg:SetPoint('TOP', block, 'TOP', 0, 0)
214 block.titlebg:SetPoint('BOTTOM', block.title, 'BOTTOM', 0, -titleSpacing) 236 block.titlebg:SetPoint('BOTTOM', block.title, 'BOTTOM', 0, -titleSpacing)
215 237
216 block.status:SetSpacing(c.TextSpacing) 238 block.status:SetSpacing(c.TextSpacing)
217 block.status:SetPoint('TOP', block.titlebg, 'BOTTOM', 0, -textSpacing) 239 block.status:SetPoint('TOP', block.titlebg, 'BOTTOM', 0, -textSpacing)
218 block.status:SetPoint('LEFT', block.titlebg, 'LEFT', textIndent, 0) 240 block.status:SetPoint('LEFT', block.titlebg, 'LEFT', textIndent, 0)
219 241
220 block.statusbg:SetPoint('TOP', block.titlebg, 'BOTTOM', 0, 0) 242 block.statusbg:SetPoint('TOP', block.titlebg, 'BOTTOM', 0, 0)
221 block.statusbg:SetPoint('BOTTOM', block, 'BOTTOM', 0, 0) 243 block.statusbg:SetPoint('BOTTOM', block, 'BOTTOM', 0, 0)
222 block.statusbg:SetTexture(1,1,1,1) 244 block.statusbg:SetTexture(1,1,1,1)
223 block.statusbg:SetGradientAlpha(unpack(Module.colors.default.textbg)) 245 block.statusbg:SetGradientAlpha(unpack(textbg))
224 246
225 block.SelectionOverlay:SetGradientAlpha(unpack(Module.colors.default.selectionbg)) 247 block.SelectionOverlay:SetGradientAlpha(unpack(Module.colors.default.selectionbg))
226 block.SelectionOverlay:SetPoint('TOPLEFT', selectionIndent, 0) 248 block.SelectionOverlay:SetPoint('TOPLEFT', selectionIndent, 0)
227 block.SelectionOverlay:SetPoint('BOTTOMRIGHT') 249 block.SelectionOverlay:SetPoint('BOTTOMRIGHT')
228 250
528 end 550 end
529 -- workaround for scrollchild issue where layers fall out of sync: in this case, it's by 1 vertical pixel 551 -- workaround for scrollchild issue where layers fall out of sync: in this case, it's by 1 vertical pixel
530 --block.highlight:SetPoint('TOPLEFT', block, 'TOPLEFT', 0, 1) 552 --block.highlight:SetPoint('TOPLEFT', block, 'TOPLEFT', 0, 1)
531 --block.lowlight:SetPoint('BOTTOMLEFT', block, 'BOTTOMLEFT', 0, 1) 553 --block.lowlight:SetPoint('BOTTOMLEFT', block, 'BOTTOMLEFT', 0, 1)
532 554
533 tagPoint, tagAnchor, tagRelative = handler:AddTag(block, 'frequencyTag', tagPoint, tagAnchor, tagRelative) 555 if info.tagInfo then
534 tagPoint, tagAnchor, tagRelative = handler:AddTag(block, 'typeTag', tagPoint, tagAnchor, tagRelative) 556 tagPoint, tagAnchor, tagRelative = handler:AddTag(block, 'frequencyTag', tagPoint, tagAnchor, tagRelative)
535 tagPoint, tagAnchor, tagRelative = handler:AddTag(block, 'completionTag', tagPoint, tagAnchor, tagRelative) 557 tagPoint, tagAnchor, tagRelative = handler:AddTag(block, 'typeTag', tagPoint, tagAnchor, tagRelative)
536 558 tagPoint, tagAnchor, tagRelative = handler:AddTag(block, 'completionTag', tagPoint, tagAnchor, tagRelative)
559 end
537 return block 560 return block
538 end 561 end
539 562
540 563
541 564
543 --- Does the main iterations for populating block content. 566 --- Does the main iterations for populating block content.
544 -- Hooked by corresponding handler functions where additional details need to be sorted. 567 -- Hooked by corresponding handler functions where additional details need to be sorted.
545 Default.UpdateObjectives = function(handler, block) 568 Default.UpdateObjectives = function(handler, block)
546 local print = lprint 569 local print = lprint
547 local info = block.info 570 local info = block.info
548 print(' |cFF00FF00default objectives routine', block:GetName()) 571 print('|cFF00FF00default.objectives', block:GetName())
572 -- reset the starting positions
549 block.endPoint = block.titlebg 573 block.endPoint = block.titlebg
550 block.attachmentHeight = 0 574 block.attachmentHeight = 0
551 block.currentLine = 0 575 block.currentLine = 0
552 576
553 -- reset the starting positions 577 local displayObjectiveHeader = false
578
554 block.attachmentHeight = 0 579 block.attachmentHeight = 0
555 block.endPoint = block.titlebg 580 local text, attachment, template
556 local completionScore, completionMax = 0, 0 581 if info.statusKey and (Devian and Devian.InWorkspace()) then
557 local displayObjectiveHeader = false 582 handler:AddLine(block, info.statusKey, nil)
558 583 end
559 584
560 --- The first line is going to be used no matter what, so it is hard-pulled. 585
561 -- It also ensures that we're in the right position for cleaning up the leftover lines.
562
563 block.attachmentHeight = 0
564
565 local text, attachment
566 if info.description and #info.description >= 1 then 586 if info.description and #info.description >= 1 then
567 print(' |cFF00FFFF header line:|r', info.description) 587 print(' |cFF00FFFF header line:|r', info.description)
568 text = info.description 588 text = info.description
569 handler:AddLine(block, text, nil) 589 handler:AddLine(block, text, nil)
570 end 590 end
571 591
572 if (info.isComplete or info.numObjectives == 0) and info.completionText then 592 if (info.isComplete or info.numObjectives == 0) and info.completionText then
573 print(' overriding line #1 for completion text:', info.completionText) 593 print(' overriding line #1 for completion text:', info.completionText)
574 text = info.completionText 594 text = info.completionText
575 Module.AddLine(block, text, nil) 595 handler:AddLine(block, text, nil)
576 else 596 else
577 if info.objectives then 597 if info.objectives then
578 for i, data in ipairs(info.objectives) do 598 for i, data in ipairs(info.objectives) do
579 local line = handler:GetLine(block) 599 local line = handler:GetLine(block)
580 displayObjectiveHeader = true 600 displayObjectiveHeader = true
581 line.height = 0 601 line.height = 0
582 text, attachment = handler:UpdateLine(block, line, data) 602 text, attachment, template = handler:UpdateLine(block, line, data)
583 print(' |cFF88FF00#', i, data.type, text) 603 print(' |cFF88FF00#', i, data.type, text)
584 handler:AddLine(block, text, attachment) 604 handler:AddLine(block, text, attachment, template)
585 605
586 end 606 end
587 end 607 end
588 end 608 end
589 609
593 block.lines[i]:ClearAllPoints() 613 block.lines[i]:ClearAllPoints()
594 block.lines[i]:Hide() 614 block.lines[i]:Hide()
595 end 615 end
596 616
597 if block.currentLine > 0 then 617 if block.currentLine > 0 then
598 block.attachmentHeight = block.attachmentHeight + textSpacing * 2 618 block.attachmentHeight = block.attachmentHeight + textSpacing
599 print(' |cFF00FF00attachment:', block.attachmentHeight) 619 print(' |cFF00FF00attachment:', block.attachmentHeight)
600 end 620 end
601
602
603 if debug then
604 for i, region in ipairs(block.debug) do
605 for j = 1, region:GetNumPoints() do
606 local _, target = region:GetPoint(j)
607 if target:IsVisible() then
608 region:Hide()
609 else
610 region:Show()
611 end
612 end
613 end
614 end
615
616 block.completionScore = completionScore / completionMax
617 end 621 end
618 622
619 623
620 --- Module-specific display variables 624 --- Module-specific display variables
621 -- * height - height of whatever display widget is involved in conveying the task 625 -- * height - height of whatever display widget is involved in conveying the task
622 -- * money - boolean that determines listening for money events or not 626 -- * money - boolean that determines listening for money events or not
623 -- * progress - number ranging 0 to 2 indicating none/partial/full completion respectively 627 -- * progress - number ranging 0 to 2 indicating none/partial/full completion respectively
624 628
625 629
626 Default.UpdateLine = function(block, line) 630 Default.UpdateLine = function(handler, block, line, data)
627 if line.finished then 631 if line.finished then
628 line.progress = 2 632 line.progress = 2
629 elseif line.quantity > 0 then 633 elseif line.quantity > 0 then
630 line.progress = 1 634 line.progress = 1
631 else 635 else
632 line.progress = 0 636 line.progress = 0
633 end 637 end
634 return line.displayText, line.widget 638 return data.text, line.widget, 'normal'
635 end 639 end
636 ---------- 640 ----------
637 --- Top level methods 641 --- Top level methods
638 642
639 --- Queue any active item buttons for update for that frame 643 --- Queue any active item buttons for update for that frame