2023-07-14 19:35:33 +00:00
|
|
|
|
local XUiAssignDeploy = XLuaUiManager.Register(XLuaUi, "UiAssignDeploy")
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local AutoCheckTeamTrigger = nil
|
2023-07-14 19:35:33 +00:00
|
|
|
|
|
|
|
|
|
local table = table
|
|
|
|
|
local ipairs = ipairs
|
|
|
|
|
|
|
|
|
|
local XUiGridAssignDeployTeam = require("XUi/XUiAssign/XUiGridAssignDeployTeam")
|
|
|
|
|
local XUiPanelAssignFormation = require("XUi/XUiAssign/XUiPanelAssignFormation")
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnAwake()
|
|
|
|
|
self:InitComponent()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnStart()
|
2024-09-01 20:49:41 +00:00
|
|
|
|
AutoCheckTeamTrigger = true
|
2023-07-14 19:35:33 +00:00
|
|
|
|
self.GroupId = XDataCenter.FubenAssignManager.SelectGroupId
|
|
|
|
|
self.ChapterId = XDataCenter.FubenAssignManager.SelectChapterId
|
|
|
|
|
self:InitGroupInfo()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnEnable()
|
|
|
|
|
self.GroupId = XDataCenter.FubenAssignManager.SelectGroupId
|
|
|
|
|
self.ChapterId = XDataCenter.FubenAssignManager.SelectChapterId
|
2024-09-01 20:49:41 +00:00
|
|
|
|
if AutoCheckTeamTrigger then
|
|
|
|
|
AutoCheckTeamTrigger = nil
|
|
|
|
|
self:AutoCheckTeamToRefresh()
|
|
|
|
|
end
|
|
|
|
|
self:RefreshTeamGrid()
|
|
|
|
|
|
|
|
|
|
self.TextDesc.text = CS.XTextManager.GetText("AwarenessHintText")
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:InitComponent()
|
|
|
|
|
self.FormationPanel = XUiPanelAssignFormation.New(self, self.PanelFormation)
|
|
|
|
|
self.FormationPanel:Close()
|
|
|
|
|
self.GridDeployTeam.gameObject:SetActiveEx(false)
|
|
|
|
|
-- self.PanelDanger
|
|
|
|
|
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
|
|
|
|
|
self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUiClick)
|
|
|
|
|
self.BtnAutoTeam.CallBack = function() self:OnBtnAutoTeamClick() end
|
|
|
|
|
self.BtnFight.CallBack = function() self:OnBtnFightClick() end
|
|
|
|
|
self.BtnFormation.CallBack = function() self:OnBtnFormationClick() end
|
|
|
|
|
self.BtnFormation:SetButtonState(XUiButtonState.Disable)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnGetEvents()
|
|
|
|
|
return { XEventId.EVENT_FUBEN_ASSIGN_FORMATION_CONFIRM, XEventId.EVENT_ON_ASSIGN_TEAM_CHANGED, XEventId.EVENT_ASSIGN_REFRESH_FORMATION }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--事件监听
|
|
|
|
|
function XUiAssignDeploy:OnNotify(evt)
|
|
|
|
|
if evt == XEventId.EVENT_FUBEN_ASSIGN_FORMATION_CONFIRM then
|
|
|
|
|
self:OnFormationConfirm()
|
|
|
|
|
elseif evt == XEventId.EVENT_ON_ASSIGN_TEAM_CHANGED then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
self:RefreshTeamGrid()
|
2023-07-14 19:35:33 +00:00
|
|
|
|
elseif evt == XEventId.EVENT_ASSIGN_REFRESH_FORMATION then
|
|
|
|
|
self.FormationPanel:RefreshForAnim()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:InitGroupInfo()
|
|
|
|
|
local data = XDataCenter.FubenAssignManager.GetGroupDataById(self.GroupId)
|
|
|
|
|
self.TeamGridList = {}
|
|
|
|
|
self.ListData = data:GetTeamInfoId()
|
|
|
|
|
self.StageListData = data:GetStageId()
|
|
|
|
|
for _, _ in ipairs(self.ListData) do
|
|
|
|
|
local ui = CS.UnityEngine.Object.Instantiate(self.GridDeployTeam)
|
|
|
|
|
ui.transform:SetParent(self.PanelTeamContent, false)
|
|
|
|
|
ui.gameObject:SetActiveEx(true)
|
|
|
|
|
local grid = XUiGridAssignDeployTeam.New(self, ui)
|
|
|
|
|
table.insert(self.TeamGridList, grid)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
function XUiAssignDeploy:AutoCheckTeamToRefresh()
|
|
|
|
|
-- 先检查队伍是否为空
|
|
|
|
|
-- 若为空则往前查找有队伍信息的group
|
|
|
|
|
if not XDataCenter.FubenAssignManager.CheckGroupHadRecordTeam(self.GroupId) then
|
|
|
|
|
-- 且自动填充前清除队伍数据
|
|
|
|
|
for k, teamId in pairs(self.ListData) do
|
|
|
|
|
local teamData = teamId and XDataCenter.FubenAssignManager.GetTeamDataById(teamId) or nil
|
|
|
|
|
if teamData then
|
|
|
|
|
teamData:SetMemberList(nil)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local targetPreGroupTeamData = nil
|
|
|
|
|
local teamRecords = XDataCenter.FubenAssignManager.GetGroupTeamRecords()
|
|
|
|
|
for i = #teamRecords, 1, -1 do
|
|
|
|
|
local groupTeamRecordData = teamRecords[i]
|
|
|
|
|
local groupId = groupTeamRecordData.GroupId
|
|
|
|
|
if groupId < self.GroupId then
|
|
|
|
|
targetPreGroupTeamData = XTool.Clone(groupTeamRecordData)
|
|
|
|
|
break
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
-- 如果找到了,copy到这一group,并同步服务器
|
|
|
|
|
if targetPreGroupTeamData then
|
|
|
|
|
-- copy前要检查队伍兼容性
|
|
|
|
|
-- 如果被copy的队伍比该group需要的队伍多,剔除掉多的
|
|
|
|
|
-- 如果相同位置的队伍 人数也比当前的多, 剔除掉多的
|
|
|
|
|
for i = 1, #targetPreGroupTeamData.TeamInfoList, 1 do
|
|
|
|
|
local teamId = self.ListData[i]
|
|
|
|
|
local teamData = teamId and XDataCenter.FubenAssignManager.GetTeamDataById(teamId) or nil
|
|
|
|
|
-- 处理成员
|
|
|
|
|
local teamList = targetPreGroupTeamData.TeamInfoList[i]
|
|
|
|
|
if teamData then
|
|
|
|
|
for index, charId in pairs(teamList) do
|
|
|
|
|
if index > teamData:GetNeedCharacter() then
|
|
|
|
|
-- table.remove(teamList, index)
|
|
|
|
|
teamList[index] = nil
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 处理首发位(有部分老玩家在首发位概念出来前就玩过该活动导致服务端没存,所以要额外判空1次firstFightPosListNum)
|
|
|
|
|
local firstFightPosListNum = targetPreGroupTeamData.FirstFightPosList[i]
|
|
|
|
|
if teamData and firstFightPosListNum and firstFightPosListNum > teamData:GetNeedCharacter() then
|
|
|
|
|
targetPreGroupTeamData.FirstFightPosList[i] = 1
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 处理队长位
|
|
|
|
|
local captainPosListNum = targetPreGroupTeamData.CaptainPosList[i]
|
|
|
|
|
if teamData and captainPosListNum and captainPosListNum > teamData:GetNeedCharacter() then
|
|
|
|
|
targetPreGroupTeamData.CaptainPosList[i] = 1
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 清除多余队伍
|
|
|
|
|
if i > #self.ListData then
|
|
|
|
|
-- table.remove(targetPreGroupTeamData.TeamInfoList, i)
|
|
|
|
|
-- table.remove(targetPreGroupTeamData.FirstFightPosList, i)
|
|
|
|
|
-- table.remove(targetPreGroupTeamData.CaptainPosList, i)
|
|
|
|
|
targetPreGroupTeamData.TeamInfoList[i] = nil
|
|
|
|
|
targetPreGroupTeamData.FirstFightPosList[i] = nil
|
|
|
|
|
targetPreGroupTeamData.CaptainPosList[i] = nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 设置修改后的数据
|
|
|
|
|
if teamData then
|
|
|
|
|
teamData:SetMemberList(targetPreGroupTeamData.TeamInfoList[i])
|
|
|
|
|
teamData:SetFirstFightIndex(targetPreGroupTeamData.FirstFightPosList[i])
|
|
|
|
|
teamData:SetLeaderIndex(targetPreGroupTeamData.CaptainPosList[i])
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
2023-07-14 19:35:33 +00:00
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
function XUiAssignDeploy:RefreshTeamGrid()
|
2023-07-14 19:35:33 +00:00
|
|
|
|
local memberCount = XDataCenter.FubenAssignManager.GetGroupMemberCount(self.GroupId)
|
|
|
|
|
self.BtnFormation.gameObject:SetActiveEx(memberCount > 0)
|
|
|
|
|
self.BtnFormation:SetButtonState(XUiButtonState.Normal)
|
|
|
|
|
|
|
|
|
|
for i, grid in ipairs(self.TeamGridList) do
|
|
|
|
|
if self.ListData[i] then
|
|
|
|
|
grid.GameObject:SetActiveEx(true)
|
|
|
|
|
grid:Refresh(self.GroupId, i, self.ListData[i])
|
|
|
|
|
else
|
|
|
|
|
grid.GameObject:SetActiveEx(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnBtnFightClick()
|
|
|
|
|
-- --检查挑战次数
|
|
|
|
|
-- local groupData = XDataCenter.FubenAssignManager.GetGroupDataById(self.GroupId)
|
|
|
|
|
-- if groupData:GetFightCount() >= groupData:GetMaxFightCount() then
|
|
|
|
|
-- XUiManager.TipMsg(CS.XTextManager.GetText("FubenChallengeCountNotEnough"))
|
|
|
|
|
-- return
|
|
|
|
|
-- end
|
|
|
|
|
-- 检查队伍
|
|
|
|
|
local allTeamHasMember, teamCharList, captainPosList, firstFightPosList = XDataCenter.FubenAssignManager.TryGetFightTeamCharList(self.GroupId)
|
|
|
|
|
if not allTeamHasMember then
|
|
|
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("AssignFightNoMember"))
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 设置队伍
|
|
|
|
|
XDataCenter.FubenAssignManager.AssignSetTeamRequest(self.GroupId, teamCharList, captainPosList, firstFightPosList, function()
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local targetIndex = 1
|
|
|
|
|
local targetStageId = nil
|
|
|
|
|
local groupData = XDataCenter.FubenAssignManager.GetGroupDataById(self.GroupId)
|
|
|
|
|
local stageIdList = groupData:GetStageId()
|
|
|
|
|
for i = 1, #stageIdList, 1 do
|
|
|
|
|
local stageId = stageIdList[i]
|
|
|
|
|
if not XDataCenter.FubenAssignManager.CheckStageFinish(stageId) then
|
|
|
|
|
targetIndex = i
|
|
|
|
|
targetStageId = stageId
|
|
|
|
|
break
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 进入战斗
|
|
|
|
|
local chapterData = XDataCenter.FubenAssignManager.GetChapterDataById(self.ChapterId)
|
|
|
|
|
XDataCenter.FubenAssignManager.SetEnterLoadingData(targetIndex, teamCharList[targetIndex], groupData, chapterData, true)
|
|
|
|
|
XDataCenter.FubenManager.EnterAssignFight(targetStageId, teamCharList[targetIndex], captainPosList[targetStageId], nil, nil, firstFightPosList[targetIndex])
|
|
|
|
|
XDataCenter.FubenAssignManager.AssignGetDataRequest() -- 同步数据
|
2023-07-14 19:35:33 +00:00
|
|
|
|
-- 打开战斗前loading界面
|
2024-09-01 20:49:41 +00:00
|
|
|
|
-- XLuaUiManager.Open("UiAssignInfo", self.ChapterId, self.GroupId, teamCharList, captainPosList, firstFightPosList)
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnBtnFormationClick()
|
|
|
|
|
self.FormationPanel:Show(self.GroupId)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnBtnAutoTeamClick()
|
|
|
|
|
XDataCenter.FubenAssignManager.AutoTeam(self.GroupId)
|
2024-09-01 20:49:41 +00:00
|
|
|
|
self:RefreshTeamGrid()
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnBtnBackClick()
|
|
|
|
|
self:Close()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnBtnMainUiClick()
|
|
|
|
|
XLuaUiManager.RunMain()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiAssignDeploy:OnFormationConfirm()
|
2024-09-01 20:49:41 +00:00
|
|
|
|
self:RefreshTeamGrid()
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|