150 lines
3.1 KiB
Lua
150 lines
3.1 KiB
Lua
local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TipsLimitedTimeNode = HL.Class('TipsLimitedTimeNode', UIWidgetBase)
|
|
|
|
|
|
local TICK_TIME_INTERVAL = 2
|
|
|
|
|
|
|
|
TipsLimitedTimeNode.m_itemId = HL.Field(HL.String) << ""
|
|
|
|
|
|
TipsLimitedTimeNode.m_instId = HL.Field(HL.Number) << 0
|
|
|
|
|
|
TipsLimitedTimeNode.m_info = HL.Field(HL.Table)
|
|
|
|
|
|
TipsLimitedTimeNode.m_onTimeOut = HL.Field(HL.Function)
|
|
|
|
|
|
TipsLimitedTimeNode.m_luaUpdateKey = HL.Field(HL.Number) << 0
|
|
|
|
|
|
TipsLimitedTimeNode.m_deltaTime = HL.Field(HL.Number) << 0
|
|
|
|
|
|
TipsLimitedTimeNode.m_isExpireWarningState = HL.Field(HL.Boolean) << false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TipsLimitedTimeNode._OnFirstTimeInit = HL.Override() << function(self)
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TipsLimitedTimeNode.InitTipsLimitedTimeNode = HL.Method(HL.String, HL.Number, HL.Opt(HL.Function)) << function(self, itemId, instId, onTimeOut)
|
|
self:_FirstTimeInit()
|
|
|
|
self.m_itemId = itemId
|
|
self.m_instId = instId
|
|
self.m_info = Utils.getLTItemExpireInfo(itemId, instId)
|
|
self.m_onTimeOut = onTimeOut
|
|
self:_ToggleTickTime(false)
|
|
self:_ToggleTickTime(true)
|
|
end
|
|
|
|
|
|
|
|
TipsLimitedTimeNode._OnEnable = HL.Override() << function(self)
|
|
self:_ToggleTickTime(true)
|
|
end
|
|
|
|
|
|
|
|
TipsLimitedTimeNode._OnDisable = HL.Override() << function(self)
|
|
self:_ToggleTickTime(false)
|
|
end
|
|
|
|
|
|
|
|
TipsLimitedTimeNode._OnDestroy = HL.Override() << function(self)
|
|
self:_ToggleTickTime(false)
|
|
end
|
|
|
|
|
|
|
|
|
|
TipsLimitedTimeNode._ToggleTickTime = HL.Method(HL.Boolean) << function(self, isOn)
|
|
if isOn then
|
|
if not self.m_info.isLTItem then
|
|
self.view.gameObject:SetActive(false)
|
|
return
|
|
end
|
|
if self.m_luaUpdateKey > 0 then
|
|
return
|
|
end
|
|
self.view.gameObject:SetActive(true)
|
|
|
|
self.m_isExpireWarningState = false
|
|
self.view.stateController:SetState("Normal")
|
|
self:_RefreshTime()
|
|
|
|
if self.m_luaUpdateKey <= 0 then
|
|
self.m_luaUpdateKey = LuaUpdate:Add("LateTick", function(deltaTime)
|
|
self.m_deltaTime = self.m_deltaTime + deltaTime
|
|
if self.m_deltaTime >= TICK_TIME_INTERVAL then
|
|
self.m_deltaTime = 0
|
|
self:_RefreshTime()
|
|
end
|
|
end)
|
|
end
|
|
else
|
|
self.m_luaUpdateKey = LuaUpdate:Remove(self.m_luaUpdateKey)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
TipsLimitedTimeNode._RefreshTime = HL.Method() << function(self)
|
|
local curTime = DateTimeUtils.GetCurrentTimestampBySeconds()
|
|
local leftTime = self.m_info.expireTime - curTime
|
|
if leftTime <= 0 then
|
|
self.m_info.isExpire = true
|
|
end
|
|
|
|
local isAlmostExpire = leftTime <= self.m_info.almostExpireTime
|
|
if self.m_isExpireWarningState ~= isAlmostExpire then
|
|
self.m_isExpireWarningState = true
|
|
self.view.stateController:SetState("Warning")
|
|
end
|
|
|
|
if self.m_info.isExpire then
|
|
self.view.timeTxt.text = Language.LUA_ITEM_TIPS_LIMIT_TIME_ITEM_IS_EXPIRE
|
|
self:_ToggleTickTime(false)
|
|
if self.m_onTimeOut then
|
|
self.m_onTimeOut()
|
|
end
|
|
else
|
|
self.view.timeTxt.text = UIUtils.getLeftTime(leftTime)
|
|
end
|
|
end
|
|
|
|
|
|
HL.Commit(TipsLimitedTimeNode)
|
|
return TipsLimitedTimeNode
|
|
|