333 lines
No EOL
13 KiB
Lua
333 lines
No EOL
13 KiB
Lua
--光辉同行玩法主界面
|
||
local XUiBrilliantWalkMain = XLuaUiManager.Register(XLuaUi, "UiBrilliantWalkMain")
|
||
local XUIBrilliantWalkMiniTaskPanel = require("XUi/XUiBrilliantWalk/ModuleSubPanel/XUIBrilliantWalkMiniTaskPanel")--任务miniUI
|
||
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
|
||
local WeaponModule = CS.XGame.ClientConfig:GetInt("BrilliantWalkWeaponModule")
|
||
|
||
function XUiBrilliantWalkMain:OnAwake()
|
||
self.MainPanel = self.Transform:Find("SafeAreaContentPane")
|
||
self:InitSceneRoot()
|
||
--界面右边普通模块界面
|
||
self.UiTaskPanel = XUIBrilliantWalkMiniTaskPanel.New(self.BtnTask,self)
|
||
self.BtnZhuxian.CallBack = function()
|
||
self:OnMainClick()
|
||
end
|
||
self.BtnZhengzhuang.CallBack = function()
|
||
self:OnZhengzhuangClick()
|
||
end
|
||
self.BtnMainUi.CallBack = function()
|
||
self:OnBtnMainUiClick()
|
||
end
|
||
self.BtnHelp.CallBack = function()
|
||
self:OnBtnHelpClick()
|
||
end
|
||
self.BtnBack.CallBack = function()
|
||
self:OnBtnBackClick()
|
||
end
|
||
self.BtnTask.CallBack = function()
|
||
self:OnBtnTaskClick()
|
||
end
|
||
--活动结束自动关闭玩法
|
||
self:SetAutoCloseInfo(XDataCenter.BrilliantWalkManager.GetActivityEndTime(), function(isClose)
|
||
if isClose then
|
||
XLuaUiManager.RunMain()
|
||
XUiManager.TipMsg(XUiHelper.GetText("ActivityAlreadyOver"))
|
||
end
|
||
end)
|
||
--子界面堆栈
|
||
self.SubUIStack = XStack.New() --子UI堆栈(保存使用堆栈方式打开的UI)
|
||
self.SubUIStackParament = XStack.New() --子UI堆栈数据堆栈(保存使用堆栈方式打开的UI的打开数据)
|
||
--定时器
|
||
self._Timer = nil
|
||
|
||
end
|
||
function XUiBrilliantWalkMain:InitSceneRoot()
|
||
local root = self.UiModelGo.transform
|
||
self.PanelRoleModel = root:FindTransform("PanelModel")
|
||
self.CameraFar = {
|
||
[XBrilliantWalkCameraType.Main] = root:FindTransform("UiCamFarMain"),
|
||
[XBrilliantWalkCameraType.Chapter] = root:FindTransform("UiCamFarPanelExchange"),
|
||
[XBrilliantWalkCameraType.Equipment] = root:FindTransform("UiCamFarEquipment"),
|
||
[XBrilliantWalkCameraType.Trench1] = root:FindTransform("UiCamFarEquipment1"),
|
||
[XBrilliantWalkCameraType.Trench2] = root:FindTransform("UiCamFarEquipment2"),
|
||
[XBrilliantWalkCameraType.Trench3] = root:FindTransform("UiCamFarEquipment3"),
|
||
[XBrilliantWalkCameraType.Trench4] = root:FindTransform("UiCamFarEquipment4"),
|
||
}
|
||
self.CameraNear = {
|
||
[XBrilliantWalkCameraType.Main] = root:FindTransform("UiCamNearMain"),
|
||
[XBrilliantWalkCameraType.Chapter] = root:FindTransform("UiCamNearPanelExchange"),
|
||
[XBrilliantWalkCameraType.Equipment] = root:FindTransform("UiCamNearEquipment"),
|
||
[XBrilliantWalkCameraType.Trench1] = root:FindTransform("UiCamNearEquipment1"),
|
||
[XBrilliantWalkCameraType.Trench2] = root:FindTransform("UiCamNearEquipment2"),
|
||
[XBrilliantWalkCameraType.Trench3] = root:FindTransform("UiCamNearEquipment3"),
|
||
[XBrilliantWalkCameraType.Trench4] = root:FindTransform("UiCamNearEquipment4"),
|
||
}
|
||
self.UiEffect = {
|
||
["ChangePlugin"] = root:FindTransform("ImgEffectHuanren").gameObject,
|
||
}
|
||
self.RoleModelPanel = XUiPanelRoleModel.New(self.PanelRoleModel, self.Name, nil, true)
|
||
self.RoleModelPanel:UpdateRoleModelWithAutoConfig("Mb1StarknightMd010002BW", XModelManager.MODEL_UINAME.UiBrilliantWalkMain,function()
|
||
--更新机器人模型
|
||
self:UpdateRobotModel()
|
||
end)
|
||
--UIModel动画
|
||
self.UiModelAnime = {
|
||
["AnimEnable"] = root:FindTransform("AnimEnable").gameObject,
|
||
}
|
||
end
|
||
function XUiBrilliantWalkMain:OnStart()
|
||
self:PlayEnterAnime()
|
||
XEventManager.AddEventListener(XEventId.EVENT_BRILLIANT_WALK_PLUGIN_SKIP, self.OnPluginSkip, self)
|
||
XEventManager.AddEventListener(XEventId.EVENT_BRILLIANT_WALK_UIEFFECT_CHANGEPLUGIN, self.PlayChangePluginEffect, self)
|
||
XEventManager.AddEventListener(XEventId.EVENT_BRILLIANT_WALK_PLUGIN_CHANGE, self.UpdateRobotModel, self)
|
||
self.SubUIStack:Clear()
|
||
self.SubUIStackParament:Clear()
|
||
end
|
||
function XUiBrilliantWalkMain:OnEnable()
|
||
self.Super.OnEnable(self)
|
||
self:UpdateView()
|
||
self:SwitchSceneCamera(XBrilliantWalkCameraType.Main)
|
||
self.RedPointID = XRedPointManager.AddRedPointEvent(self.BtnZhengzhuang.ReddotObj, nil, self,{ XRedPointConditions.Types.CONDITION_BRILLIANTWALK_PLUGIN }, -1)
|
||
self.UiTaskPanel:OnEnable()
|
||
if XDataCenter.BrilliantWalkManager.GetUiMainClearCache() then
|
||
self.LastData = nil
|
||
end
|
||
--处理预存数据(跳转至之前选择的关卡界面)
|
||
if self.LastData and self.LastData.SubUIStack then
|
||
self.SubUIStack = self.LastData.SubUIStack
|
||
self.SubUIStackParament = self.LastData.SubUIStackParament
|
||
while( not self.SubUIStack:IsEmpty()) do
|
||
local UiName = self.SubUIStack:Peek()
|
||
if UiName == "UiBrilliantWalkChapterBoss" or UiName == "UiBrilliantWalkChapterStage" then
|
||
local args = nil
|
||
if not (self.SubUIStackParament:Peek() == "nil") then args = self.SubUIStackParament:Peek() end
|
||
self:OpenOneChildUi(UiName,args)
|
||
self.MainPanel.gameObject:SetActiveEx(false)
|
||
break
|
||
else
|
||
self.SubUIStack:Pop()
|
||
self.SubUIStackParament:Pop();
|
||
end
|
||
end
|
||
else
|
||
self.UiModelAnime.AnimEnable:PlayTimelineAnimation(function()
|
||
XLuaUiManager.SetMask(false)
|
||
end,function()
|
||
XLuaUiManager.SetMask(true)
|
||
end)
|
||
end
|
||
--关闭特效节点
|
||
for k,effectNode in pairs(self.UiEffect) do
|
||
effectNode:SetActiveEx(false)
|
||
end
|
||
end
|
||
function XUiBrilliantWalkMain:OnDisable()
|
||
self.Super.OnDisable(self)
|
||
XEventManager.RemoveEventListener(XEventId.EVENT_BRILLIANT_WALK_PLUGIN_SKIP, self.OnPluginSkip, self)
|
||
XEventManager.RemoveEventListener(XEventId.EVENT_BRILLIANT_WALK_UIEFFECT_CHANGEPLUGIN, self.PlayChangePluginEffect, self)
|
||
XEventManager.RemoveEventListener(XEventId.EVENT_BRILLIANT_WALK_PLUGIN_CHANGE, self.UpdateRobotModel, self)
|
||
XRedPointManager.RemoveRedPointEvent(self.RedPointID)
|
||
self:StopTimer()
|
||
self.UiTaskPanel:OnDisable()
|
||
self.LastData = nil
|
||
end
|
||
function XUiBrilliantWalkMain:OnReleaseInst()
|
||
return { SubUIStack = self.SubUIStack, SubUIStackParament = self.SubUIStackParament}
|
||
end
|
||
function XUiBrilliantWalkMain:OnResume(data)
|
||
self.LastData = data
|
||
end
|
||
--刷新界面
|
||
function XUiBrilliantWalkMain:UpdateView()
|
||
local viewData = XDataCenter.BrilliantWalkManager.GetUiDataMain()
|
||
self.BtnBoss:SetNameByGroup(1, "/" .. viewData.MaxBossStageProcess)
|
||
self.BtnBoss:SetNameByGroup(2, viewData.BossStageProcess)
|
||
self.BtnBoss:SetNameByGroup(3, "/" .. viewData.MaxBossHardStageProcess)
|
||
self.BtnBoss:SetNameByGroup(4, viewData.BossHardStageProcess)
|
||
if viewData.IsBossChapterUnlock == true then
|
||
self.BtnBoss:SetDisable(false)
|
||
self.BtnBoss.CallBack = function()
|
||
self:OnBossClick()
|
||
end
|
||
else
|
||
self.BossChapter = viewData.BossChapterId
|
||
self.BtnBoss:SetDisable(true)
|
||
local lockMsg = ""
|
||
if XDataCenter.BrilliantWalkManager.GetChapterIsOpen(self.BossChapter) then
|
||
local preChapterConfig = XBrilliantWalkConfigs.GetChapterConfig(viewData.IsBossChapterUnlock)
|
||
lockMsg = CsXTextManagerGetText("BrilliantWalkChapterUnlock",preChapterConfig.Name)
|
||
else --还没开放 开定时器
|
||
lockMsg = XDataCenter.BrilliantWalkManager.GetChapterOpenTimeMsg(self.BossChapter)
|
||
self:StartTimer()
|
||
end
|
||
self.BtnBoss:SetNameByGroup(5, lockMsg)
|
||
self.BtnBoss.CallBack = function()
|
||
self:OnLockBossClick(lockMsg,self.BossChapter)
|
||
end
|
||
end
|
||
|
||
self.BtnZhuxian:SetNameByGroup(1, "/" .. viewData.MaxMainStageProcess)
|
||
self.BtnZhuxian:SetNameByGroup(2, viewData.MainStageProcess)
|
||
self.BtnZhuxian:SetNameByGroup(3, "/" .. viewData.MaxSubStageProcess)
|
||
self.BtnZhuxian:SetNameByGroup(4, viewData.SubStageProcess)
|
||
self.ActivityLeftTime.text = viewData.ActivityTime
|
||
|
||
--任务miniUI视图
|
||
self.UiTaskPanel:UpdateView(true)
|
||
end
|
||
--刷新机器人武器
|
||
function XUiBrilliantWalkMain:UpdateRobotModel()
|
||
local ui = self.RoleModelPanel.Ui
|
||
local equiped = XDataCenter.BrilliantWalkManager.CheckPluginEquiped(WeaponModule)
|
||
local object1 = ui.transform:FindTransform("Mb1StarknightMd010001Weapon").gameObject
|
||
object1:SetActiveEx(equiped)
|
||
local object2 = ui.transform:FindTransform("Mb1StarknightMd010001Weapon01").gameObject
|
||
object2:SetActiveEx(equiped)
|
||
local object3 = ui.transform:FindTransform("Mb1StarknightMd010001Weapon02").gameObject
|
||
object3:SetActiveEx(not equiped)
|
||
end
|
||
|
||
--region BOSS章开启倒计时
|
||
--开启章节开放倒计时
|
||
function XUiBrilliantWalkMain:StartTimer()
|
||
if self._Timer then
|
||
self:StopTimer()
|
||
end
|
||
self._Timer = XScheduleManager.ScheduleForever(
|
||
function()
|
||
self:ChapterOpenTick()
|
||
end,
|
||
XScheduleManager.SECOND
|
||
)
|
||
end
|
||
--关闭章节开放倒计时
|
||
function XUiBrilliantWalkMain:StopTimer()
|
||
if not self._Timer then
|
||
return
|
||
end
|
||
XScheduleManager.UnSchedule(self._Timer)
|
||
self._Timer = false
|
||
end
|
||
--章节开放倒计时TickFunction
|
||
function XUiBrilliantWalkMain:ChapterOpenTick()
|
||
local chapterId = self.BossChapter
|
||
if XDataCenter.BrilliantWalkManager.GetChapterIsOpen(chapterId) then
|
||
self:UpdateView()
|
||
self:StopTimer()
|
||
else
|
||
local lockMsg = XDataCenter.BrilliantWalkManager.GetChapterOpenTimeMsg(chapterId)
|
||
self.BtnBoss:SetNameByGroup(5, lockMsg)
|
||
end
|
||
end
|
||
--endregion
|
||
|
||
--region 子UI接口
|
||
--打开子UI(使用堆栈管理) 限制一个参数,想用多个参数请上表
|
||
function XUiBrilliantWalkMain:OpenStackSubUi(name, args)
|
||
if args == nil then args = {} end
|
||
args.OnStart = true
|
||
self:OpenOneChildUi(name,args)
|
||
self.SubUIStack:Push(name)
|
||
self.SubUIStackParament:Push(args)
|
||
self.MainPanel.gameObject:SetActiveEx(false)
|
||
end
|
||
--关闭顶层UI
|
||
function XUiBrilliantWalkMain:CloseStackTopUi()
|
||
if self.SubUIStack:IsEmpty() then return end
|
||
self:CloseChildUi(self.SubUIStack:Pop());
|
||
self.SubUIStackParament:Pop();
|
||
if self.SubUIStack:IsEmpty() then
|
||
self.MainPanel.gameObject:SetActiveEx(true)
|
||
self:UpdateView()
|
||
self:SwitchSceneCamera(XBrilliantWalkCameraType.Main)
|
||
return
|
||
end
|
||
local args = self.SubUIStackParament:Peek()
|
||
args.OnStart = false
|
||
self:OpenOneChildUi(self.SubUIStack:Peek(),args)
|
||
end
|
||
--打开附属子UI (在打开或关闭某个子UI时,会关闭所有附属的子UI)
|
||
function XUiBrilliantWalkMain:OpenMiniSubUI(name,...)
|
||
if self.SubUI then self:CloseMiniSubUI(self.SubUI) end
|
||
self:OpenChildUi(name,...)
|
||
self.SubUI = name
|
||
end
|
||
--关闭附属子UI
|
||
function XUiBrilliantWalkMain:CloseMiniSubUI(name)
|
||
self:CloseChildUi(name);
|
||
end
|
||
--清空子界面缓存
|
||
function XUiBrilliantWalkMain:ClearSubUICache()
|
||
self.SubUIStack:Clear()
|
||
self.SubUIStackParament:Clear()
|
||
end
|
||
--切换场景镜头 参数是XBrilliantWalkCameraType
|
||
function XUiBrilliantWalkMain:SwitchSceneCamera(cameraType)
|
||
self.CameraFar[cameraType].gameObject:SetActiveEx(false)
|
||
self.CameraFar[cameraType].gameObject:SetActiveEx(true)
|
||
self.CameraNear[cameraType].gameObject:SetActiveEx(false)
|
||
self.CameraNear[cameraType].gameObject:SetActiveEx(true)
|
||
end
|
||
--播放机器人动画
|
||
function XUiBrilliantWalkMain:PlayModelAnim(anime,cb)
|
||
self.RoleModelPanel:PlayAnima(anime,true,cb)
|
||
end
|
||
--播放机器人入场动画
|
||
function XUiBrilliantWalkMain:PlayEnterAnime()
|
||
self:PlayModelAnim("In"..XTool.Random(1,2))
|
||
end
|
||
--播放机器人出击动画
|
||
function XUiBrilliantWalkMain:PlaySallyAnime(cb)
|
||
XLuaUiManager.SetMask(true)
|
||
self:PlayModelAnim("Out1",function()
|
||
XLuaUiManager.SetMask(false)
|
||
cb()
|
||
end)
|
||
end
|
||
--endregion
|
||
|
||
--播放特效
|
||
function XUiBrilliantWalkMain:PlayChangePluginEffect()
|
||
self.UiEffect.ChangePlugin:SetActiveEx(false)
|
||
self.UiEffect.ChangePlugin:SetActiveEx(true)
|
||
end
|
||
--插件界面跳转
|
||
function XUiBrilliantWalkMain:OnPluginSkip(subUIView, skipData)
|
||
self:OpenStackSubUi(subUIView, skipData)
|
||
end
|
||
--点击主线关卡
|
||
function XUiBrilliantWalkMain:OnMainClick()
|
||
self:OpenStackSubUi("UiBrilliantWalkChapter")
|
||
end
|
||
--点击BOSS关卡
|
||
function XUiBrilliantWalkMain:OnBossClick()
|
||
self:OpenStackSubUi("UiBrilliantWalkChapterBoss")
|
||
end
|
||
--点击未解锁BOSS关卡
|
||
function XUiBrilliantWalkMain:OnLockBossClick(msg,chapterId)
|
||
if not XDataCenter.BrilliantWalkManager.GetChapterIsOpen(chapterId) then
|
||
XUiManager.TipMsg(CS.XTextManager.GetText("BrilliantWalkChapterTimeTip"))
|
||
return
|
||
end
|
||
XUiManager.TipMsg(msg)
|
||
end
|
||
--点击任务按钮
|
||
function XUiBrilliantWalkMain:OnBtnTaskClick()
|
||
self:OpenStackSubUi("UiBrilliantWalkTask")
|
||
end
|
||
--点击整装按钮
|
||
function XUiBrilliantWalkMain:OnZhengzhuangClick()
|
||
self:OpenStackSubUi("UiBrilliantWalkEquipment")
|
||
end
|
||
--点击返回按钮
|
||
function XUiBrilliantWalkMain:OnBtnBackClick()
|
||
self:Close()
|
||
end
|
||
--点击主界面按钮
|
||
function XUiBrilliantWalkMain:OnBtnMainUiClick()
|
||
XLuaUiManager.RunMain()
|
||
end
|
||
--点击感叹号按钮
|
||
function XUiBrilliantWalkMain:OnBtnHelpClick()
|
||
XUiManager.ShowHelpTip("BrilliantWalk")
|
||
end |