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

231 lines
8 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 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