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

179 lines
4.0 KiB
Lua

local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
CinematicExUI = HL.Class('CinematicExUI', UIWidgetBase)
CinematicExUI.m_exNodeExistTime = HL.Field(HL.Number) << -1
CinematicExUI.m_pause = HL.Field(HL.Boolean) << false
CinematicExUI.m_tickKey = HL.Field(HL.Number) << -1
CinematicExUI.m_exNodeTween = HL.Field(HL.Any)
CinematicExUI._OnFirstTimeInit = HL.Override() << function(self)
self.view.touch.onClick:RemoveAllListeners()
self.view.touch.onClick:AddListener(function()
if self.m_exNodeExistTime < 0 then
self:_TrySwitchExNode(true)
else
self:RefreshExistTime(Tables.cinematicConst.cinematicUIShowTime + UIConst.CINEMATIC_TWEEN_TIME)
end
end)
end
CinematicExUI.InitCinematicExUI = HL.Method() << function(self)
self:_FirstTimeInit()
self:Clear()
self:_EnableControllerKeyCheckTick()
end
CinematicExUI.Clear = HL.Method() << function(self)
self.m_pause = false
self.view.exUINode.gameObject:SetActive(false)
self:RefreshExistTime(-1)
self:_ClearExNodeTween()
self:_ClearTickUpdate()
self:_DisableControllerKeyCheckTick()
end
CinematicExUI.RefreshExistTime = HL.Method(HL.Number) << function(self, existTime)
self.m_exNodeExistTime = existTime
end
CinematicExUI.SetPause = HL.Method(HL.Boolean) << function(self, pause)
self.m_pause = pause
end
CinematicExUI._TrySwitchExNode = HL.Method(HL.Boolean) << function(self, show)
if self.m_exNodeTween then
return
end
local exUINode = self.view.exUINode
local active = exUINode.gameObject.activeSelf
if show and not active then
self:_ClearExNodeTween()
exUINode.gameObject:SetActive(true)
exUINode.alpha = 0
self.m_exNodeTween = exUINode:DOFade(1, UIConst.CINEMATIC_TWEEN_TIME)
self:RefreshExistTime(Tables.cinematicConst.cinematicUIShowTime + UIConst.CINEMATIC_TWEEN_TIME)
self.m_exNodeTween:OnComplete(function()
self:_ClearExNodeTween()
end)
self:_ClearTickUpdate()
self.m_tickKey = LuaUpdate:Add("Tick", function(deltaTime)
if not self.m_pause then
if self.m_exNodeExistTime > 0 then
self.m_exNodeExistTime = self.m_exNodeExistTime - deltaTime
else
self:_TrySwitchExNode(false)
end
end
end)
elseif not show and active then
self:_ClearExNodeTween()
exUINode.gameObject:SetActive(true)
exUINode.alpha = 1
self.m_exNodeTween = exUINode:DOFade(0, UIConst.CINEMATIC_TWEEN_TIME)
self.m_exNodeTween:OnComplete(function()
self:_ClearExNodeTween()
exUINode.gameObject:SetActive(false)
self:_ClearTickUpdate()
end)
end
end
CinematicExUI._ClearExNodeTween = HL.Method() << function(self)
if self.m_exNodeTween then
self.m_exNodeTween:Kill()
end
self.m_exNodeTween = nil
end
CinematicExUI._ClearTickUpdate = HL.Method() << function(self)
if self.m_tickKey > 0 then
LuaUpdate:Remove(self.m_tickKey)
end
self.m_tickKey = -1
end
CinematicExUI.m_controllerKeyCheckTick = HL.Field(HL.Number) << -1
CinematicExUI._EnableControllerKeyCheckTick = HL.Method() << function(self)
if not DeviceInfo.usingController then
return
end
self.m_controllerKeyCheckTick = LuaUpdate:Add("Tick", function(deltaTime)
if InputManagerInst:AnyGamepadKey() then
if self.m_exNodeExistTime < 0 then
self:_TrySwitchExNode(true)
else
self:RefreshExistTime(Tables.cinematicConst.cinematicUIShowTime + UIConst.CINEMATIC_TWEEN_TIME)
end
end
end)
end
CinematicExUI._DisableControllerKeyCheckTick = HL.Method() << function(self)
if self.m_controllerKeyCheckTick > 0 then
LuaUpdate:Remove(self.m_controllerKeyCheckTick)
self.m_controllerKeyCheckTick = -1
end
end
HL.Commit(CinematicExUI)
return CinematicExUI