--[[-----------------------------------------------------------------------
oUF: Stardust - a layout for the oUF framework
Copyright (c) 2016 Andrew Mordecai <armordecai@protonmail.ch>
This code is released under the zlib license; see LICENSE for details.
---------------------------------------------------------------------------
This file provides a "DispelIcon" element, which may be used in any
oUF layout and does not depend on any other files in this addon.
self.DispelIcon = self:CreateTexture(nil, "OVERLAY")
self.DispelIcon:SetPoint("CENTER")
self.DispelIcon:SetSize(16, 16)
To use Blizzard's graphical icons for each debuff type, set
.showIcons = true on the element. Otherwise, the element's existing
texture will be colored according to the debuff type.
-------------------------------------------------------------------------]]
local _, ns = ...
local oUF = ns.oUF or oUF
assert(oUF, "DispelIcon element requires oUF")
function Update(self, event, unit)
local element = self.DispelIcon
if element.PreUpdate then
element:PreUpdate()
end
local _, _, _, _, dispelType = UnitDebuff(unit, 1, "RAID")
if dispelType == "" then dispelType = nil end
local color, r, g, b = dispelType and DebuffTypeColor[dispelType]
if element.showIcons then
if dispelType then
element:SetTexture("Interface\\RAIDFRAME\\Raid-Icon-Debuff"..dispelType)
element:SetVertexColor(1, 1, 1)
element:Show()
else
element:SetTexture("")
element:Hide()
end
else
if dispelType then
r, g, b = color.r, color.g, color.b
element:SetVertexColor(r, g, b)
element:Show()
else
element:SetVertexColor(1, 1, 1)
element:Hide()
end
end
if element.PostUpdate then
element:PostUpdate(dispelType, r, g, b)
end
end
function Path(self, ...)
return (self.DispelIcon.Override or Update)(self, ...)
end
function ForceUpdate(element)
return Path(element.__owner, "ForceUpdate", element.__owner.unit)
end
function Enable(self, unit)
local element = self.DispelIcon
if not element then return end
element.__owner = self
element.ForceUpdate = ForceUpdate
self:RegisterEvent("UNIT_AURA", Path)
return true
end
function Disable(self)
local element = self.DispelIcon
if not element then return end
self:UnregisterEvent("UNIT_AURA", Path)
element:Hide()
end
oUF:AddElement("DispelIcon", Path, Enable, Disable)