Mercurial > wow > buffalo2
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 |