PGRData/Script/matrix/xui/xuibfrt/XUiGridEchelonExp.lua

138 lines
4.8 KiB
Lua
Raw Normal View History

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
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