PGRData/Script/matrix/xui/xuiscenetip/XUiSceneTip.lua
2024-09-01 22:49:41 +02:00

163 lines
No EOL
5.9 KiB
Lua

local XUiSceneTip = XLuaUiManager.Register(XLuaUi, "UiSceneTip")
local UiMainMenuType = {
Main = 1,
Second = 2,
}
function XUiSceneTip:OnAwake()
self:AddClickListener()
end
function XUiSceneTip:OnStart(sceneId,openType)
self.SceneId = sceneId
self.OpenType=openType
local sceneTemplate = XDataCenter.PhotographManager.GetSceneTemplateById(self.SceneId)
local scenePath, modelPath = XSceneModelConfigs.GetSceneAndModelPathById(sceneTemplate.SceneModelId)
self:LoadUiScene(scenePath, modelPath, function() self:SetBatteryUi() end, false)
self:AutoSetUi()
end
function XUiSceneTip:OnEnable()
self:Refresh()
self:AddEventListener()
-- 开启时钟
self.ClockTimer = XUiHelper.SetClockTimeTempFun(self)
end
function XUiSceneTip:OnDisable()
self:RemoveEventListener()
-- 关闭时钟
if self.ClockTimer then
XUiHelper.StopClockTimeTempFun(self, self.ClockTimer)
self.ClockTimer = nil
end
end
function XUiSceneTip:Refresh()
self:UpdateBatteryMode()
self.TogPreview.isOn = false
local isFirst = XDataCenter.PhotographManager.GetPreviewState() == XPhotographConfigs.BackGroundState.Full
if self.BtnSwitch then self.BtnSwitch:RefreshSelect(isFirst) end
end
function XUiSceneTip:SetBatteryUi()
--self:SetGameObject()
-- 场景虚拟相机
self.CamFarMain = self:FindVirtualCamera("CamFarMain")
if self.CamFarMain then self.CamFarMain.gameObject:SetActive(true) end
-- 场景动画
self.AnimationRoot = self.UiSceneInfo.Transform:Find("Animations")
if XTool.UObjIsNil(self.AnimationRoot) then return end
self.ToChargeTimeLine = self.AnimationRoot:Find("ToChargeTimeLine")
self.ToFullTimeLine = self.AnimationRoot:Find("ToFullTimeLine")
self.FullTimeLine = self.AnimationRoot:Find("FullTimeLine")
self.ChargeTimeLine = self.AnimationRoot:Find("ChargeTimeLine")
self.ToChargeTimeLine.gameObject:SetActiveEx(false)
self.ToFullTimeLine.gameObject:SetActiveEx(false)
self.FullTimeLine.gameObject:SetActiveEx(false)
self.ChargeTimeLine.gameObject:SetActiveEx(false)
end
function XUiSceneTip:UpdateBatteryMode()
if XTool.UObjIsNil(self.AnimationRoot) then return end
local particleGroupName = XDataCenter.PhotographManager.GetSceneTemplateById(self.SceneId).ParticleGroupName
local chargeAnimator = nil
if particleGroupName and particleGroupName ~= "" then
local chargeAnimatorTrans = self.UiSceneInfo.Transform:FindTransform(particleGroupName)
if chargeAnimatorTrans then
chargeAnimator = chargeAnimatorTrans:GetComponent("Animator")
else
XLog.Error("Can't Find \"" .. particleGroupName .. "\", Plase Check \"ParticleGroupName\" In Share/PhotoMode/Background.tab")
end
end
if XDataCenter.PhotographManager.GetPreviewState() == XPhotographConfigs.BackGroundState.Full then --满电状态
if chargeAnimator then chargeAnimator:Play("Full") end
self.FullTimeLine.gameObject:SetActiveEx(true)
self.ChargeTimeLine.gameObject:SetActiveEx(false)
else
if chargeAnimator then chargeAnimator:Play("Low") end
self.FullTimeLine.gameObject:SetActiveEx(false)
self.ChargeTimeLine.gameObject:SetActiveEx(true)
end
end
function XUiSceneTip:AutoSetUi()
local tags = XPhotographConfigs.GetBackgroundTagById(self.SceneId)
local sceneName = XPhotographConfigs.GetBackgroundNameById(self.SceneId)
for i = 1, 2 do
local name = "Function" .. i
local txtName = "TxtFunction" .. i
if not string.IsNilOrEmpty(tags[i])then
self[name].gameObject:SetActiveEx(true)
self[txtName].text = tags[i]
else
self[name].gameObject:SetActiveEx(false)
end
end
self.SceneName.text = sceneName
self.TogPreview.isOn = false
self.BtnUiAwake.gameObject:SetActiveEx(false)
if self.SwitchBtn == nil then return end
if not XTool.IsTableEmpty(XPhotographConfigs.GetBackgroundSwitchDescById(self.SceneId)) then
local btn = require("XUi/XUiSceneTip/XUiSwitchBtn")
self.BtnSwitch = btn.New(self.SwitchBtn, XDataCenter.PhotographManager.GetPreviewState() == XPhotographConfigs.BackGroundState.Full, self.SceneId)
else
self.SwitchBtn.gameObject:SetActiveEx(false)
end
end
function XUiSceneTip:AddClickListener()
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
self:RegisterClickEvent(self.TogPreview, self.OnTogPreview)
end
function XUiSceneTip:OnBtnBackClick()
-- 清除预览场景Id避免返回主界面场景未恢复原有场景
XDataCenter.PhotographManager.ClearPreviewSceneId()
XLuaUiManager.Remove("UiSceneMainPreview")
XDataCenter.GuideManager.SetDisableGuide(false)
if self.OpenType==XPhotographConfigs.PreviewOpenType.SceneSetting then
XLuaUiManager.RemoveTopOne('UiMain')
end
self:Close()
end
function XUiSceneTip:OnTogPreview()
self:PlayAnimationWithMask("DarkEnable", function ()
if self.OpenType==XPhotographConfigs.PreviewOpenType.SceneSetting then
XDataCenter.PhotographManager.SetPreviewSceneId(self.SceneId)
XDataCenter.GuideManager.SetDisableGuide(true)
XEventManager.DispatchEvent(XEventId.EVENT_SCENE_UIMAIN_RIGHTMIDTYPE_CHANGE, UiMainMenuType.Main)
self:Close()
else
XLuaUiManager.RemoveTopOne('UiSceneTip')
XDataCenter.PhotographManager.OpenScenePreview(self.SceneId)
end
end)
end
function XUiSceneTip:AddEventListener()
XEventManager.AddEventListener(XEventId.EVENT_SCENE_PREVIEW_STATE_CHANGE, self.PlayChangeModeAnim, self)
end
function XUiSceneTip:RemoveEventListener()
XEventManager.RemoveEventListener(XEventId.EVENT_SCENE_PREVIEW_STATE_CHANGE, self.PlayChangeModeAnim, self)
end
function XUiSceneTip:PlayChangeModeAnim()
self:PlayAnimationWithMask("DarkEnable", function ()
self:Refresh()
self:PlayAnimationWithMask("DarkDisable", function ()
end)
end)
end