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 |
