PGRData/Script/matrix/xui/xuistronghold/XUiGridStrongholdTeam.lua

232 lines
8 KiB
Lua
Raw Normal View History

local XUiGridStrongHoldTeamMember = require("XUi/XUiStronghold/XUiGridStrongHoldTeamMember")
local XUiGridStrongholdPlugin = require("XUi/XUiStronghold/XUiGridStrongholdPlugin")
local CsXTextManagerGetText = CsXTextManagerGetText
local CSUnityEngineObjectInstantiate = CS.UnityEngine.Object.Instantiate
local XUiGridStrongholdTeam = XClass(nil, "XUiGridStrongholdTeam")
function XUiGridStrongholdTeam:Ctor(ui, fightCb)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.MemberGrids = {}
self.PluginGrids = {}
self.FightCb = fightCb
XTool.InitUiObject(self)
self.BtnLeader.CallBack = function()
self:OnBtnLeaderClick()
end
self.BtnRune.CallBack = function()
self:OnBtnRuneClick()
end
self.BtnFight.CallBack = function()
self:OnBtnFightClick()
end
self.BtnReset.CallBack = function()
self:OnBtnResetClick()
end
self.GridDeployMember.gameObject:SetActiveEx(false)
self.GridPlugin.gameObject:SetActiveEx(false)
XEventManager.AddEventListener(XEventId.EVENT_STRONGHOLD_PLUGIN_CHANGE_ACK, self.UpdateView, self)
end
function XUiGridStrongholdTeam:OnDestroy()
XEventManager.RemoveEventListener(XEventId.EVENT_STRONGHOLD_PLUGIN_CHANGE_ACK, self.UpdateView, self)
end
function XUiGridStrongholdTeam:Refresh(teamList, teamId, groupId, isPrefab)
self.TeamList = teamList
--队伍数据更改赋值
self.TeamListClip = XDataCenter.StrongholdManager.GetTeamListClipTemp(groupId, teamList)
--仅显示用
self.TeamId = teamId
self.GroupId = groupId
local team = self:GetTeam()
if isPrefab then
--队伍预设
self.TxtTitle.text = CsXTextManagerGetText("StrongholdTeamTitle", teamId)
local runeDesc = team:GetRuneDesc()
self.TxtBuff.text = runeDesc
self.TxtBuff.gameObject:SetActiveEx(true)
self.PanelRequire.gameObject:SetActiveEx(false)
self.PanelVictory.gameObject:SetActiveEx(false)
self.BtnFight.gameObject:SetActiveEx(false)
else
--战斗编队
local stageIndex = teamId
self.TxtTitle.text = XDataCenter.StrongholdManager.GetGroupStageName(groupId, stageIndex)
local requireAbility = XDataCenter.StrongholdManager.GetGroupRequireAbility(groupId)
self.TxtRequireAbility.text = requireAbility
self.PanelRequire.gameObject:SetActiveEx(true)
local buffDes = XDataCenter.StrongholdManager.GetGroupStageBuffDesc(groupId, stageIndex)
local runeDesc = team:GetRuneDesc()
self.TxtBuff.text = buffDes .. runeDesc
self.TxtBuff.gameObject:SetActiveEx(true)
local isFinished = XDataCenter.StrongholdManager.IsGroupStageFinished(groupId, stageIndex)
self.PanelVictory.gameObject:SetActiveEx(isFinished)
self.BtnFight.gameObject:SetActiveEx(true)
end
local hasRune = team:HasRune()
self.PanelNor.gameObject:SetActiveEx(hasRune)
self.PanelEmpty.gameObject:SetActiveEx(not hasRune)
if hasRune then
local runeId, subRuneId = team:GetRune()
self.ImgRune:SetSprite(XStrongholdConfigs.GetRuneIcon(runeId))
self.ImgSubRune:SetSprite(XStrongholdConfigs.GetSubRuneIcon(subRuneId))
self.ImgColor.color = team:GetRuneColor()
end
local doNotShowEffect = true
self:UpdateView(doNotShowEffect)
end
function XUiGridStrongholdTeam:UpdateView(doNotShowEffect)
self:UpdateTeam()
self:UpdatePlugins(doNotShowEffect)
end
function XUiGridStrongholdTeam:UpdateTeam()
local groupId = self.GroupId
local teamId = self.TeamId
local teamList = self.TeamList
local team = self:GetTeam(true)
self.TxtLeaderSkill.text = team:GetCaptainSkillDesc()
local requireMemberNum = XStrongholdConfigs.GetGroupRequireTeamMemberNum(groupId, teamId)
if not XTool.IsNumberValid(requireMemberNum) then
XLog.Error(
string.format(
"关卡要求上阵人数为0空请检查配置groupId:%dteamId:%d配置路径%s",
groupId,
teamId,
XStrongholdConfigs.GetGroupConfigPath()
)
)
return
end
for index = 1, requireMemberNum do
local grid = self.MemberGrids[index]
if not grid then
local go =
index == 1 and self.GridDeployMember or
CSUnityEngineObjectInstantiate(self.GridDeployMember, self.PanelDeployMembers)
grid = XUiGridStrongHoldTeamMember.New(go)
self.MemberGrids[index] = grid
end
grid:Refresh(teamList, teamId, index, groupId)
--蓝色放到第一位
if index == 2 then
grid.Transform:SetAsFirstSibling()
end
grid.GameObject:SetActiveEx(true)
end
for index = requireMemberNum + 1, #self.MemberGrids do
self.MemberGrids[index].GameObject:SetActiveEx(false)
end
end
function XUiGridStrongholdTeam:UpdatePlugins(doNotShowEffect)
local team = self:GetTeam()
local plugins = team:GetAllPlugins()
for index = 1, #plugins do
local grid = self.PluginGrids[index]
if not grid then
local go =
index == 1 and self.GridPlugin or CSUnityEngineObjectInstantiate(self.GridPlugin, self.PanelCoreContent)
local clickCb = handler(self, self.OnClickPlugin)
grid = XUiGridStrongholdPlugin.New(go, clickCb)
self.PluginGrids[index] = grid
end
local plugin = plugins[index]
local isAllPluginEmpty = team:IsAllPluginEmpty()
grid:Refresh(plugin, isAllPluginEmpty, doNotShowEffect)
grid.GameObject:SetActiveEx(true)
end
for index = #plugins + 1, #self.PluginGrids do
self.PluginGrids[index].GameObject:SetActiveEx(false)
end
end
function XUiGridStrongholdTeam:OnBtnLeaderClick()
local groupId = self.GroupId
local teamId = self.TeamId
local requireMemberNum = XStrongholdConfigs.GetGroupRequireTeamMemberNum(groupId, teamId)
local team = self:GetTeam()
local teamClip = self:GetTeam(true)
local characterIdList, characterIdToIsIsAssitantDic = team:GenarateTeamCharacterList(requireMemberNum)
local captainPos = team:GetCaptainPos()
XLuaUiManager.Open(
"UiNewRoomSingleTip",
self,
characterIdList,
captainPos,
function(index)
team:SetCaptainPos(index)
teamClip:SetCaptainPos(index)
self:UpdateTeam()
end,
characterIdToIsIsAssitantDic
)
end
function XUiGridStrongholdTeam:OnClickPlugin()
XLuaUiManager.Open("UiStrongholdCoreTips", self.TeamList, self.TeamId, self.GroupId)
end
function XUiGridStrongholdTeam:GetTeam(isUseClip)
-- isUseClip时仅显示队伍数据用
return isUseClip and self.TeamListClip[self.TeamId] or self.TeamList[self.TeamId]
end
function XUiGridStrongholdTeam:OnBtnRuneClick()
local runeIdList = XDataCenter.StrongholdManager.GetAllRuneIds()
if XTool.IsTableEmpty(runeIdList) then
XLog.Error("XUiStrongholdRune:InitTabBtnGroup error, 服务器下发可用符文列表为空")
return
end
local team = self:GetTeam()
local runeId, subRuneId = team:GetRune()
XLuaUiManager.Open("UiStrongholdRune", self.TeamList, self.TeamId, self.GroupId, runeId)
end
function XUiGridStrongholdTeam:OnBtnFightClick()
if self.FightCb then
self.FightCb()
end
XDataCenter.StrongholdManager.TryEnterFight(self.GroupId, self.TeamId, self.TeamList)
end
function XUiGridStrongholdTeam:OnBtnResetClick()
local callFunc = function()
local groupId = self.GroupId
local stageId = XDataCenter.StrongholdManager.GetGroupStageId(groupId, self.TeamId)
XDataCenter.StrongholdManager.ResetStrongholdStageRequest(groupId, stageId)
end
local title = CSXTextManagerGetText("StrongholdTeamResetStageConfirmTitle")
local content = CSXTextManagerGetText("StrongholdTeamResetStageConfirmContent")
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, nil, callFunc)
end
return XUiGridStrongholdTeam