diff --git a/oUF_BarFader/oUF_BarFader.lua b/oUF_BarFader/oUF_BarFader.lua index 0f9874e..492765a 100644 --- a/oUF_BarFader/oUF_BarFader.lua +++ b/oUF_BarFader/oUF_BarFader.lua @@ -1,58 +1,99 @@ --[[ Shared: - - barFade [boolean] - - barFadeAlpha [value] default: 0.25 + - BarFade [boolean] + - BarFadeMinAlpha [value] default: 0.25 + - BarFadeMaxAlpha [value] default: 1 --]] local function UpdateElement(self, unit) - if(unit == 'player' and self.barFade) then - local l, class = UnitClass('player') + if(unit == 'player' and self.BarFade) then + local _, class = UnitClass('player') local notFull = (UnitHealth('player') ~= UnitHealthMax('player')) or (UnitPowerType('player') ~= 1 and UnitMana('player') ~= UnitManaMax('player')) or (UnitPowerType('player') == 1 and UnitMana('player') > 0) if(notFull) then - self:SetAlpha(1) + self:SetAlpha(self.BarFadeMaxAlpha or 1) elseif(UnitAffectingCombat('player')) then - self:SetAlpha(1) + self:SetAlpha(self.BarFadeMaxAlpha or 1) elseif(UnitExists('target')) then - self:SetAlpha(1) + self:SetAlpha(self.BarFadeMaxAlpha or 1) elseif(self.Castbar) then - self:SetAlpha(self.Castbar.casting and 1 or (self.barFadeAlpha or 0.25)) + self:SetAlpha(self.Castbar.casting and (self.BarFadeMaxAlpha or 1) or (self.BarFadeMinAlpha or 0.25)) else - self:SetAlpha(self.barFadeAlpha or 0.25) + self:SetAlpha(self.BarFadeMinAlpha or 0.25) end - elseif(unit == 'pet' and self.barFade) then + end + if(unit == 'pet' and self.BarFade) then local happiness = GetPetHappiness() local notFull = (UnitHealth('pet') ~= UnitHealthMax('pet')) or (UnitMana('pet') ~= UnitManaMax('pet')) if(notFull) then - self:SetAlpha(1) + self:SetAlpha(self.BarFadeMaxAlpha or 1) elseif(UnitAffectingCombat('pet')) then - self:SetAlpha(1) + self:SetAlpha(self.BarFadeMaxAlpha or 1) elseif(UnitExists('pettarget')) then - self:SetAlpha(1) + self:SetAlpha(self.BarFadeMaxAlpha or 1) + elseif(self.Castbar) then + self:SetAlpha(self.Castbar.casting and (self.BarFadeMaxAlpha or 1) or (self.BarFadeMinAlpha or 0.25)) elseif(happiness) then - self:SetAlpha((happiness < 3) and 1 or (self.barFadeAlpha or 0.25)) + self:SetAlpha((happiness < 3) and (self.BarFadeMaxAlpha or 1) or (self.BarFadeMinAlpha or 0.25)) else - self:SetAlpha(self.barFadeAlpha or 0.25) + self:SetAlpha(self.BarFadeMinAlpha or 0.25) end - elseif(unit == 'focus' and self.BarFade) then + end + if(unit == 'focus' and self.BarFade) then local notFull = (UnitHealth('focus') ~= UnitHealthMax('focus')) or (UnitPowerType('focus') ~= 1 and UnitMana('focus') ~= UnitManaMax('focus')) or (UnitPowerType('focus') == 1 and UnitMana('focus') > 0) if(notFull) then - self:SetAlpha(1) + self:SetAlpha(self.BarFadeMaxAlpha or 1) elseif(UnitAffectingCombat('focus')) then - self:SetAlpha(1) + self:SetAlpha(self.BarFadeMaxAlpha or 1) elseif(UnitExists('focustarget')) then - self:SetAlpha(1) + self:SetAlpha(self.BarFadeMaxAlpha or 1) + elseif(self.Castbar) then + self:SetAlpha(self.Castbar.casting and (self.BarFadeMaxAlpha or 1) or (self.BarFadeMinAlpha or 0.25)) else - self:SetAlpha(self.barFadeAlpha or 0.25) - end + self:SetAlpha(self.BarFadeMinAlpha or 0.25) + end + end + if(unit == 'focustarget' and self.BarFade) then + local notFull = (UnitHealth('focustarget') ~= UnitHealthMax('focustarget')) or + (UnitPowerType('focustarget') ~= 1 and UnitMana('focustarget') ~= UnitManaMax('focustarget')) or + (UnitPowerType('focustarget') == 1 and UnitMana('focustarget') > 0) + + if(notFull) then + self:SetAlpha(self.BarFadeMaxAlpha or 1) + elseif(UnitAffectingCombat('focustarget')) then + self:SetAlpha(self.BarFadeMaxAlpha or 1) + elseif(UnitExists('focustargettarget')) then + self:SetAlpha(self.BarFadeMaxAlpha or 1) + elseif(self.Castbar) then + self:SetAlpha(self.Castbar.casting and (self.BarFadeMaxAlpha or 1) or (self.BarFadeMinAlpha or 0.25)) + else + self:SetAlpha(self.BarFadeMinAlpha or 0.25) + end + end + if(unit == 'targettarget' and self.BarFade) then + local notFull = (UnitHealth('targettarget') ~= UnitHealthMax('targettarget')) or + (UnitPowerType('targettarget') ~= 1 and UnitMana('targettarget') ~= UnitManaMax('targettarget')) or + (UnitPowerType('targettarget') == 1 and UnitMana('targettarget') > 0) + + if(notFull) then + self:SetAlpha(self.BarFadeMaxAlpha or 1) + elseif(UnitAffectingCombat('targettarget')) then + self:SetAlpha(self.BarFadeMaxAlpha or 1) + elseif(UnitExists('targettargettarget')) then + self:SetAlpha(self.BarFadeMaxAlpha or 1) + elseif(self.Castbar) then + self:SetAlpha(self.Castbar.casting and (self.BarFadeMaxAlpha or 1) or (self.BarFadeMinAlpha or 0.25)) + else + self:SetAlpha(self.BarFadeMinAlpha or 0.25) + end end end