Quantcast

Rewrite to reflect changes in oUF

p3lim-52096 [12-21-08 - 03:43]
Rewrite to reflect changes in oUF

git-svn-id: svn://svn.wowinterface.com/oUF_BarFader-229/trunk@13 cbe42a47-3b53-4817-a5a9-47e79666164c
Filename
oUF_BarFader/oUF_BarFader.lua
diff --git a/oUF_BarFader/oUF_BarFader.lua b/oUF_BarFader/oUF_BarFader.lua
index 50b8124..46c5074 100644
--- a/oUF_BarFader/oUF_BarFader.lua
+++ b/oUF_BarFader/oUF_BarFader.lua
@@ -6,65 +6,97 @@
 	 - BarFadeMaxAlpha [value] default: 1

 --]]
-local function NotFull(unit)
-	if(UnitHealth(unit) ~= UnitHealthMax(unit)) then
-		return true
+local function Regenerating(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
-			else
-				return false
-			end
+			if(UnitMana(unit) > 0) then return true end
 		else
-			if(UnitMana(unit) ~= UnitManaMax(unit)) then
-				return true
-			else
-				return false
-			end
+			if(UnitMana(unit) ~= UnitManaMax(unit)) then return true end
 		end
 	end
+
+	return false
 end

-local function UpdateElement(self)
+local function Update(self)
 	if(self.unit == 'player' or self.unit == 'pet' or self.unit == 'focus' or self.unit == 'focustarget' or self.unit == 'targettarget') then
-		if(not self.BarFade) then return end
-
-		if(NotFull(self.unit)) then
+		if(self.Castbar.casting or self.Castbar.channeling) then
 			self:SetAlpha(self.BarFadeMaxAlpha or 1)
 		elseif(UnitAffectingCombat(self.unit)) then
 			self:SetAlpha(self.BarFadeMaxAlpha or 1)
-		elseif(UnitExists(self.unit..'target')) 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))
+		elseif(UnitExists(self.unit..'target')) then
+			self:SetAlpha(self.BarFadeMaxAlpha or 1)
+		elseif(Regenerating(self.unit)) then
+			self:SetAlpha(self.BarFadeMaxAlpha or 1)
 		else
 			self:SetAlpha(self.BarFadeMinAlpha or 0.25)
 		end
 	end
 end

-oUF:RegisterInitCallback(function(obj)
-	local addon = CreateFrame('Frame')
-	addon:SetScript('OnEvent', function() UpdateElement(obj) end)
-	addon:RegisterEvent('PLAYER_LOGIN')
-	addon:RegisterEvent('PLAYER_REGEN_ENABLED')
-	addon:RegisterEvent('PLAYER_REGEN_DISABLED')
-	addon:RegisterEvent('PLAYER_TARGET_CHANGED')
-	addon:RegisterEvent('PLAYER_FOCUS_CHANGED')
-	addon:RegisterEvent('UNIT_HAPPINESS')
-	addon:RegisterEvent('UNIT_HEALTH')
-	addon:RegisterEvent('UNIT_MANA')
-	addon:RegisterEvent('UNIT_ENERGY')
-	addon:RegisterEvent('UNIT_FOCUS')
-	addon:RegisterEvent('UNIT_RAGE')
-	addon:RegisterEvent('UNIT_RUNIC_POWER')
-	addon:RegisterEvent('UNIT_POWER')
-	addon:RegisterEvent('UNIT_TARGET')
-	addon:RegisterEvent('UNIT_SPELLCAST_START')
-	addon:RegisterEvent('UNIT_SPELLCAST_STOP')
-	addon:RegisterEvent('UNIT_SPELLCAST_CHANNEL_START')
-	addon:RegisterEvent('UNIT_SPELLCAST_CHANNEL_STOP')
-end)
\ No newline at end of file
+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)
\ No newline at end of file