comparison Modules/BuffFrame.lua @ 73:95ed343c3a42

- VeneerBuffTemplate and members
author Nenue
date Tue, 23 Aug 2016 16:15:09 -0400
parents 6f8661094643
children cd6e78091b04
comparison
equal deleted inserted replaced
72:d80db9a9b7e4 73:95ed343c3a42
70 70
71 local GetVeneer = function(frame) 71 local GetVeneer = function(frame)
72 local name = frame:GetName() 72 local name = frame:GetName()
73 if not (_G[name..'Veneer']) then 73 if not (_G[name..'Veneer']) then
74 print('|cFF88FF00Creating', name,'Veneer') 74 print('|cFF88FF00Creating', name,'Veneer')
75 local veneer = vn.GetVeneer(frame) 75 local veneer = vn.GetVeneer(frame, 'VeneerBuffTemplate')
76 local id = frame:GetID() 76 local id = frame:GetID()
77 77
78 local position = tonumber(name:match("%d")) 78 local position = tonumber(name:match("%d"))
79 if position == 1 then 79 if position == 1 then
80 veneer:Show() 80 veneer:Show()
81 end 81 end
82 82
83 veneer.progress = CreateFrame('Frame', name .. 'VeneerProgress', veneer)
84 veneer.progress:Hide()
85 veneer.progress:SetPoint('BOTTOMLEFT', veneer, 'BOTTOMLEFT', 0, -6) 83 veneer.progress:SetPoint('BOTTOMLEFT', veneer, 'BOTTOMLEFT', 0, -6)
86 veneer.progress:SetPoint('TOPRIGHT', veneer, 'BOTTOMRIGHT', 0, -1) 84 veneer.progress:SetPoint('TOPRIGHT', veneer, 'BOTTOMRIGHT', 0, -1)
87 veneer.progress:SetHeight(BUFF_PROGRESS_SIZE + (BUFF_PROGRESS_INSET * 2)) 85 veneer.progress:SetHeight(BUFF_PROGRESS_SIZE + (BUFF_PROGRESS_INSET * 2))
88 86
89 veneer.progress.bg = veneer.progress:CreateTexture(nil, 'BACKGROUND')
90 veneer.progress.bg:SetColorTexture(0,0,0,1)
91 veneer.progress.bg:SetAllPoints(veneer.progress)
92
93 veneer.progress.fg = veneer.progress:CreateTexture(nil, 'ARTWORK')
94 veneer.progress.fg:SetColorTexture(0,1,0,1) 87 veneer.progress.fg:SetColorTexture(0,1,0,1)
95 veneer.progress.fg:SetPoint('BOTTOMLEFT', BUFF_PROGRESS_INSET,BUFF_PROGRESS_INSET) 88 veneer.progress.fg:SetPoint('BOTTOMLEFT', BUFF_PROGRESS_INSET,BUFF_PROGRESS_INSET)
96 veneer.progress.fg:SetPoint('TOP', 0, -BUFF_PROGRESS_INSET) 89 veneer.progress.fg:SetPoint('TOP', 0, -BUFF_PROGRESS_INSET)
97 90
98 veneer.progress.status = veneer.progress:CreateFontString()
99 veneer.progress.status:SetFontObject(VeneerNumberFont)
100 veneer.progress.status:SetPoint('TOP')
101
102
103 veneer.cooldown = CreateFrame('Cooldown', name ..'VeneerCooldown', veneer, 'CooldownFrameTemplate')
104 veneer.cooldown:SetAllPoints(frame)
105 veneer.cooldown:SetReverse(true)
106
107 local overlay = CreateFrame('Frame', name .. 'VeneerOverlay', UIParent)
108
109 overlay:Show()
110 overlay:SetFrameStrata('MEDIUM')
111 local n = frame:GetNumPoints()
112 for i = 1, n do
113 overlay:SetPoint(frame:GetPoint(n))
114 end
115
116
117 local underlay = CreateFrame('Frame', name..'VeneerUnderlay', UIParent)
118 underlay:Show()
119 underlay:SetFrameStrata('BACKGROUND')
120 local n = frame:GetNumPoints()
121 for i = 1, n do
122 underlay:SetPoint(frame:GetPoint(n))
123 end
124
125 veneer.duration = overlay:CreateFontString(name..'VeneerDuration', 'OVERLAY')
126 veneer.duration:SetFontObject(VeneerNumberFont) 91 veneer.duration:SetFontObject(VeneerNumberFont)
127 veneer.duration:SetPoint('TOP', frame, 'BOTTOM', 0, -8) 92 veneer.duration:SetPoint('TOP', veneer, 'BOTTOM', 0, -2)
128 93
129 veneer.count = overlay:CreateFontString(name..'VeneerCount', 'OVERLAY')
130 veneer.count:SetFontObject(VeneerNumberFont) 94 veneer.count:SetFontObject(VeneerNumberFont)
131 veneer.count:SetPoint('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -3, 3) 95 veneer.count:SetPoint('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -3, 3)
132 96
133 97 veneer.underlay:SetParent(UIParent)
134 98 veneer.underlay:SetFrameStrata('BACKGROUND')
135 veneer.border = underlay:CreateTexture(name..'VeneerBorder', 'BACKGROUND') 99 veneer.border:SetColorTexture(0,0,0,1)
136 veneer.border:SetPoint('TOPLEFT', veneer, 'TOPLEFT', -BORDER_SIZE_L, BORDER_SIZE_U) 100 veneer.border:SetPoint('TOPLEFT', veneer, 'TOPLEFT', -BORDER_SIZE_L, BORDER_SIZE_U)
137 veneer.border:SetPoint('BOTTOMRIGHT', veneer, 'BOTTOMRIGHT', BORDER_SIZE_R, -BORDER_SIZE_D) 101 veneer.border:SetPoint('BOTTOMRIGHT', veneer, 'BOTTOMRIGHT', BORDER_SIZE_R, -BORDER_SIZE_D)
138 veneer.border:Show() 102 veneer.border:Show()
139 103
140 104
141 veneer.overlay = overlay
142 veneer.underlay = underlay
143 end 105 end
144 106
145 107
146 return _G[name..'Veneer'] 108 return _G[name..'Veneer']
147 end 109 end
158 120
159 local icon = _G[name .. 'Icon'] 121 local icon = _G[name .. 'Icon']
160 local border = _G[name .. 'Border'] 122 local border = _G[name .. 'Border']
161 local count = _G[name .. 'Count'] 123 local count = _G[name .. 'Count']
162 local duration = _G[name .. 'Duration'] 124 local duration = _G[name .. 'Duration']
163 local slot = frame:GetID() or 0
164 local veneer = GetVeneer(frame) 125 local veneer = GetVeneer(frame)
165 local underlay = veneer.underlay
166 local overlay = veneer.overlay
167 126
168 skinnedFrames[frame] = frame 127 skinnedFrames[frame] = frame
169 frame:SetSize(BUFF_BUTTON_SIZE,BUFF_BUTTON_SIZE) 128 frame:SetSize(BUFF_BUTTON_SIZE,BUFF_BUTTON_SIZE)
170 129
171 local offset = BUFF_BUTTON_ZOOM/2 130 local offset = BUFF_BUTTON_ZOOM/2
182 if aurasCache[frame] and aurasCache[frame][5] then 141 if aurasCache[frame] and aurasCache[frame][5] then
183 color = DebuffTypeColor[aurasCache[frame][5]] 142 color = DebuffTypeColor[aurasCache[frame][5]]
184 end 143 end
185 144
186 veneer.progress.fg:SetColorTexture(color.r,color.g,color.b) 145 veneer.progress.fg:SetColorTexture(color.r,color.g,color.b)
146 veneer.border:SetColorTexture(color.r,color.g,color.b)
187 end 147 end
188 if duration then 148 if duration then
189 duration:ClearAllPoints() 149 duration:ClearAllPoints()
190 --duration:SetPoint('TOP', frame, 'BOTTOM', 0, -8) 150 --duration:SetPoint('TOP', frame, 'BOTTOM', 0, -8)
191 --duration:SetFontObject(VeneerNumberFont) 151 --duration:SetFontObject(VeneerNumberFont)
217 local isVisible = self:IsVisible() 177 local isVisible = self:IsVisible()
218 if isVisible ~= visibility[self] then 178 if isVisible ~= visibility[self] then
219 visibility[self] = isVisible 179 visibility[self] = isVisible
220 end 180 end
221 veneer:Hide() 181 veneer:Hide()
222 veneer.count:Hide() 182 veneer.underlay:Hide()
223 underlay:Hide()
224 end) 183 end)
225 184
226 hooksecurefunc(frame, 'Show', function(self) 185 hooksecurefunc(frame, 'Show', function(self)
227 veneer:Show() 186 veneer:Show()
228 veneer.count:Show() 187 veneer.count:Show()
229 veneer.border:Show() 188 veneer.border:Show()
230 underlay:Show()
231 local isVisible = self:IsVisible() 189 local isVisible = self:IsVisible()
232 if isVisible ~= visibility[self] then 190 if isVisible ~= visibility[self] then
233 print('|cFFFFFF00SHOW|r', self:GetName()) 191 print('|cFFFFFF00SHOW|r', self:GetName())
234 visibility[self] = isVisible 192 visibility[self] = isVisible
235 end 193 end
321 local AuraButton_Update = function(name, index, filter) 279 local AuraButton_Update = function(name, index, filter)
322 local bName = name..index 280 local bName = name..index
323 local frame = _G[bName] 281 local frame = _G[bName]
324 if frame and frame:IsVisible() then 282 if frame and frame:IsVisible() then
325 tickCounter[frame] = (tickCounter[frame] or 0) + 1 283 tickCounter[frame] = (tickCounter[frame] or 0) + 1
326
327
328
329 local cacheDiff = CacheCheck(frame, UnitAura(frame.unit, frame:GetID(), frame.filter)) 284 local cacheDiff = CacheCheck(frame, UnitAura(frame.unit, frame:GetID(), frame.filter))
330
331 -- if the name or expirationTime changed 285 -- if the name or expirationTime changed
332 if (cacheDiff >= 1) then 286 if (cacheDiff >= 1) then
333 print('|cFFFF4400', frame:GetName(), 'diff:', cacheDiff) 287 print('|cFFFF4400', frame:GetName(), 'diff:', cacheDiff)
334 if not skinnedFrames[frame] then 288 if not skinnedFrames[frame] then
335 tinsert(pendingFrames, frame) 289 tinsert(pendingFrames, frame)
336 end 290 end
337 expirationCache[name] = frame.expirationTime 291 expirationCache[name] = frame.expirationTime
338 print(unpack(aurasCache[frame])) 292 print(unpack(aurasCache[frame]))
339
340
341 293
342 UpdateVeneer(frame, aurasCache[frame][6], aurasCache[frame][7]) 294 UpdateVeneer(frame, aurasCache[frame][6], aurasCache[frame][7])
343 end 295 end
344 296
345 end 297 end