PGRData/Script/matrix/xui/xuiroomteamprefab/XUiRoomTeamPrefab.lua

99 lines
3.4 KiB
Lua
Raw Normal View History

local XUiGridTeam = require("XUi/XUiRoomTeamPrefab/XUiGridTeam")
local MAX_PREFAB_NUM = CS.XGame.Config:GetInt("MaxTeamPrefab")
local XUiRoomTeamPrefab = XLuaUiManager.Register(XLuaUi, "UiRoomTeamPrefab")
function XUiRoomTeamPrefab:OnAwake()
self:AddListener()
end
function XUiRoomTeamPrefab:OnStart(captainPos, firstFightPos, characterLimitType, limitBuffId, stageType, teamGridId, closeCb, stageId, team)
self.CaptainPos = captainPos
self.FirstFightPos = firstFightPos
self.CharacterLimitType = characterLimitType
self.LimitBuffId = limitBuffId
self.StageType = stageType
self.TeamGridId = teamGridId
self.CloseCb = closeCb
self.TeamPrefabs = {}
self.StageId = stageId
self:RefreshTeamList()
self.Team = team
end
function XUiRoomTeamPrefab:OnDestroy()
XEventManager.RemoveEventListener(XEventId.EVENT_TEAM_PREFAB_CHANGE, self.OnTeamPrefabChange, self)
if self.CloseCb then
self.CloseCb()
end
end
function XUiRoomTeamPrefab:OnTeamPrefabChange(index, teamData)
if self.TeamPrefabs[index] then
self.TeamPrefabs[index]:Refresh(teamData, index)
end
end
function XUiRoomTeamPrefab:AddListener()
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
XEventManager.AddEventListener(XEventId.EVENT_TEAM_PREFAB_CHANGE, self.OnTeamPrefabChange, self)
end
function XUiRoomTeamPrefab:NewTeamGrid()
local item = CS.UnityEngine.Object.Instantiate(self.GridTeam)
local characterLimitType = self.CharacterLimitType
local limitBuffId = self.LimitBuffId
local stageType = self.StageType
local teamGridId = self.TeamGridId
local grid = XUiGridTeam.New(self, item, characterLimitType, limitBuffId, stageType, teamGridId, self.StageId)
grid.Transform:SetParent(self.PanelTeamContent, false)
grid.GameObject:SetActive(true)
return grid
end
function XUiRoomTeamPrefab:GetSimpleTeamData(index)
local maxPos = XDataCenter.TeamManager.GetMaxPos()
local teamData = {}
teamData.TeamId = index
teamData.CaptainPos = XDataCenter.TeamManager.GetCaptainPos()
teamData.FirstFightPos = XDataCenter.TeamManager.GetFirstFightPos()
teamData.TeamName = CS.XTextManager.GetText("TeamPrefabDefaultName", index)
teamData.TeamData = {}
for idx = 1, maxPos do
teamData.TeamData[idx] = 0
end
return teamData
end
function XUiRoomTeamPrefab:RefreshTeamList()
self.GridTeam.gameObject:SetActive(false)
local teamDataList = XDataCenter.TeamManager.GetTeamPrefabData()
for i = 1, MAX_PREFAB_NUM do
local grid = self.TeamPrefabs[i]
if not grid then
grid = self:NewTeamGrid(i)
self.TeamPrefabs[i] = grid
end
local teamData = teamDataList[i] or self:GetSimpleTeamData(i)
if not teamData.CaptainPos
or teamData.CaptainPos < 1
or teamData.CaptainPos > 3 then
XLog.Error("XUiRoomTeamPrefab:RefreshTeamList函数错误teamData的CaptainPos数据不正确")
teamData.CaptainPos = 1
end
if not teamData.FirstFightPos
or teamData.FirstFightPos < 1
or teamData.FirstFightPos > 3 then
XLog.Error("XUiRoomTeamPrefab:RefreshTeamList函数错误teamData的FirstFightPos数据不正确")
teamData.FirstFightPos = 1
end
grid:Refresh(teamData, i)
end
end
function XUiRoomTeamPrefab:OnBtnBackClick()
self:Close()
end