commit from backup
This commit is contained in:
127
Libraries/oUF_Plugins/oUF_CombatFader/oUF_CombatFader.lua
Normal file
127
Libraries/oUF_Plugins/oUF_CombatFader/oUF_CombatFader.lua
Normal file
@@ -0,0 +1,127 @@
|
||||
--By Elv, for E.
|
||||
local parent, ns = ...
|
||||
local oUF = ns.oUF
|
||||
local frames, allFrames = {}, {}
|
||||
local showStatus
|
||||
|
||||
local CheckForReset = function()
|
||||
for frame, unit in pairs(allFrames) do
|
||||
if frame.fadeInfo and frame.fadeInfo.reset then
|
||||
frame:SetAlpha(1)
|
||||
frame.fadeInfo.reset = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local FadeFramesInOut = function(fade, unit)
|
||||
local E = unpack(ElvUI)
|
||||
for frame, unit in pairs(frames) do
|
||||
if not UnitExists(unit) then return end
|
||||
if fade then
|
||||
if frame:GetAlpha() ~= 1 or (frame.fadeInfo and frame.fadeInfo.endAlpha == 0) then
|
||||
E:UIFrameFadeIn(frame, 0.15)
|
||||
end
|
||||
else
|
||||
if frame:GetAlpha() ~= 0 then
|
||||
E:UIFrameFadeOut(frame, 0.15)
|
||||
frame.fadeInfo.finishedFunc = CheckForReset
|
||||
else
|
||||
showStatus = false;
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if unit == 'player' then
|
||||
showStatus = fade
|
||||
end
|
||||
end
|
||||
|
||||
local Update = function(self, arg1, arg2)
|
||||
if arg1 == "UNIT_HEALTH" and self and self.unit ~= arg2 then return end
|
||||
if type(arg1) == 'boolean' and not frames[self] then
|
||||
return
|
||||
end
|
||||
|
||||
local E = unpack(ElvUI)
|
||||
|
||||
if not frames[self] then
|
||||
E:UIFrameFadeIn(self, 0.15)
|
||||
self.fadeInfo.reset = true
|
||||
return
|
||||
end
|
||||
|
||||
local combat = UnitAffectingCombat("player")
|
||||
local cur, max = UnitHealth("player"), UnitHealthMax("player")
|
||||
local cast, channel = UnitCastingInfo("player"), UnitChannelInfo("player")
|
||||
local target, focus = UnitExists("target"), UnitExists("focus")
|
||||
|
||||
if (cast or channel) and showStatus ~= true then
|
||||
FadeFramesInOut(true, frames[self])
|
||||
elseif cur ~= max and showStatus ~= true then
|
||||
FadeFramesInOut(true, frames[self])
|
||||
elseif (target or focus) and showStatus ~= true then
|
||||
FadeFramesInOut(true, frames[self])
|
||||
elseif arg1 == true and showStatus ~= true then
|
||||
FadeFramesInOut(true, frames[self])
|
||||
else
|
||||
if combat and showStatus ~= true then
|
||||
FadeFramesInOut(true, frames[self])
|
||||
elseif not target and not combat and not focus and (cur == max) and not (cast or channel) then
|
||||
FadeFramesInOut(false, frames[self])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local Enable = function(self, unit)
|
||||
if self.CombatFade then
|
||||
frames[self] = self.unit
|
||||
allFrames[self] = self.unit
|
||||
|
||||
if unit == 'player' then
|
||||
showStatus = false;
|
||||
end
|
||||
|
||||
self:RegisterEvent("PLAYER_ENTERING_WORLD", 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_HEALTH", Update)
|
||||
self:RegisterEvent("UNIT_SPELLCAST_START", Update)
|
||||
self:RegisterEvent("UNIT_SPELLCAST_STOP", Update)
|
||||
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START", Update)
|
||||
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP", Update)
|
||||
self:RegisterEvent("UNIT_PORTRAIT_UPDATE", Update)
|
||||
self:RegisterEvent("UNIT_MODEL_CHANGED", Update)
|
||||
|
||||
if not self.CombatFadeHooked then
|
||||
self:HookScript("OnEnter", function(self) Update(self, true) end)
|
||||
self:HookScript("OnLeave", function(self) Update(self, false) end)
|
||||
self.CombatFadeHooked = true
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local Disable = function(self)
|
||||
if(self.CombatFade) then
|
||||
frames[self] = nil
|
||||
Update(self)
|
||||
|
||||
self:UnregisterEvent("PLAYER_ENTERING_WORLD", 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_HEALTH", Update)
|
||||
self:UnregisterEvent("UNIT_SPELLCAST_START", Update)
|
||||
self:UnregisterEvent("UNIT_SPELLCAST_STOP", Update)
|
||||
self:UnregisterEvent("UNIT_SPELLCAST_CHANNEL_START", Update)
|
||||
self:UnregisterEvent("UNIT_SPELLCAST_CHANNEL_STOP", Update)
|
||||
self:UnregisterEvent("UNIT_PORTRAIT_UPDATE", Update)
|
||||
self:UnregisterEvent("UNIT_MODEL_CHANGED", Update)
|
||||
end
|
||||
end
|
||||
|
||||
oUF:AddElement('CombatFade', Update, Enable, Disable)
|
||||
@@ -0,0 +1,8 @@
|
||||
## Interface: 40200
|
||||
## Title: oUF Combat Fader
|
||||
## Notes: Adds combat fade ability to oUF
|
||||
## Author: Elv
|
||||
## Version: 1.0.0
|
||||
## Dependencies: oUF
|
||||
|
||||
oUF_CombatFader.lua
|
||||
Reference in New Issue
Block a user