PGRData/Script/matrix/xui/xuimain/XUiMain.lua

618 lines
21 KiB
Lua
Raw Normal View History

2024-09-01 20:49:41 +00:00
--local XUiMainDown = require("XUi/XUiMain/XUiMainDown")
local XUiMainRightTop = require("XUi/XUiMain/XUiMainRightTop")
local XUiMainRightMid = require("XUi/XUiMain/XUiMainRightMid")
local XUiMainLeftTop = require("XUi/XUiMain/XUiMainLeftTop")
2024-09-01 20:49:41 +00:00
--local XUiMainRightMidSecond = require("XUi/XUiMain/XUiMainRightMidSecond")
local XUiMainRightBottom = require("XUi/XUiMain/XUiMainRightBottom")
2024-09-01 20:49:41 +00:00
--local XUiMainLeftMid = require("XUi/XUiMain/XUiMainLeftMid")
local XUiMainLeftBottom = require("XUi/XUiMain/XUiMainLeftBottom")
local XUiMainOther = require("XUi/XUiMain/XUiMainOther")
local XUiPanelSignBoard = require("XUi/XUiMain/XUiChildView/XUiPanelSignBoard")
2024-09-01 20:49:41 +00:00
local XUiMainCalendar = require("XUi/XUiMain/XUiMainCalendar")
2024-09-01 20:49:41 +00:00
---@class XUiMain : XLuaUi
local XUiMain = XLuaUiManager.Register(XLuaUi, "UiMain")
local CameraIndex = {
Main = 1,
MainEnter = 2,
MainChatEnter = 3,
2024-09-01 20:49:41 +00:00
MainRightMidSecondEnter = 4,
}
local MenuType = {
Main = 1,
Second = 2,
}
XUiMain.LowPowerState = {
Full = 1,
Low = 2,
LowToFull = 3,
FullToLow = 4,
None = 5
}
local RightMidType = MenuType.Main
2024-09-01 20:49:41 +00:00
local InitBackgroundScreenCapture = false
function XUiMain:InitPanel()
---@type XUiMainRightTop
self.RightTop = XUiMainRightTop.New(self.PanelRightTop.transform, self, self) --右上角组件(资源、电量、时间、设置、邮件……)
self.RightMid = XUiMainRightMid.New(self.PanelRightMid, self, self) --右中角组件(各种功能……)
--self.RightMidSecond = XUiMainRightMidSecond.New(self) -- 右中角二级菜单
self.RightBottom = XUiMainRightBottom.New(self.PanelRightBottom.transform, self, self) --右下角组件(各个大功能入口……)
---@type XUiMainLeftTop
self.LeftTop = XUiMainLeftTop.New(self.PanelLeftTop, self, self) --左上角组件(玩家信息……)
--self.LeftMid = XUiMainLeftMid.New(self.PanelLeftMid.transform, self) --左中角组件(自动战斗、过期提醒……)
self.LeftBottom = XUiMainLeftBottom.New(self.PanelLeftBottom.transform, self) --左下角组件公告、好友、福利、AD、聊天……
---@type XUiMainOther
self.Other = XUiMainOther.New(self.PanelOther.transform, self, self) --其他组件(角色触摸、截图……)
--self.Down = XUiMainDown.New(self.PanelDown, self, self) --底部组件(战斗通行证……)
self.Terminal = require("XUi/XUiMain/XUiMainTerminal").New(self.PanelRightMidSecond.transform, self, self) --终端界面
---@type XUiMainCalendar
self.Calendar = XUiMainCalendar.New(self.PanelLeftCalendar, self, self) --周历界面
-- self.AreanOnline = XUiPanelArenaOnline.New(self, self.PanelArenaOnline) --屏蔽合众战局
end
function XUiMain:OnAwake()
--BDC
CS.XHeroBdcAgent.BdcIntoGame(CS.UnityEngine.Time.time)
2024-09-01 20:49:41 +00:00
self.PreEnterFightCallback = function() self:OnPreEnterFight() end
XEventManager.AddEventListener(XEventId.EVENT_PRE_ENTER_FIGHT, self.PreEnterFightCallback)
2024-09-01 20:49:41 +00:00
XEventManager.AddEventListener(XEventId.EVENT_SCENE_UIMAIN_RIGHTMIDTYPE_CHANGE, self.ForceChangeUiMainRightMidType, self)
--self.Down.GameObject:SetActiveEx(not XUiManager.IsHideFunc)
self.PanelLeftBottom.gameObject:SetActiveEx(not XUiManager.IsHideFunc)
end
function XUiMain:OnStart()
2024-09-01 20:49:41 +00:00
self:InitPanel()
self:InitTheme()
-- 注销后重新登录 主界面默认不显示二级菜单
if XLoginManager.IsFirstOpenMainUi() then
RightMidType = MenuType.Main
end
2024-09-01 20:49:41 +00:00
--界面重新打开
self.NewOpen = true
if InitBackgroundScreenCapture == false then
CS.XBlurHelper.GetBlurScreenCapture(CS.XUiManager.Instance.UiCamera,
CS.XGraphicManager.RenderConst.Ui.PopupBackgroundBlurInfo, function(tex2D)
CS.UnityEngine.Object.DestroyImmediate(tex2D);
-- CS.XLog.Debug("----- InitBackgroundScreenCapture")
end, false);
InitBackgroundScreenCapture = true
end
2024-09-01 20:49:41 +00:00
-- 回到主界面就重置XInputSystem.operationType
CS.XInputManager.SetCurOperationType(CS.XOperationType.System)
end
function XUiMain:OnEnable()
if XDataCenter.GuideManager.CheckIsInGuide() then
RightMidType = MenuType.Main
end
-- 刷新二级菜单
self:UpdateRightMenu()
2024-09-01 20:49:41 +00:00
CS.XResourceRecord.Stop();
-- 每次打开的时候重新加载一下场景
local curSceneId = XDataCenter.PhotographManager.GetCurSceneId()
local curSceneTemplate = XDataCenter.PhotographManager.GetSceneTemplateById(curSceneId)
local curSceneUrl, _ = XSceneModelConfigs.GetSceneAndModelPathById(curSceneTemplate.SceneModelId)
local modelUrl = self:GetDefaultUiModelUrl()
2024-09-01 20:49:41 +00:00
self.CurSceneId = curSceneId
--先加载可见界面主题
self:UpdateTheme()
self:LoadUiScene(curSceneUrl, modelUrl, function() self:OnUiSceneLoaded(curSceneTemplate.ParticleGroupName) end, false)
self:PlayEnterAnim()
2024-09-01 20:49:41 +00:00
XRedPointManager.AutoReleaseRedPointEvent()
-- self.LeftTop:OnEnable()
-- --self.LeftMid:OnEnable()
-- self.LeftBottom:OnEnable()
-- self.RightMid:OnEnable()
-- --self.RightMidSecond:OnEnable()
-- self.RightTop:OnEnable()
-- self.RightBottom:OnEnable()
-- self.Other:OnEnable()
-- self.Calendar:OnEnable()
self:SetCacheFight()
self:SetScreenAdaptorCache()
XDataCenter.SetManager.SetSceneUIType()
2024-09-01 20:49:41 +00:00
--self.Down:OnEnable()
XLoginManager.ResetHearbeatInterval()
2024-09-01 20:49:41 +00:00
self:AreanOnlineInviteNotify()
XEventManager.AddEventListener(XEventId.EVENT_SCENE_UIMAIN_STATE_CHANGE, self.OnBackGroupPreview, self)
XDataCenter.SignBoardManager.AddRoleActionUiAnimListener(self)
if not XLoginManager.IsFirstOpenMainUi() then
self:PlayEquipGuide(false)
end
-- 开启时钟
self.ClockTimer = XUiHelper.SetClockTimeTempFun(self)
end
function XUiMain:ForceChangeUiMainRightMidType(arg)
RightMidType = arg
end
function XUiMain:OnDisable()
2024-09-01 20:49:41 +00:00
-- self.LeftTop:OnDisable()
--self.LeftMid:OnDisable()
-- self.LeftBottom:OnDisable()
-- self.RightMid:OnDisable()
-- --self.RightMidSecond:OnDisable()
-- self.Other:OnDisable()
-- self.RightBottom:OnDisable()
-- self.RightTop:OnDisable()
self.Terminal:OnDisable()
-- self.Calendar:OnDisable()
--self.Down:OnDisable()
XEventManager.RemoveEventListener(XEventId.EVENT_SCENE_UIMAIN_STATE_CHANGE, self.OnBackGroupPreview, self)
XDataCenter.SignBoardManager.RemoveRoleActionUiAnimListener(self)
--界面重新打开
self.NewOpen = false
self:ClearSceneReference()
-- 关闭时钟
if self.ClockTimer then
XUiHelper.StopClockTimeTempFun(self, self.ClockTimer)
self.ClockTimer = nil
end
end
function XUiMain:OnDestroy()
self.LeftBottom:OnDestroy()
self.Other:OnDestroy()
self.RightTop:OnDestroy()
2024-09-01 20:49:41 +00:00
self.LeftTop:OnDestroy()
self.RightBottom:OnDestroy()
XEventManager.RemoveEventListener(XEventId.EVENT_PRE_ENTER_FIGHT, self.PreEnterFightCallback)
2024-09-01 20:49:41 +00:00
XEventManager.RemoveEventListener(XEventId.EVENT_SCENE_UIMAIN_RIGHTMIDTYPE_CHANGE, self.ForceChangeUiMainRightMidType, self)
end
function XUiMain:OnNotify(evt, ...)
if evt == XEventId.EVENT_CHAT_OPEN then
--打开聊天界面
self:PlayMainChatIn()
elseif evt == XEventId.EVENT_CHAT_CLOSE then
--聊天界面关闭
self:PlayMainChatOut()
elseif evt == XEventId.EVENT_CHAT_RECEIVE_PRIVATECHAT then
-- self.AreanOnline:Show(...)
elseif evt == XEventId.EVENT_GUIDE_START then
-- 进行新手引导时,切换显示为主菜单
2024-09-01 20:49:41 +00:00
self:OnShowMain()
elseif evt == XEventId.EVENT_SCENE_SET_NONE_STATE then
self:ChangeLowPowerState(self.LowPowerState.None)
end
self.LeftBottom:OnNotify(evt)
self.RightMid:OnNotify(evt)
self.RightTop:OnNotify(evt)
end
function XUiMain:OnPreEnterFight()
self:LoadUiScene("", "") -- 释放主界面角色场景
end
function XUiMain:AreanOnlineInviteNotify()
local chatdata = XDataCenter.ArenaOnlineManager.GetPrivateChatData()
if not chatdata or not next(chatdata) then
return
end
XLuaUiManager.Open("UiArenaOnlineInvitation")
end
function XUiMain:OnGetEvents()
return {
XEventId.EVENT_CHAT_OPEN,
XEventId.EVENT_CHAT_CLOSE,
XEventId.EVENT_NOTICE_PIC_CHANGE,
XEventId.EVENT_TASKFORCE_INFO_NOTIFY,
XEventId.EVENT_ACTIVITY_MAINLINE_STATE_CHANGE,
2024-09-01 20:49:41 +00:00
XAgencyEventId.EVENT_MAIL_COUNT_CHANGE,
XEventId.EVENT_CHAT_RECEIVE_PRIVATECHAT,
XEventId.EVENT_GUIDE_START,
2024-09-01 20:49:41 +00:00
XEventId.EVENT_SCENE_SET_NONE_STATE,
}
end
--初始化摄像机
function XUiMain:InitSceneRoot(particleGroupName)
local root = self.UiModelGo.transform
self.CameraFar = {
[CameraIndex.Main] = self:FindVirtualCamera("CamFarMain"),
[CameraIndex.MainEnter] = self:FindVirtualCamera("CamFarMainEnter"),
[CameraIndex.MainChatEnter] = self:FindVirtualCamera("CamFarMainChatEnter"),
2024-09-01 20:49:41 +00:00
[CameraIndex.MainRightMidSecondEnter] = self:FindVirtualCamera("CamFarMainRightMidSecondEnter"),
}
self.CameraNear = {
[CameraIndex.Main] = self:FindVirtualCamera("CamNearMain"),
[CameraIndex.MainEnter] = self:FindVirtualCamera("CamNearMainEnter"),
[CameraIndex.MainChatEnter] = self:FindVirtualCamera("CamNearMainChatEnter"),
2024-09-01 20:49:41 +00:00
[CameraIndex.MainRightMidSecondEnter] = self:FindVirtualCamera("CamNearMainRightMidSecondEnter"),
}
--主页面电量特效相关
local sceneRoot = self.UiSceneInfo.Transform
2024-09-01 20:49:41 +00:00
local animationRoot = self.UiSceneInfo.Transform:Find("Animations")
if XTool.UObjIsNil(animationRoot) then return end
if particleGroupName and particleGroupName ~= "" then
self.ChargeAnimator = sceneRoot:FindTransform(particleGroupName):GetComponent("Animator")
else
self.ChargeAnimator = nil
end
self.ToChargePD = sceneRoot:Find("Animations/ToChargeTimeLine")
self.ToFullPD = sceneRoot:Find("Animations/ToFullTimeLine")
self.FullPD = sceneRoot:Find("Animations/FullTimeLine")
self.ChargePD = sceneRoot:Find("Animations/ChargeTimeLine")
end
2024-09-01 20:49:41 +00:00
--- 清除场景引用,避免场景加载前使用
---@return void
--------------------------
function XUiMain:ClearSceneReference()
self.CameraFar = nil
self.CameraNear = nil
self.ChargeAnimator = nil
self.ToChargePD = nil
self.ToFullPD = nil
self.FullPD = nil
self.ChargePD = nil
end
function XUiMain:ChangeLowPowerPartical(state)
if self.ChargeAnimator then
if state == self.LowPowerState.Full then
self.ChargeAnimator:Play("Full")
elseif state == self.LowPowerState.Low then
self.ChargeAnimator:Play("Low")
elseif state == self.LowPowerState.LowToFull then
self.ChargeAnimator:Play("LowToFull")
elseif state == self.LowPowerState.FullToLow then
self.ChargeAnimator:Play("FullToLow")
end
end
end
function XUiMain:ChangeLowPowerTimeLine(state)
if self.ToChargePD then self.ToChargePD.gameObject:SetActiveEx(false) end
if self.ToFullPD then self.ToFullPD.gameObject:SetActiveEx(false) end
if self.FullPD then self.FullPD.gameObject:SetActiveEx(false) end
if self.ChargePD then self.ChargePD.gameObject:SetActiveEx(false) end
if state == self.LowPowerState.Full then
if self.FullPD then self.FullPD.gameObject:SetActiveEx(true) end
elseif state == self.LowPowerState.Low then
if self.ChargePD then self.ChargePD.gameObject:SetActiveEx(true) end
elseif state == self.LowPowerState.LowToFull then
if self.ToFullPD then self.ToFullPD.gameObject:SetActiveEx(true) end
elseif state == self.LowPowerState.FullToLow then
if self.ToChargePD then self.ToChargePD.gameObject:SetActiveEx(true) end
end
end
function XUiMain:ChangeLowPowerState(state)
self:ChangeLowPowerPartical(state)
self:ChangeLowPowerTimeLine(state)
end
function XUiMain:UpdateCamera(camera)
2024-09-01 20:49:41 +00:00
if not self.CameraFar or not self.CameraNear then
return
end
for _, cameraIndex in pairs(CameraIndex) do
2024-09-01 20:49:41 +00:00
local nearCamera = self.CameraNear[cameraIndex]
if not XTool.UObjIsNil(nearCamera) then
nearCamera.gameObject:SetActive(cameraIndex == camera)
end
local farCamera = self.CameraFar[cameraIndex]
if not XTool.UObjIsNil(farCamera) then
farCamera.gameObject:SetActive(cameraIndex == camera)
end
end
end
function XUiMain:UpdateRightMenu()
2024-09-01 20:49:41 +00:00
if self:IsShowTerminal() then
self:OnShowTerminal()
else
self:OnShowMain()
end
end
--播放主界面打开动画
function XUiMain:PlayEnterAnim()
local anim, endCb
if XLoginManager.IsFirstOpenMainUi() then
anim = "AnimEnter"
else
anim = "AnimReenter"
end
XLuaUiManager.SetMask(true)
endCb = function()
if XLoginManager.IsFirstOpenMainUi() then
anim = "AnimEnter2"
self:PlayAnimation(anim, endCb)
self:UpdateCamera(CameraIndex.Main)
2024-09-01 20:49:41 +00:00
self:PlayEquipGuide(true)
XLoginManager.SetFirstOpenMainUi(false)
2024-09-01 20:49:41 +00:00
--第一次进入界面,拦截公告请求
self.InterceptNotice = true
else
XLoginManager.SetStartGuide(true)
XEventManager.DispatchEvent(XEventId.EVENT_MAINUI_ENABLE)
XEventManager.DispatchEvent(XEventId.EVENT_CARD_REFRESH_WELFARE_BTN)
XLuaUiManager.SetMask(false)
2024-09-01 20:49:41 +00:00
if XDataCenter.DlcRoomManager.IsCanReconnect() then
XDataCenter.DlcRoomManager.ReconnectToRoom()
end
--发送公告请求
self:UpdateNotice()
--取消拦截公告
self.InterceptNotice = false
--动画播放完,再加载剩余主题
self:UpdateTheme()
end
end
2024-09-01 20:49:41 +00:00
self:PlayAnimation(anim, endCb)
end
--播放关闭聊天动画
function XUiMain:PlayMainChatOut()
2024-09-01 20:49:41 +00:00
self:SetSignPanelEnable(true)
self:UpdateCamera(CameraIndex.Main)
self:PlayAnimation("AnimChatIn")
end
--播放打开聊天动画
function XUiMain:PlayMainChatIn()
2024-09-01 20:49:41 +00:00
self:SetSignPanelEnable(false)
self.Other:Stop()
self:UpdateCamera(CameraIndex.MainChatEnter)
self:PlayAnimation("AnimChatOut")
end
2024-09-01 20:49:41 +00:00
--播放装备目标动画
function XUiMain:PlayEquipGuide(isFirst)
local isSetEquipTarget = XDataCenter.EquipGuideManager.IsSetEquipTarget()
if not isSetEquipTarget then
return
end
local anim = isFirst and "EquipGuideEnableLong" or "EquipGuideEnableShort"
self:PlayAnimation(anim, function()
self.RightMid:SetBtnEquipGuideState(false)
end, function()
self.RightMid:SetBtnEquipGuideState(true)
end)
end
-- 关闭周历
function XUiMain:OnHideCalendar()
self:SetSignPanelEnable(true)
self:PlayAnimationWithMask("LeftCalendarDisable")
self:PlayAnimation("LeftUiEnable")
end
-- 打开周历
function XUiMain:OnShowCalendar()
self:SetSignPanelEnable(false)
self.Other:Stop()
self:PlayAnimationWithMask("LeftCalendarEnable")
self:PlayAnimation("LeftUiDisable")
self.Calendar:Show()
end
-- 检查周历界面是否显示
function XUiMain:CheckCalenderShow()
if not self.Calendar then
return false
end
return self.Calendar:CheckIsShow()
end
function XUiMain:SetCacheFight()
if not self.IsFirstSetFight then
self.IsFirstSetFight = true
XDataCenter.SetManager.SetAllyDamageByCache()
XDataCenter.SetManager.SetAllyEffectByCache()
XDataCenter.SetManager.SetOwnFontSizeByCache()
XDataCenter.SetManager.SetDefaultFontSize()
XDataCenter.SetManager.SetScreenOff()
end
end
function XUiMain:SetScreenAdaptorCache()
if XDataCenter.SetManager.IsAdaptorScreen() and not XTool.UObjIsNil(self.SafeAreaContentPane) then
self.SafeAreaContentPane:UpdateSpecialScreenOff()
end
end
-- 设置福利按钮特效可见性
function XUiMain:SetBtnWelfareTagActive(active)
self.LeftBottom:SetBtnWelfareTagActive(active)
end
-- 回到主页按钮
2024-09-01 20:49:41 +00:00
function XUiMain:OnShowMain(playAnimation)
self:SetSignPanelEnable(true)
self:UpdateCamera(CameraIndex.Main)
--终端界面由隐藏变为显示不需要播放动画。重新打开界面则需要播一次
playAnimation = playAnimation or (self.NewOpen and self:IsShowTerminal())
if playAnimation then
self:PlayAnimationWithMask("RightMidSecondDisable")
self:PlayAnimation("RightEnable")
if self:CheckCalenderShow() then
self:PlayAnimation("LeftCalendarEnable")
else
self:PlayAnimation("LeftUiEnable")
end
end
RightMidType = MenuType.Main
end
-- 下一页按钮(主界面二级菜单)
2024-09-01 20:49:41 +00:00
function XUiMain:OnShowTerminal(playAnimation)
self.Other:Stop()
self:SetSignPanelEnable(false)
self:UpdateCamera(CameraIndex.MainRightMidSecondEnter)
--终端界面由隐藏变为显示不需要播放动画。重新打开界面则需要播一次
playAnimation = playAnimation or self.NewOpen
if playAnimation then
self:PlayAnimationWithMask("RightMidSecondEnable")
self:PlayAnimation("RightDisable")
if self:CheckCalenderShow() then
self:PlayAnimation("LeftCalendarDisable")
else
self:PlayAnimation("LeftUiDisable")
end
end
RightMidType = MenuType.Second
2024-09-01 20:49:41 +00:00
self.Terminal:Show()
end
function XUiMain:OnUiSceneLoaded(particleGroupName)
2024-09-01 20:49:41 +00:00
--self:SetGameObject()
self:InitSceneRoot(particleGroupName)
2024-09-01 20:49:41 +00:00
--self.Other.SignBoard = XUiPanelSignBoard.New(self.Other.PanelSignBoard, self, XUiPanelSignBoard.SignBoardOpenType.MAIN)
self.Other:SafeCreateSignBoard()
if XLoginManager.IsFirstOpenMainUi() then
self:SetBtnWelfareTagActive(false)
self:UpdateCamera(CameraIndex.MainEnter)
else
2024-09-01 20:49:41 +00:00
local camera = self:IsShowTerminal() and CameraIndex.MainRightMidSecondEnter or CameraIndex.Main
self:UpdateCamera(camera)
end
2024-09-01 20:49:41 +00:00
end
function XUiMain:IsShowTerminal()
return RightMidType == MenuType.Second
end
function XUiMain:PlayChangeModelEffect()
self.ChangeActionEffect = self.UiModelGo.transform:FindTransform("ChangeActionEffect")
if not self.ChangeActionEffect or XTool.UObjIsNil(self.ChangeActionEffect) then return end
self.ChangeActionEffect.gameObject:SetActiveEx(false)
self.ChangeActionEffect.gameObject:SetActiveEx(true)
end
-- v1.29 预览状态下切换
function XUiMain:OnBackGroupPreview()
if XDataCenter.PhotographManager.GetPreviewState() == XPhotographConfigs.BackGroundState.Full then --满电状态
self:ChangeLowPowerState(self.LowPowerState.Full)
else
self:ChangeLowPowerState(self.LowPowerState.Low)
end
end
-- v1.32 播放角色特殊动作Ui动画
-- ===================================================
function XUiMain:PlayRoleActionUiDisableAnim(signBoardid, stopTime)
XDataCenter.SignBoardManager.StartBreakTimer(stopTime)
-- 关闭福利按钮特效
self:SetBtnWelfareTagActive(false)
if XSignBoardConfigs.CheckIsUseNormalUiAnim(signBoardid, self.Name) then
self:PlayAnimation("UiDisable")
end
end
function XUiMain:PlayRoleActionUiEnableAnim(signBoardid)
-- 检查福利按钮特效
self.LeftBottom:OnRefreshFirstRechargeId()
if XSignBoardConfigs.CheckIsUseNormalUiAnim(signBoardid, self.Name) then
self:PlayAnimationWithMask("UiEnable")
end
end
function XUiMain:PlayRoleActionUiBreakAnim()
self:PlayAnimationWithMask("DarkEnable", function ()
self.Other:Stop()
self:PlayAnimationWithMask("DarkDisable")
-- 检查福利按钮特效
self.LeftBottom:OnRefreshFirstRechargeId()
end)
end
-- 禁用角色动作
function XUiMain:SetSignPanelEnable(enable)
self.Other:SetSignBoardEnable(enable)
end
-- ===================================================
--- 每次返回主界面检查是否需要弹出公告
--------------------------
function XUiMain:UpdateNotice()
if self:IsShowTerminal() or XLoginManager.IsFirstOpenMainUi()
or self.InterceptNotice then
return
end
XDataCenter.NoticeManager.RequestInGameNotice(function()
if XLuaUiManager.GetTopUiName() == "UiMain" then
XDataCenter.NoticeManager.AutoOpenInGameNotice()
end
end)
end
--region ------------------UI主题 start-------------------
function XUiMain:UpdateTheme()
if not XTool.IsNumberValid(self.CurSceneId) then
return
end
local curSceneId = self.CurSceneId
local theme = XUiConfigs.GetUiTheme(curSceneId)
local colors = {}
for _, colorStr in ipairs(theme.Color) do
local color = XUiHelper.Hexcolor2Color(colorStr)
table.insert(colors, color)
end
---@type ThemeData
local themeTemplate = {
Colors = colors,
Backgrounds = theme.Background,
Effects = theme.Effect,
}
self.LeftBottom:UpdateTheme(themeTemplate)
self.LeftTop:UpdateTheme(themeTemplate)
self.Other:UpdateTheme(themeTemplate)
self.RightBottom:UpdateTheme(themeTemplate)
self.RightMid:UpdateTheme(themeTemplate)
self.RightTop:UpdateTheme(themeTemplate)
self.Terminal:UpdateTheme(themeTemplate)
self.Calendar:UpdateTheme(themeTemplate)
end
function XUiMain:InitTheme()
self.LeftBottom:InitTheme()
self.LeftTop:InitTheme()
self.Other:InitTheme()
self.RightBottom:InitTheme()
self.RightMid:InitTheme()
self.RightTop:InitTheme()
self.Terminal:InitTheme()
self.Calendar:InitTheme()
end
--endregion------------------UI主题 finish------------------