PGRData/Script/matrix/xui/xuitheatre/quickdeploy/XUiTheatreQuickDeploy.lua

151 lines
No EOL
5 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local XUiGridQuickDeployTeam = require("XUi/XUiTheatre/QuickDeploy/XUiGridQuickDeployTeam")
--肉鸽玩法编队调整
local XUiTheatreQuickDeploy = XLuaUiManager.Register(XLuaUi, "UiTheatreQuickDeploy")
function XUiTheatreQuickDeploy:OnAwake()
self.AdventureManager = XDataCenter.TheatreManager.GetCurrentAdventureManager()
self.AdventureMultiDeploy = self.AdventureManager:GetAdventureMultiDeploy()
self.GridQuickDeployTeam.gameObject:SetActiveEx(false)
self:AutoAddListener()
end
--stageIdTheatreStage表的Id
--teamListXTheatreTeam的列表
function XUiTheatreQuickDeploy:OnStart(stageId, teamList, saveCb)
self.TeamList = teamList
self.StageId = stageId
self.SaveCb = saveCb
self.TeamGridList = {}
end
function XUiTheatreQuickDeploy:OnEnable()
self:UpdateView()
end
function XUiTheatreQuickDeploy:OnDisable()
self.OldTeamId = nil
self.OldPos = nil
if self.LastSelectGrid then
self.LastSelectGrid:SetSelect(false)
self.LastSelectGrid = nil
end
end
function XUiTheatreQuickDeploy:UpdateView()
local teamList = self.TeamList
local memberClickCb = function(grid, pos, teamId)
local grid = grid
local oldTeamId = self.OldTeamId
local oldPos = self.OldPos
--队伍中有关卡进度
if self.AdventureMultiDeploy:GetMultipleTeamIsWin(oldTeamId)
or self.AdventureMultiDeploy:GetMultipleTeamIsWin(teamId)
then
XUiManager.TipText("StrongholdQuickDeployTeamLock")
return
end
local sucCb = function()
self:UpdateView()
grid:ShowEffect()
self.LastSelectGrid:ShowEffect()
self.LastSelectGrid:SetSelect(false)
self.LastSelectGrid = nil
self.OldTeamId = nil
self.OldPos = nil
end
local failCb = function()
if self.LastSelectGrid then
self.LastSelectGrid:SetSelect(false)
end
self.LastSelectGrid = grid
self.LastSelectGrid:SetSelect(true)
self.OldTeamId = teamId
self.OldPos = pos
end
self:SwapTeamPos(oldTeamId, oldPos, teamId, pos, sucCb, failCb)
end
local teamGridList = self.TeamGridList
local stageCount = XTheatreConfigs.GetTheatreStageCount(self.StageId)
for index = 1, stageCount do
local teamGrid = teamGridList[index]
if not teamGrid then
local go = XUiHelper.Instantiate(self.GridQuickDeployTeam, self.PanelFormationTeamContent)
teamGrid = XUiGridQuickDeployTeam.New(go, memberClickCb)
teamGridList[index] = teamGrid
end
local teamId = index
teamGrid:Refresh(teamList, teamId)
teamGrid.GameObject:SetActiveEx(true)
end
for i = stageCount + 1, #teamGridList do
teamGridList.GameObject:SetActiveEx(false)
end
end
function XUiTheatreQuickDeploy:AutoAddListener()
self.BtnConfirm.CallBack = function() self:OnClickBtnConfirm() end
end
function XUiTheatreQuickDeploy:OnClickBtnConfirm()
self.SaveCb()
self:Close()
end
function XUiTheatreQuickDeploy:SwapTeamPos(oldTeamId, oldPos, newTeamId, newPos, sucCb, failCb)
if not oldTeamId then failCb() return false end
if oldTeamId == newTeamId and oldPos == newPos then failCb() return false end
local teamList = self.TeamList
local oldTeam = teamList[oldTeamId]
local oldEntityId = oldTeam:GetEntityIdByTeamPos(oldPos)
local newTeam = teamList[newTeamId]
local newEntityId = newTeam:GetEntityIdByTeamPos(newPos)
if not XTool.IsNumberValid(oldEntityId) and not XTool.IsNumberValid(newEntityId) then failCb() return false end
local oldRole = XDataCenter.TheatreManager.GetCurrentAdventureManager():GetRole(oldEntityId)
local newRole = XDataCenter.TheatreManager.GetCurrentAdventureManager():GetRole(newEntityId)
local oldRawId = oldRole and oldRole:GetRawDataId()
local newRawId = newRole and newRole:GetRawDataId()
local oldCharacterType = XTool.IsNumberValid(oldRawId) and XEntityHelper.GetCharacterType(oldRawId)
local newCharacterType = XTool.IsNumberValid(newRawId) and XEntityHelper.GetCharacterType(newRawId)
local swapFunc = function()
if oldCharacterType and newTeam:GetCharacterType() ~= oldCharacterType then
newTeam:ClearEntityIds()
end
if newCharacterType and oldTeam:GetCharacterType() ~= newCharacterType then
oldTeam:ClearEntityIds()
end
oldTeam:UpdateEntityTeamPos(newEntityId, oldPos, true)
newTeam:UpdateEntityTeamPos(oldEntityId, newPos, true)
sucCb()
end
if (oldCharacterType and newTeam:GetCharacterType() ~= oldCharacterType) or (newCharacterType and oldTeam:GetCharacterType() ~= newCharacterType) then
--队伍中已经存在其他类型的角色(构造体/授格者)
local content = CSXTextManagerGetText("TeamCharacterTypeNotSame")
XUiManager.DialogTip(nil, content, XUiManager.DialogType.Normal, nil, swapFunc)
else
swapFunc()
end
end