PGRData/Script/matrix/xui/xuiexpedition/battle/changemember/XUiExpeditionRoomCharListPanel.lua

74 lines
No EOL
2.6 KiB
Lua

--虚像地平线战斗准备换人界面:角色列表
local XUiExpeditionRoomCharListPanel = XClass(nil, "XUiExpeditionRoomCharListPanel")
local XUiExpeditionRoomCharListGrid = require("XUi/XUiExpedition/Battle/ChangeMember/XUiExpeditionRoomCharListGrid")
function XUiExpeditionRoomCharListPanel:Ctor(ui, rootUi)
self.Transform = ui.transform
self.GameObject = ui.gameObject
self.RootUi = rootUi
XTool.InitUiObject(self)
self.DynamicTable = XDynamicTableNormal.New(self.GameObject)
self.DynamicTable:SetProxy(XUiExpeditionRoomCharListGrid)
self.DynamicTable:SetDelegate(self)
end
function XUiExpeditionRoomCharListPanel:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid:Init(grid.DynamicGrid.gameObject, self.RootUi)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
local memberData = self.MemberList[index]
grid:RefreshDatas(memberData)
if self.CurrentBaseId == memberData:GetBaseId() then
self.CurCharacterGrid = grid
end
grid:SetSelect(self.CurrentBaseId == memberData:GetBaseId())
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
self:SetSelectCharacter(grid)
end
end
function XUiExpeditionRoomCharListPanel:UpdateData(baseId)
self.MemberList = XDataCenter.ExpeditionManager.GetTeam():GetDisplayTeamList()
if XTool.IsTableEmpty(self.MemberList) then
return
end
local index = 1
self.CurrentBaseId = baseId
if baseId > 0 then
index = XDataCenter.ExpeditionManager.GetCharaDisplayIndex(baseId)
if index < 0 then
self.CurrentBaseId = self.MemberList[1]:GetBaseId()
index = 1
end
else
self.CurrentBaseId = self.MemberList[1]:GetBaseId()
end
self:UpdateModel()
self.DynamicTable:SetDataSource(self.MemberList)
self.DynamicTable:ReloadDataSync(index)
end
--选中
function XUiExpeditionRoomCharListPanel:SetSelectCharacter(grid)
if self.CurrentBaseId == grid.BaseId then
return
end
if self.CurCharacterGrid then
self.CurCharacterGrid:SetSelect(false)
end
grid:SetSelect(true)
self.CurCharacterGrid = grid
self.CurrentBaseId = grid.BaseId
self:UpdateModel()
end
function XUiExpeditionRoomCharListPanel:UpdateModel()
local eChara = XDataCenter.ExpeditionManager.GetCharaByEBaseId(self.CurrentBaseId)
if eChara then
self.RootUi:Refresh(eChara:GetCharacterId(), self.CurrentBaseId, eChara:GetRobotId())
end
end
return XUiExpeditionRoomCharListPanel