56 lines
1.7 KiB
Lua
56 lines
1.7 KiB
Lua
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')
|