- BarFadeMaxAlpha [value] default: 1 |
|
--]] |
local function Regenerating(unit) |
if(UnitHealth(unit) ~= UnitHealthMax(unit)) then return true |
local function NotFull(unit) |
if(UnitHealth(unit) ~= UnitHealthMax(unit)) then |
return true |
else |
if(UnitPowerType(unit) == 6 or UnitPowerType(unit) == 1) then |
if(UnitMana(unit) > 0) then return true end |
if(UnitMana(unit) > 0) then |
return true |
else |
return false |
end |
else |
if(UnitMana(unit) ~= UnitManaMax(unit)) then return true end |
if(UnitMana(unit) ~= UnitManaMax(unit)) then |
return true |
else |
return false |
end |
end |
end |
|
return false |
end |
|
local function Update(self) |
local function UpdateElement(self) |
if(self.unit == 'player' or self.unit == 'pet' or self.unit == 'focus' or self.unit == 'focustarget' or self.unit == 'targettarget') then |
if(self.Castbar.casting or self.Castbar.channeling) then |
if(not self.BarFade) then return end |
|
if(NotFull(self.unit)) then |
self:SetAlpha(self.BarFadeMaxAlpha or 1) |
elseif(UnitAffectingCombat(self.unit)) then |
self:SetAlpha(self.BarFadeMaxAlpha or 1) |
elseif(self.unit == 'pet' and GetPetHappiness()) then |
self:SetAlpha((GetPetHappiness() < 3) and (self.BarFadeMaxAlpha or 1) or (self.BarFadeMinAlpha or 0.25)) |
elseif(UnitExists(self.unit..'target')) then |
self:SetAlpha(self.BarFadeMaxAlpha or 1) |
elseif(Regenerating(self.unit)) then |
self:SetAlpha(self.BarFadeMaxAlpha or 1) |
elseif(self.Castbar) then |
self:SetAlpha((self.Castbar.casting or self.Castbar.channeling) and (self.BarFadeMaxAlpha or 1) or (self.BarFadeMinAlpha or 0.25)) |
elseif(self.unit == 'pet' and GetPetHappiness()) then |
self:SetAlpha((GetPetHappiness() < 3) and (self.BarFadeMaxAlpha or 1) or (self.BarFadeMinAlpha or 0.25)) |
else |
self:SetAlpha(self.BarFadeMinAlpha or 0.25) |
end |
end |
end |
|
local function Enable(self) |
if(self.BarFade) then |
self:RegisterEvent('PLAYER_LOGIN', Update) |
self:RegisterEvent('PLAYER_REGEN_ENABLED', Update) |
self:RegisterEvent('PLAYER_REGEN_DISABLED', Update) |
self:RegisterEvent('PLAYER_TARGET_CHANGED', Update) |
self:RegisterEvent('PLAYER_FOCUS_CHANGED', Update) |
self:RegisterEvent('UNIT_HAPPINESS', Update) |
self:RegisterEvent('UNIT_HEALTH', Update) |
self:RegisterEvent('UNIT_MANA', Update) |
self:RegisterEvent('UNIT_ENERGY', Update) |
self:RegisterEvent('UNIT_FOCUS', Update) |
self:RegisterEvent('UNIT_RAGE', Update) |
self:RegisterEvent('UNIT_RUNIC_POWER', Update) |
self:RegisterEvent('UNIT_POWER', Update) |
self:RegisterEvent('UNIT_TARGET', Update) |
|
if(self.Castbar) then |
self.PostCastStart = Update |
self.PostCastFailed = Update |
self.PostCastInterrupted = Update |
self.PostCastDelayed = Update |
self.PostCastStop = Update |
self.PostChannelStart = Update |
self.PostChannelUpdate = Update |
self.PostChannelStop = Update |
end |
|
return true |
end |
end |
|
local function Disable(self) |
if(self.BarFade) then |
self:UnregisterEvent('PLAYER_LOGIN', Update) |
self:UnregisterEvent('PLAYER_REGEN_ENABLED', Update) |
self:UnregisterEvent('PLAYER_REGEN_DISABLED', Update) |
self:UnregisterEvent('PLAYER_TARGET_CHANGED', Update) |
self:UnregisterEvent('PLAYER_FOCUS_CHANGED', Update) |
self:UnregisterEvent('UNIT_HAPPINESS', Update) |
self:UnregisterEvent('UNIT_HEALTH', Update) |
self:UnregisterEvent('UNIT_MANA', Update) |
self:UnregisterEvent('UNIT_ENERGY', Update) |
self:UnregisterEvent('UNIT_FOCUS', Update) |
self:UnregisterEvent('UNIT_RAGE', Update) |
self:UnregisterEvent('UNIT_RUNIC_POWER', Update) |
self:UnregisterEvent('UNIT_POWER', Update) |
self:UnregisterEvent('UNIT_TARGET', Update) |
|
if(self.Castbar) then |
self.PostCastStart = nil |
self.PostCastFailed = nil |
self.PostCastInterrupted = nil |
self.PostCastDelayed = nil |
self.PostCastStop = nil |
self.PostChannelStart = nil |
self.PostChannelUpdate = nil |
self.PostChannelStop = nil |
end |
end |
end |
|
oUF:AddElement('BarFader', Update, Enable, Disable) |