Files
Endfield-Data/LuaScripts/UI/Widgets/CountDownText.lua
2025-12-02 20:37:18 +07:00

81 lines
1.5 KiB
Lua

local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
CountDownText = HL.Class('CountDownText', UIWidgetBase)
CountDownText._OnFirstTimeInit = HL.Override() << function(self)
end
CountDownText.m_cor = HL.Field(HL.Thread)
CountDownText.m_onComplete = HL.Field(HL.Function)
CountDownText.m_timeFormatFunc = HL.Field(HL.Function)
CountDownText.m_targetTime = HL.Field(HL.Number) << -1
CountDownText.InitCountDownText = HL.Method(HL.Number, HL.Opt(HL.Function, HL.Function)) << function(self, targetTime, onComplete, timeFormatFunc)
self:_FirstTimeInit()
self.m_targetTime = targetTime
self.m_onComplete = onComplete
self.m_timeFormatFunc = timeFormatFunc or UIUtils.getLeftTime
self:_Update()
self.m_cor = self:_ClearCoroutine(self.m_cor)
self.m_cor = self:_StartCoroutine(function()
while true do
coroutine.wait(1)
self:_Update()
end
end)
end
CountDownText.StopCountDown = HL.Method() << function(self)
if self.m_cor then
self.m_cor = self:_ClearCoroutine(self.m_cor)
end
end
CountDownText._Update = HL.Method() << function(self)
local curTime = DateTimeUtils.GetCurrentTimestampBySeconds()
local leftTime = self.m_targetTime - curTime
self.view.text:SetAndResolveTextStyle(self.m_timeFormatFunc(leftTime))
if leftTime <= 0 then
self.m_cor = self:_ClearCoroutine(self.m_cor)
if self.m_onComplete then
self.m_onComplete()
end
end
end
HL.Commit(CountDownText)
return CountDownText