142 lines
3.2 KiB
Lua
142 lines
3.2 KiB
Lua
|
|
local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
|
|
local PANEL_ID = PanelId.DialogTimelineMask
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl = HL.Class('DialogTimelineMaskCtrl', uiCtrl.UICtrl)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl.s_messages = HL.StaticField(HL.Table) << {
|
|
[MessageConst.ON_START_CAMERA_CROSS_FADE] = 'OnStartCameraCrossFade',
|
|
[MessageConst.ON_STOP_CAMERA_CROSS_FADE] = 'OnStopCameraCrossFade',
|
|
}
|
|
|
|
|
|
DialogTimelineMaskCtrl.m_setCaptureCor = HL.Field(HL.Thread)
|
|
|
|
|
|
DialogTimelineMaskCtrl.m_captureRtHandle = HL.Field(HL.Userdata)
|
|
|
|
|
|
DialogTimelineMaskCtrl.m_timelineHandle = HL.Field(HL.Userdata)
|
|
|
|
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
|
|
self.m_timelineHandle = unpack(arg)
|
|
end
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl._InitBorderMask = HL.Method() << function(self, arg)
|
|
local useBlack = true
|
|
if GameWorld.dialogManager.dialogTree then
|
|
local dialogType = GameWorld.dialogManager.dialogTree.dialogType
|
|
local normal = dialogType == Const.DialogType.Normal
|
|
if normal then
|
|
useBlack = false
|
|
end
|
|
else
|
|
useBlack = false
|
|
end
|
|
|
|
if useBlack then
|
|
local screenWidth = Screen.width
|
|
local screenHeight = Screen.height
|
|
|
|
local maxScreenWidth = UIConst.MAX_DIALOG_ASPECT_RATIO * screenHeight
|
|
local borderSize = (screenWidth - maxScreenWidth) / 2
|
|
local ratio = self.view.transform.rect.width / Screen.width
|
|
|
|
self.view.leftBorder.gameObject:SetActive(true)
|
|
self.view.rightBorder.gameObject:SetActive(true)
|
|
|
|
|
|
else
|
|
self.view.leftBorder.gameObject:SetActive(false)
|
|
self.view.rightBorder.gameObject:SetActive(false)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl.OnShow = HL.Override() << function(self)
|
|
self:_InitBorderMask()
|
|
GameWorld.dialogTimelineManager:BindCameraCrossFadeMask(self.m_timelineHandle, self.view.cameraCrossFade)
|
|
end
|
|
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl.OnStartCameraCrossFade = HL.Method() << function(self)
|
|
self:_ReleaseCaptureRt()
|
|
self.m_captureRtHandle = ScreenCaptureUtils.GetScreenCaptureWithoutUI();
|
|
self.m_setCaptureCor = self:_StartCoroutine(function() return self:_SetScreenCapture() end)
|
|
end
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl._SetScreenCapture = HL.Method() << function(self)
|
|
coroutine.waitForRenderDone()
|
|
if self.m_captureRtHandle then
|
|
self.view.cameraCrossFade.texture = self.m_captureRtHandle.rt
|
|
self.view.cameraCrossFade.gameObject:SetActive(true)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl._ReleaseCaptureRt = HL.Method() << function(self)
|
|
if self.m_captureRtHandle then
|
|
self.m_captureRtHandle:Release()
|
|
self.m_captureRtHandle = nil
|
|
end
|
|
end
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl.OnStopCameraCrossFade = HL.Method() << function(self)
|
|
if self.m_setCaptureCor then
|
|
self:_ClearCoroutine(self.m_setCaptureCor)
|
|
self.m_setCaptureCor = nil
|
|
end
|
|
|
|
self:_ReleaseCaptureRt()
|
|
self.view.cameraCrossFade.gameObject:SetActive(false)
|
|
self.view.cameraCrossFade.texture = nil
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
DialogTimelineMaskCtrl.OnClose = HL.Override() << function(self)
|
|
if self.m_setCaptureCor then
|
|
self:_ClearCoroutine(self.m_setCaptureCor)
|
|
self.m_setCaptureCor = nil
|
|
end
|
|
|
|
self:_ReleaseCaptureRt()
|
|
end
|
|
|
|
HL.Commit(DialogTimelineMaskCtrl)
|