ElvUI/Modules/Skins/Blizzard/MirrorTimers.lua

56 lines
1.7 KiB
Lua
Raw Permalink Normal View History

2020-11-13 14:27:50 -05:00
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local function MirrorTimer_OnUpdate(frame, elapsed)
if frame.paused then return end
if frame.timeSinceUpdate >= 0.3 then
local minutes = frame.value/60
local seconds = frame.value%60
local text = frame.label:GetText()
if frame.value > 0 then
frame.TimerText:SetFormattedText('%s (%d:%02d)', text, minutes, seconds)
else
frame.TimerText:SetFormattedText('%s (0:00)', text)
end
frame.timeSinceUpdate = 0
else
frame.timeSinceUpdate = frame.timeSinceUpdate + elapsed
end
end
function S:MirrorTimers()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.mirrorTimers) then return end
--Mirror Timers (Underwater Breath etc.), credit to Azilroka
for i = 1, _G.MIRRORTIMER_NUMTIMERS do
local mirrorTimer = _G['MirrorTimer'..i]
local statusBar = _G['MirrorTimer'..i..'StatusBar']
local text = _G['MirrorTimer'..i..'Text']
mirrorTimer:StripTextures()
mirrorTimer:Size(222, 18)
mirrorTimer.label = text
statusBar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(statusBar)
statusBar:CreateBackdrop()
statusBar:Size(222, 18)
text:Hide()
local TimerText = mirrorTimer:CreateFontString(nil, 'OVERLAY')
TimerText:FontTemplate(nil, nil, 'OUTLINE')
TimerText:Point('CENTER', statusBar, 'CENTER', 0, 0)
mirrorTimer.TimerText = TimerText
mirrorTimer.timeSinceUpdate = 0.3 --Make sure timer value updates right away on first show
mirrorTimer:HookScript('OnUpdate', MirrorTimer_OnUpdate)
E:CreateMover(mirrorTimer, 'MirrorTimer'..i..'Mover', L["MirrorTimer"]..i, nil, nil, nil, 'ALL,SOLO')
end
end
S:AddCallback('MirrorTimers')