167 lines
3.1 KiB
Lua
167 lines
3.1 KiB
Lua
local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Toast = HL.Class('Toast', UIWidgetBase)
|
|
|
|
|
|
Toast.m_isInMainHud = HL.Field(HL.Boolean) << false
|
|
|
|
|
|
Toast.m_isToastShowReady = HL.Field(HL.Boolean) << false
|
|
|
|
|
|
Toast.m_isToastShow = HL.Field(HL.Boolean) << false
|
|
|
|
|
|
Toast.m_toastTimerId = HL.Field(HL.Number) << -1
|
|
|
|
|
|
Toast.m_args = HL.Field(HL.Table)
|
|
|
|
|
|
|
|
Toast._OnDisable = HL.Override() << function(self)
|
|
self:_HideToast()
|
|
end
|
|
|
|
|
|
|
|
Toast._OnDestroy = HL.Override() << function(self)
|
|
self:_HideToast()
|
|
end
|
|
|
|
|
|
|
|
|
|
Toast._OnFirstTimeInit = HL.Override() << function(self)
|
|
self:RegisterMessage(MessageConst.ON_PHASE_LEVEL_ON_TOP, function()
|
|
self:OnEnterMainHud()
|
|
end)
|
|
|
|
self:RegisterMessage(MessageConst.ON_PHASE_LEVEL_NOT_ON_TOP, function()
|
|
self:OnLeaveMainHud()
|
|
end)
|
|
end
|
|
|
|
|
|
|
|
|
|
Toast.InitToast = HL.Method(HL.Opt(HL.Table)) << function(self, args)
|
|
self:_FirstTimeInit()
|
|
|
|
self.m_args = args
|
|
self.m_isInMainHud = PhaseManager:GetTopPhaseId() == PhaseId.Level
|
|
|
|
self.view.rectTransform.gameObject:SetActive(false)
|
|
end
|
|
|
|
|
|
|
|
Toast.OnEnterMainHud = HL.Method() << function(self)
|
|
self.m_isInMainHud = true
|
|
|
|
if self.m_isToastShowReady then
|
|
self:ShowToast()
|
|
end
|
|
end
|
|
|
|
|
|
|
|
Toast.OnLeaveMainHud = HL.Method() << function(self)
|
|
self.m_isInMainHud = false
|
|
end
|
|
|
|
|
|
|
|
Toast.ShowToast = HL.Method() << function(self)
|
|
if self.view.config.IS_MAIN_HUD_TOAST and not self.m_isInMainHud then
|
|
self.m_isToastShowReady = true
|
|
return
|
|
end
|
|
|
|
if not self.m_isToastShow then
|
|
self.view.rectTransform.gameObject:SetActive(true)
|
|
|
|
self.m_toastTimerId = self:_StartTimer(self.view.config.SHOW_TOAST_DURATION, function()
|
|
self:HideToast()
|
|
end)
|
|
end
|
|
|
|
if self.m_isToastShow and self.view.config.IS_NEW_TOAST_REFRESH_TIMER then
|
|
self.m_toastTimerId = self:_ClearTimer(self.m_toastTimerId)
|
|
|
|
self.m_toastTimerId = self:_StartTimer(self.view.config.SHOW_TOAST_DURATION, function()
|
|
self:HideToast()
|
|
end)
|
|
end
|
|
|
|
self.m_isToastShow = true
|
|
|
|
if self.view.animation ~= nil then
|
|
self.view.animation:PlayInAnimation()
|
|
end
|
|
|
|
if self.m_isToastShowReady then
|
|
self.m_isToastShowReady = false
|
|
end
|
|
end
|
|
|
|
|
|
|
|
Toast.HideToast = HL.Method() << function(self)
|
|
local finishFunc
|
|
if self.m_args then
|
|
finishFunc = self.m_args.finishFunc
|
|
end
|
|
|
|
if self.view.animation == nil then
|
|
self:_HideToast()
|
|
if finishFunc then
|
|
finishFunc()
|
|
end
|
|
else
|
|
self.view.animation:PlayOutAnimation(function()
|
|
self:_HideToast()
|
|
if finishFunc then
|
|
finishFunc()
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
Toast.IsToastShow = HL.Method().Return(HL.Boolean) << function(self)
|
|
return self.m_isToastShow
|
|
end
|
|
|
|
|
|
|
|
Toast._HideToast = HL.Method() << function(self)
|
|
if not self.m_isToastShow then
|
|
return
|
|
end
|
|
|
|
self.m_isToastShow = false
|
|
self.m_toastTimerId = self:_ClearTimer(self.m_toastTimerId)
|
|
self.view.rectTransform.gameObject:SetActiveIfNecessary(false)
|
|
end
|
|
|
|
HL.Commit(Toast)
|
|
return Toast
|