2023-07-14 19:35:33 +00:00
|
|
|
|
local XUiGridEchelonExp = XClass(nil, "XUiGridEchelonExp")
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:Ctor(rootUi, ui, data)
|
|
|
|
|
self.GameObject = ui.gameObject
|
|
|
|
|
self.Transform = ui.transform
|
|
|
|
|
self.RootUi = rootUi
|
|
|
|
|
self:InitAutoScript()
|
|
|
|
|
self:InitComponentState()
|
|
|
|
|
self:ResetDataInfo()
|
|
|
|
|
self:UpdateDataInfo(data)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:InitComponentState()
|
|
|
|
|
self.GridCharacter.gameObject:SetActive(false)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:ResetDataInfo()
|
|
|
|
|
self.GroupId = nil
|
|
|
|
|
self.EchelonIndex = nil
|
|
|
|
|
self.BaseStage = nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:UpdateDataInfo(data)
|
|
|
|
|
self.GroupId = data.GroupId
|
|
|
|
|
self.EchelonIndex = data.EchelonIndex
|
|
|
|
|
self.BaseStage = data.BaseStage
|
|
|
|
|
self.EchelonType = data.EchelonType
|
|
|
|
|
|
|
|
|
|
self:UpdateTxtExp()
|
|
|
|
|
self:UpdateTxtEchelonIndex()
|
|
|
|
|
self:UpdatePanelMembers()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- auto
|
|
|
|
|
-- Automatic generation of code, forbid to edit
|
|
|
|
|
function XUiGridEchelonExp:InitAutoScript()
|
|
|
|
|
self:AutoInitUi()
|
|
|
|
|
self.SpecialSoundMap = {}
|
|
|
|
|
self:AutoAddListener()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:AutoInitUi()
|
|
|
|
|
self.TxtExp = self.Transform:Find("ImageExpTag/TxtExp"):GetComponent("Text")
|
|
|
|
|
self.TxtEchelonIndex = self.Transform:Find("TxtEchelonIndex"):GetComponent("Text")
|
|
|
|
|
self.PanelCharacters = self.Transform:Find("PanelCharacters")
|
|
|
|
|
self.GridCharacter = self.Transform:Find("PanelCharacters/GridCharacter")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:GetAutoKey(uiNode, eventName)
|
|
|
|
|
if not uiNode then return end
|
|
|
|
|
return eventName .. uiNode:GetHashCode()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:RegisterListener(uiNode, eventName, func)
|
|
|
|
|
local key = self:GetAutoKey(uiNode, eventName)
|
|
|
|
|
if not key then return end
|
|
|
|
|
local listener = self.AutoCreateListeners[key]
|
|
|
|
|
if listener ~= nil then
|
|
|
|
|
uiNode[eventName]:RemoveListener(listener)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if func ~= nil then
|
|
|
|
|
if type(func) ~= "function" then
|
|
|
|
|
XLog.Error("XUiGridEchelonExp:RegisterListener函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
listener = function(...)
|
|
|
|
|
XSoundManager.PlayBtnMusic(self.SpecialSoundMap[key], eventName)
|
|
|
|
|
func(self, ...)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
uiNode[eventName]:AddListener(listener)
|
|
|
|
|
self.AutoCreateListeners[key] = listener
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:AutoAddListener()
|
|
|
|
|
self.AutoCreateListeners = {}
|
|
|
|
|
end
|
|
|
|
|
-- auto
|
|
|
|
|
function XUiGridEchelonExp:UpdateTxtExp()
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local cardExp = XDataCenter.FubenManager.GetCardExp(self.BaseStage)
|
|
|
|
|
self.TxtExp.text = "+" .. cardExp
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:UpdateTxtEchelonIndex()
|
|
|
|
|
self.TxtEchelonIndex.text = XDataCenter.BfrtManager.GetEchelonNameTxt(self.EchelonType, self.EchelonIndex)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:UpdatePanelMembers()
|
|
|
|
|
if self.EchelonType == XDataCenter.BfrtManager.EchelonType.Fight then
|
|
|
|
|
self:UpdateFightTeamCharacter()
|
|
|
|
|
elseif self.EchelonType == XDataCenter.BfrtManager.EchelonType.Logistics then
|
|
|
|
|
self:UpdateLogisticsTeamCharacter()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:UpdateFightTeamCharacter()
|
|
|
|
|
local fightTeamList = XDataCenter.BfrtManager.GetFightTeamList(self.GroupId)
|
|
|
|
|
if not fightTeamList then
|
|
|
|
|
XLog.Error("XUiGridEchelonExp UpdateFightTeamCharacter 函数错误,根据GroupId: " .. tostring(self.GroupId) .. "获取fightTeamList失败,请检查后端返回的数据")
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local fightTeam = fightTeamList[self.EchelonIndex]
|
|
|
|
|
for index = 1, #fightTeam do
|
|
|
|
|
local charId = fightTeam[XDataCenter.BfrtManager.TeamPosConvert(index)]
|
|
|
|
|
if charId ~= 0 then
|
|
|
|
|
local char = XDataCenter.CharacterManager.GetCharacter(charId)
|
|
|
|
|
local ui = CS.UnityEngine.Object.Instantiate(self.GridCharacter)
|
|
|
|
|
local grid = XUiGridCharacter.New(ui, self, char)
|
|
|
|
|
grid.Transform:SetParent(self.PanelCharacters, false)
|
|
|
|
|
grid.GameObject:SetActive(true)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEchelonExp:UpdateLogisticsTeamCharacter()
|
|
|
|
|
local logisticsTeamList = XDataCenter.BfrtManager.GetLogisticsTeamList(self.GroupId)
|
|
|
|
|
if not logisticsTeamList then
|
|
|
|
|
XLog.Error("XUiGridEchelonExp UpdateLogisticsTeamCharacter 函数错误,根据GroupId: " .. tostring(self.GroupId) .. "获取logisticsTeamList失败,请检查后端返回的数据")
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local logisticsTeam = logisticsTeamList[self.EchelonIndex]
|
|
|
|
|
for index = 1, #logisticsTeam do
|
|
|
|
|
local charId = logisticsTeam[index]
|
|
|
|
|
if charId ~= 0 then
|
|
|
|
|
local char = XDataCenter.CharacterManager.GetCharacter(charId)
|
|
|
|
|
local ui = CS.UnityEngine.Object.Instantiate(self.GridCharacter)
|
|
|
|
|
local grid = XUiGridCharacter.New(ui, self, char)
|
|
|
|
|
grid.Transform:SetParent(self.PanelCharacters, false)
|
|
|
|
|
grid.GameObject:SetActive(true)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return XUiGridEchelonExp
|