comparison Modules/BuffFrame.lua @ 71:6f8661094643

- obtains veneer objects through a common function and track them as a unified table.
author Nenue
date Tue, 23 Aug 2016 06:35:08 -0400
parents 1b0d7bcd252e
children 95ed343c3a42
comparison
equal deleted inserted replaced
70:1b0d7bcd252e 71:6f8661094643
10 - TempEnchant info returns relative values only, and they don't synchronize with aura events 10 - TempEnchant info returns relative values only, and they don't synchronize with aura events
11 - BuffButtons can only be hidden/shown by blizzcode, so functions doing that have to be accounted for 11 - BuffButtons can only be hidden/shown by blizzcode, so functions doing that have to be accounted for
12 --]] 12 --]]
13 13
14 local BUFF_BUTTON_SIZE = 48 14 local BUFF_BUTTON_SIZE = 48
15 local BUFF_BUTTON_SPACING_H = 4
16 local BUFF_BUTTON_SPACING_V = 14
15 local BUFF_PROGRESS_SIZE = 4 17 local BUFF_PROGRESS_SIZE = 4
16 local BUFF_PROGRESS_INSET = 1 18 local BUFF_PROGRESS_INSET = 1
17 local BUFF_BUTTON_ZOOM = .15 19 local BUFF_BUTTON_ZOOM = .15
18 local BORDER_SIZE_L = 1 20 local BORDER_SIZE_L = 0
19 local BORDER_SIZE_R = 1 21 local BORDER_SIZE_R = 0
20 local BORDER_SIZE_U = 4 22 local BORDER_SIZE_U = 4
21 local BORDER_SIZE_D = 1 23 local BORDER_SIZE_D = 0
22 24
23 25
24 local plugin = CreateFrame('Frame', 'VeneerBuffFrame', UIParent) 26 local plugin = CreateFrame('Frame', 'VeneerBuffFrame', UIParent)
25 local vn, print = LibStub("LibKraken").register(VeneerController, plugin) 27 local vn, print = LibStub("LibKraken").register(VeneerController, plugin)
26 local tprint = DEVIAN_WORKSPACE and function(...) _G.print('Timer', ...) end or function() end 28 local tprint = DEVIAN_WORKSPACE and function(...) _G.print('Timer', ...) end or function() end
62 local pendingFrames = {} 64 local pendingFrames = {}
63 local anchors = {} 65 local anchors = {}
64 local expirationCache = {} 66 local expirationCache = {}
65 local visibility = {} 67 local visibility = {}
66 68
67 local VeneerButton_OnHide = function(self)
68 self:SetScript('OnDragStart', self.StartMoving)
69 self:SetScript('OnDragStop', self.StopMovingOrSizing)
70 self:SetMovable(false)
71 self:EnableMouse(false)
72 self:RegisterForDrag('LeftButton')
73 end
74 local VeneerButton_OnShow = function(self)
75 self:SetScript('OnDragStart', self.StartMoving)
76 self:SetScript('OnDragStop', self.StopMovingOrSizing)
77 self:SetMovable(false)
78 self:EnableMouse(false)
79 self:RegisterForDrag('LeftButton')
80 end
81 69
82 70
83 local GetVeneer = function(frame) 71 local GetVeneer = function(frame)
84 local name = frame:GetName() 72 local name = frame:GetName()
85 if not (_G[name..'Veneer']) then 73 if not (_G[name..'Veneer']) then
86 print('|cFF88FF00Creating', name,'Veneer') 74 print('|cFF88FF00Creating', name,'Veneer')
87 local veneer = CreateFrame('Frame', name..'Veneer', UIParent) 75 local veneer = vn.GetVeneer(frame)
88 local id = frame:GetID() 76 local id = frame:GetID()
89 veneer:SetAllPoints(frame)
90 veneer:SetParent(frame)
91 veneer.bg = veneer:CreateTexture()
92 veneer.bg:SetColorTexture(1,1,1,0)
93 veneer.bg:SetAllPoints(veneer)
94 veneer.bg:Show()
95 veneer:Hide()
96 veneer:EnableMouse(false)
97
98 veneer:SetScript('OnShow', VeneerButton_OnShow)
99 veneer:SetScript('OnHide', VeneerButton_OnHide)
100 77
101 local position = tonumber(name:match("%d")) 78 local position = tonumber(name:match("%d"))
102 if position == 1 then 79 if position == 1 then
103 veneer:Show() 80 veneer:Show()
104 end 81 end
105 82
106 veneer.progress = CreateFrame('Frame', name .. 'VeneerProgress', veneer) 83 veneer.progress = CreateFrame('Frame', name .. 'VeneerProgress', veneer)
107 veneer.progress:Hide() 84 veneer.progress:Hide()
108 veneer.progress:SetPoint('BOTTOMLEFT', veneer, 'BOTTOMLEFT', 3, -6) 85 veneer.progress:SetPoint('BOTTOMLEFT', veneer, 'BOTTOMLEFT', 0, -6)
109 veneer.progress:SetPoint('TOPRIGHT', veneer, 'BOTTOMRIGHT', -3, -1) 86 veneer.progress:SetPoint('TOPRIGHT', veneer, 'BOTTOMRIGHT', 0, -1)
110 veneer.progress:SetHeight(BUFF_PROGRESS_SIZE + (BUFF_PROGRESS_INSET * 2)) 87 veneer.progress:SetHeight(BUFF_PROGRESS_SIZE + (BUFF_PROGRESS_INSET * 2))
111 88
112 veneer.progress.bg = veneer.progress:CreateTexture(nil, 'BACKGROUND') 89 veneer.progress.bg = veneer.progress:CreateTexture(nil, 'BACKGROUND')
113 veneer.progress.bg:SetColorTexture(0,0,0,1) 90 veneer.progress.bg:SetColorTexture(0,0,0,1)
114 veneer.progress.bg:SetAllPoints(veneer.progress) 91 veneer.progress.bg:SetAllPoints(veneer.progress)
196 if border then 173 if border then
197 border:Hide() 174 border:Hide()
198 hooksecurefunc(border, 'SetVertexColor', function(frame, r, g, b, a) 175 hooksecurefunc(border, 'SetVertexColor', function(frame, r, g, b, a)
199 frame:Hide() 176 frame:Hide()
200 print('|cFF0088FFborder:SetVertexColor|r', r,g,b,a) 177 print('|cFF0088FFborder:SetVertexColor|r', r,g,b,a)
201 veneer.border:SetColorTexture(r,g,b,a) 178 veneer.progress.fg:SetColorTexture(r,g,b,a)
202 end) 179 end)
203 180
204 local color = DebuffTypeColor["none"] 181 local color = DebuffTypeColor["none"]
205 if aurasCache[frame] and aurasCache[frame][5] then 182 if aurasCache[frame] and aurasCache[frame][5] then
206 color = DebuffTypeColor[aurasCache[frame][5]] 183 color = DebuffTypeColor[aurasCache[frame][5]]
207 end 184 end
208 185
209 veneer.border:SetColorTexture(color.r,color.g,color.b) 186 veneer.progress.fg:SetColorTexture(color.r,color.g,color.b)
210 end 187 end
211 if duration then 188 if duration then
212 duration:ClearAllPoints() 189 duration:ClearAllPoints()
213 --duration:SetPoint('TOP', frame, 'BOTTOM', 0, -8) 190 --duration:SetPoint('TOP', frame, 'BOTTOM', 0, -8)
214 --duration:SetFontObject(VeneerNumberFont) 191 --duration:SetFontObject(VeneerNumberFont)
390 367
391 local lastBuff, topBuff 368 local lastBuff, topBuff
392 for i = 1, BUFF_ACTUAL_DISPLAY do 369 for i = 1, BUFF_ACTUAL_DISPLAY do
393 local buff = _G['BuffButton'..i] 370 local buff = _G['BuffButton'..i]
394 if buff then 371 if buff then
395 if i == 1 then 372 if mod(i,12) == 1 then
396 buff:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', -120, -6) 373 if i == 1 then
397 topBuff = buff 374 buff:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', -120, -6)
398 elseif mod(i,12) == 1 then 375 else
399 buff:SetPoint('TOPRIGHT', topBuff, 'BOTTOMRIGHT', 0, -14) 376 buff:SetPoint('TOPRIGHT', topBuff, 'BOTTOMRIGHT', 0, -BUFF_BUTTON_SPACING_V)
377 end
400 topBuff = buff 378 topBuff = buff
401 else 379 else
402 buff:SetPoint('TOPRIGHT', lastBuff, 'TOPLEFT') 380 buff:SetPoint('TOPRIGHT', lastBuff, 'TOPLEFT', -BUFF_BUTTON_SPACING_H, 0)
403 end 381 end
404 lastBuff = buff 382 lastBuff = buff
405 end 383 end
406 end 384 end
407 385
408 for i = 1, DEBUFF_ACTUAL_DISPLAY do 386 for i = 1, DEBUFF_ACTUAL_DISPLAY do
409 local debuff = _G['DebuffButton'..i] 387 local debuff = _G['DebuffButton'..i]
410 if debuff then 388 if debuff then
411 if i == 1 then 389 if i == 1 then
412 if topBuff then 390 if topBuff then
413 debuff:SetPoint('TOPRIGHT', topBuff, 'BOTTOMRIGHT', 0, -14) 391 debuff:SetPoint('TOPRIGHT', topBuff, 'BOTTOMRIGHT', 0, -BUFF_BUTTON_SPACING_V)
414 else 392 else
415 debuff:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', -120, -6) 393 debuff:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', -120, -6)
416 end 394 end
417 topBuff = debuff 395 topBuff = debuff
418 elseif mod(i, 12) == 1 then 396 elseif mod(i, 12) == 1 then
419 debuff:SetPoint('TOPRIGHT', topBuff, 'BOTTOMRIGHT', 0, -14) 397 debuff:SetPoint('TOPRIGHT', topBuff, 'BOTTOMRIGHT', 0, -BUFF_BUTTON_SPACING_V)
420 topBuff = debuff 398 topBuff = debuff
421 else 399 else
422 debuff:SetPoint('TOPRIGHT', lastBuff, 'TOPLEFT') 400 debuff:SetPoint('TOPRIGHT', lastBuff, 'TOPLEFT', -BUFF_BUTTON_SPACING_H, 0)
423 end 401 end
424 lastBuff = debuff 402 lastBuff = debuff
425 end 403 end
426 end 404 end
427 405