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())