PGRData/Script/matrix/xui/xuirift/XUiRiftDeploy.lua

136 lines
4.7 KiB
Lua
Raw Normal View History

2024-09-01 20:49:41 +00:00
-- 大秘境 多队伍设置界面
local XUiRiftDeploy = XLuaUiManager.Register(XLuaUi, "UiRiftDeploy")
local XUiGridRiftDeploy = require("XUi/XUiRift/Grid/XUiGridRiftDeploy")
function XUiRiftDeploy:OnAwake()
self.TeamGrids = {}
self.EnterStageIndex = nil -- 这个字段用来检测当前第一个没通关的stage是列表中的第几个
self:InitButton()
self:InitTimes()
self:AutoCheckTemplate()
self.GridDeployTeam.gameObject:SetActiveEx(false)
end
function XUiRiftDeploy:InitButton()
self.BtnBack.CallBack = function() self:OnClickBtnBack() end
self.BtnMainUi.CallBack = function() self:OnClickBtnMainUi() end
self.BtnQuickDeploy.CallBack = function() self:OnBtnQuickDeployClick() end
self.BtnAttr.CallBack = function() XLuaUiManager.Open("UiRiftAttribute") end
self.BtnFight.CallBack = function() self:OnClickBtnFight() end
end
-- 32版本临时检测线上玩家模板异常
function XUiRiftDeploy:AutoCheckTemplate()
for teamId, xTeam in pairs(XDataCenter.RiftManager.GetMultiTeamData()) do
local tempId = xTeam:GetAttrTemplateId()
local temp = XDataCenter.RiftManager.GetAttrTemplate(tempId)
if temp:IsEmpty() and tempId ~= XRiftConfig.DefaultAttrTemplateId then
XDataCenter.RiftManager.RiftSetTeamRequest(xTeam, XRiftConfig.DefaultAttrTemplateId)
end
end
end
function XUiRiftDeploy:OnStart(xStageGroup)
self.XStageGroup = xStageGroup
self.TeamList = XDataCenter.RiftManager.GetMultiTeamData()
end
function XUiRiftDeploy:OnEnable()
self.Super.OnEnable(self)
local doEnterFightFun = XDataCenter.RiftManager.GetIsEnterNextFightTrigger()
if doEnterFightFun then
doEnterFightFun()
return
end
self:UpdateTeamList()
end
function XUiRiftDeploy:UpdateTeamList()
local teamList = self.TeamList
local xStageList = self.XStageGroup:GetAllEntityStages()
for index = 1, #xStageList do
local grid = self.TeamGrids[index]
if not grid then
local go = CS.UnityEngine.Object.Instantiate(self.GridDeployTeam, self.PanelTeamContent)
grid = XUiGridRiftDeploy.New(go, self)
self.TeamGrids[index] = grid
end
local xTeam = teamList[index]
grid:Refresh(xTeam, self.XStageGroup, index)
grid.GameObject:SetActiveEx(true)
local xStage = xStageList[index]
if not self.EnterStageIndex and not xStage:CheckHasPassed() then
self.EnterStageIndex = index
end
end
end
function XUiRiftDeploy:OnBtnQuickDeployClick()
local cloneTeamList = XTool.Clone(self.TeamList)
for i, xCloneTeam in pairs(cloneTeamList) do
xCloneTeam:UpdateAutoSave(false) -- 克隆的临时队伍,修改时不要自动保存到本地
end
local saveCb = function(afterChangeTeamList)
for i, xCloneTeam in pairs(afterChangeTeamList) do
xCloneTeam:UpdateAutoSave(true) -- 保存。将修改的克隆队伍赋值给自己的真实队伍,并开启保存功能,且先保存一次
xCloneTeam:Save()
end
XDataCenter.RiftManager.ChangeMultiTeamData(afterChangeTeamList)
self.TeamList = afterChangeTeamList
self:UpdateTeamList()
end
XLuaUiManager.Open("UiRiftQuickDeploy", cloneTeamList, self.XStageGroup, saveCb)
end
function XUiRiftDeploy:OnClickBtnFight()
if not self.EnterStageIndex then
return
end
-- 检测队伍是否都有队长
local xStageList = self.XStageGroup:GetAllEntityStages()
local teamList = self.TeamList
for index = 1, #xStageList do
local xTeam = teamList[index]
local captainRoleId = xTeam:GetCaptainPosEntityId()
if not XTool.IsNumberValid(captainRoleId) then
XUiManager.TipText("StrongholdEnterFightTeamListNoCaptain")
return
end
local firstRoleId = xTeam:GetFirstFightPosEntityId()
if not XTool.IsNumberValid(firstRoleId) then
XUiManager.TipText("StrongholdEnterFightTeamListNoFirstPos")
return
end
end
local xCurTeam = teamList[self.EnterStageIndex]
XDataCenter.RiftManager.EnterFight(xCurTeam)
end
function XUiRiftDeploy:OnClickBtnBack()
self:Close()
end
function XUiRiftDeploy:OnClickBtnMainUi()
XLuaUiManager.RunMain()
end
function XUiRiftDeploy:OnDestroy()
for _, grid in pairs(self.TeamGrids) do
if grid.OnDestroy then
grid:OnDestroy()
end
end
end
function XUiRiftDeploy:InitTimes()
self:SetAutoCloseInfo(XDataCenter.RiftManager.GetActivityEndTime(), function(isClose)
if isClose then
XLuaUiManager.RunMain()
XUiManager.TipMsg(XUiHelper.GetText("ActivityAlreadyOver"))
end
end)
end