You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
4.4 KiB
117 lines
4.4 KiB
local SLE, T, E, L, V, P, G = unpack(ElvUI_SLE)
|
|
local UF = E.UnitFrames
|
|
local SUF = SLE.UnitFrames
|
|
|
|
--GLOBALS: hooksecurefunc
|
|
|
|
local auraType, unitframeType
|
|
SUF.CreatedShadows = {}
|
|
SUF.powerbars = {}
|
|
|
|
local function Cooldown_Options(_, timer, _, cooldown)
|
|
if not SLE.initialized or not E.private.unitframe.enable then return end
|
|
if not timer or not cooldown then return end
|
|
|
|
local parent = cooldown:GetParent()
|
|
if not parent or not parent:GetParent() then return end
|
|
local owner = parent:GetParent().__owner
|
|
if not owner then return end
|
|
|
|
local db = E.db.sle.unitframe.units
|
|
auraType = parent.filter == 'HELPFUL' and 'buffs' or 'debuffs'
|
|
unitframeType = owner.unitframeType
|
|
if not auraType or not unitframeType then return end
|
|
if not db[unitframeType] or not db[unitframeType][auraType] or not db[unitframeType][auraType].enable then return end
|
|
|
|
timer.threshold = db[unitframeType][auraType].threshold
|
|
end
|
|
hooksecurefunc(E, 'Cooldown_Options', Cooldown_Options)
|
|
|
|
function SUF:UpdateShadows()
|
|
if UnitAffectingCombat('player') then SUF:RegisterEvent('PLAYER_REGEN_ENABLED', SUF.UpdateShadows) return end
|
|
SUF:UnregisterEvent('PLAYER_ENTERING_WORLD')
|
|
|
|
for frame, _ in pairs(SUF.CreatedShadows) do
|
|
SUF:UpdateShadowColor(frame)
|
|
end
|
|
end
|
|
|
|
function SUF:UpdateShadowColor(shadow)
|
|
local db = E.db.sle.shadows
|
|
local r, g, b = db.shadowcolor.r, db.shadowcolor.g, db.shadowcolor.b
|
|
shadow:SetBackdropColor(r, g, b, 0)
|
|
shadow:SetBackdropBorderColor(r, g, b, 0.9)
|
|
end
|
|
|
|
function SUF:Construct_UF(frame, unit)
|
|
if not UF.groupunits[unit] then
|
|
--* player, target, targettarget, targettargettarget, focus, focustarget, pet, pettarget
|
|
SUF['Construct_'..gsub(E:StringTitle(unit), 't(arget)', 'T%1')..'Frame'](SUF, frame, unit)
|
|
|
|
if unit and _G['ElvUF_'..gsub(E:StringTitle(unit), 't(arget)', 'T%1')].Power then
|
|
SUF.powerbars[_G['ElvUF_'..gsub(E:StringTitle(unit), 't(arget)', 'T%1')].Power] = true
|
|
end
|
|
else
|
|
--* arena1, arena2, arena3, arena4, arena5, boss1, boss2, boss3, boss4, boss5
|
|
SUF['Construct_'..E:StringTitle(UF.groupunits[unit])..'Frames'](SUF, frame, unit)
|
|
end
|
|
end
|
|
|
|
local function HookConstructUnitFrames()
|
|
hooksecurefunc(UF, 'Construct_UF', SUF.Construct_UF)
|
|
hooksecurefunc(UF, 'Construct_PartyFrames', SUF.Construct_PartyFrames)
|
|
hooksecurefunc(UF, 'Construct_RaidFrames', SUF.Construct_RaidFrames)
|
|
hooksecurefunc(UF, 'Construct_TankFrames', SUF.Construct_TankFrames)
|
|
hooksecurefunc(UF, 'Construct_AssistFrames', SUF.Construct_AssistFrames)
|
|
end
|
|
|
|
local function HookUpdateUnitFrames()
|
|
--* Individual Units
|
|
hooksecurefunc(UF, 'Update_PlayerFrame', SUF.Update_PlayerFrame)
|
|
hooksecurefunc(UF, 'Update_TargetFrame', SUF.Update_TargetFrame)
|
|
hooksecurefunc(UF, 'Update_TargetTargetFrame', SUF.Update_TargetTargetFrame)
|
|
hooksecurefunc(UF, 'Update_TargetTargetTargetFrame', SUF.Update_TargetTargetTargetFrame)
|
|
hooksecurefunc(UF, 'Update_FocusFrame', SUF.Update_FocusFrame)
|
|
hooksecurefunc(UF, 'Update_FocusTargetFrame', SUF.Update_FocusTargetFrame)
|
|
hooksecurefunc(UF, 'Update_PetFrame', SUF.Update_PetFrame)
|
|
hooksecurefunc(UF, 'Update_PetTargetFrame', SUF.Update_PetTargetFrame)
|
|
|
|
--* Group Units
|
|
hooksecurefunc(UF, "Update_PartyFrames", SUF.Update_PartyFrames)
|
|
hooksecurefunc(UF, "Update_RaidFrames", SUF.Update_RaidFrames)
|
|
hooksecurefunc(UF, "Update_TankFrames", SUF.Update_TankFrames)
|
|
hooksecurefunc(UF, "Update_AssistFrames", SUF.Update_AssistFrames)
|
|
hooksecurefunc(UF, "Update_ArenaFrames", SUF.Update_ArenaFrames)
|
|
hooksecurefunc(UF, 'Update_BossFrames', SUF.Update_BossFrames)
|
|
end
|
|
|
|
function SUF:Initialize()
|
|
if not SLE.initialized or not E.private.unitframe.enable then return end
|
|
|
|
hooksecurefunc(UF, 'Configure_ClassBar', SUF.Configure_ClassBar)
|
|
--* Construct Elements/Etc
|
|
HookConstructUnitFrames()
|
|
|
|
--* Configure/Update Elements
|
|
HookUpdateUnitFrames()
|
|
hooksecurefunc(UF, 'Update_StatusBars', SUF.Update_StatusBars)
|
|
hooksecurefunc(UF, 'Update_StatusBar', SUF.Update_StatusBar)
|
|
hooksecurefunc(UF, 'ToggleTransparentStatusBar', SUF.ToggleTransparentStatusBar)
|
|
|
|
--Raid stuff
|
|
SUF.specNameToRole = {}
|
|
for i = 1, GetNumClasses() do
|
|
local _, class, classID = GetClassInfo(i)
|
|
SUF.specNameToRole[class] = {}
|
|
for j = 1, GetNumSpecializationsForClassID(classID) do
|
|
local _, spec, _, _, role = GetSpecializationInfoForClassID(classID, j)
|
|
SUF.specNameToRole[class][spec] = role
|
|
end
|
|
end
|
|
|
|
function SUF:ForUpdateAll()
|
|
|
|
end
|
|
end
|
|
|
|
SLE:RegisterModule(SUF:GetName())
|
|
|