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.

113 lines
3.7 KiB

5 years ago
local SLE, T, E, L, V, P, G = unpack(select(2, ...))
local UF = E.UnitFrames
local SUF = SLE.UnitFrames
SUF.CreatedShadows = {}
--GLOBALS: hooksecurefunc, CreateFrame
local function UpdateAuraTimer(self, elapsed)
local timervalue, formatid
local unitID = self:GetParent():GetParent().unitframeType
local auraType = self:GetParent().type
if unitID and E.db.sle.unitframes.unit[unitID] and E.db.sle.unitframes.unit[unitID].auras then
timervalue, formatid, self.nextupdate = E:GetTimeInfo(self.expirationSaved, E.db.sle.unitframes.unit[unitID].auras[auraType].threshold)
else
timervalue, formatid, self.nextupdate = E:GetTimeInfo(self.expirationSaved, 4)
end
local timeColors, timeThreshold = E.TimeColors, E.db.cooldown.threshold
if E.db.unitframe.cooldown.override and E.TimeColors['unitframe'] then
timeColors, timeThreshold = E.TimeColors['unitframe'], E.db.unitframe.cooldown.threshold
end
if not timeThreshold then
timeThreshold = E.TimeThreshold
end
if self.text:GetFont() then
self.text:SetFormattedText(("%s%s|r"):format(timeColors[formatid], E.TimeFormats[formatid][2]), timervalue)
elseif self:GetParent():GetParent().db then
self.text:FontTemplate(E.LSM:Fetch("font", E.db['unitframe'].font), self:GetParent():GetParent().db[auraType].fontSize, E.db['unitframe'].fontOutline)
self.text:SetFormattedText(("%s%s|r"):format(timeColors[formatid], E.TimeFormats[formatid][2]), timervalue)
end
end
function SUF:UpdateUnitFrames()
--* Groups Folder
SUF:InitArena()
SUF:InitBoss()
SUF:InitParty()
SUF:InitRaid()
SUF:InitRaid40()
--* Units Folder
SUF:InitFocus()
SUF:InitFocusTarget()
SUF:InitPet()
SUF:InitPetTarget()
SUF:InitPlayer()
SUF:InitTarget()
SUF:InitTargetTarget()
SUF:InitTargetTargetTarget()
end
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:Initialize()
if not SLE.initialized or not E.private.unitframe.enable then return end
--DB convert
if E.private.sle.unitframe.resizeHealthPrediction then E.private.sle.unitframe.resizeHealthPrediction = nil end
-- Init and Update Unitframe Stuff which is shadows atm
SUF:UpdateUnitFrames()
--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
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:SetScript("OnEvent", function(self, event)
self:UnregisterEvent(event)
SUF:SetRoleIcons()
if E.private.sle.unitframe.statusbarTextures.cast then SUF:CastBarHook() end
end)
--Hooking to group frames
hooksecurefunc(UF, "Update_PartyFrames", SUF.Update_GroupFrames)
hooksecurefunc(UF, "Update_RaidFrames", SUF.Update_GroupFrames)
hooksecurefunc(UF, "Update_Raid40Frames", SUF.Update_GroupFrames)
--Hook pvp icons
SUF:UpgradePvPIcon()
SUF:InitStatus()
hooksecurefunc(UF, "UpdateAuraTimer", UpdateAuraTimer)
function SUF:ForUpdateAll()
SUF:SetRoleIcons()
if E.private.sle.unitframe.statusbarTextures.power then SUF:BuildStatusTable() end
if E.private.sle.module.shadows.enable then SUF:UpdateUnitFrames() end
end
end
SLE:RegisterModule(SUF:GetName())