PGRData/Script/matrix/xui/xuiarenateam/XUiPanelHall.lua

143 lines
4.2 KiB
Lua
Raw Normal View History

local XUiPanelHall = XClass(nil, "XUiPanelHall")
local XUiGridArenaTeam = require("XUi/XUiArenaTeam/XUiArenaTeamCommon/XUiGridArenaTeam")
local XUiGridArenaTeamSingle = require("XUi/XUiArenaTeam/XUiArenaTeamCommon/XUiGridArenaTeamSingle")
local ARENA_HALL_TAB = {
TEAM = 1,
SINGLE = 2,
}
function XUiPanelHall:Ctor(ui, rootUi)
self.GameObject = ui.gameObject
self.Transform = ui.transform
XTool.InitUiObject(self)
self:AutoAddListener()
self.GridTeam.gameObject:SetActive(false)
self.GridTeamSingle.gameObject:SetActive(false)
self.RootUi = rootUi
self.IsShow = false
self.GameObject:SetActive(false)
self.DynamicTeamTable = XDynamicTableNormal.New(self.SViewTeam.transform)
self.DynamicTeamTable:SetProxy(XUiGridArenaTeam)
self.DynamicTeamTable:SetDelegate(self)
self.DynamicSingleTable = XDynamicTableNormal.New(self.SViewSingle.transform)
self.DynamicSingleTable:SetProxy(XUiGridArenaTeamSingle)
self.DynamicSingleTable:SetDelegate(self)
self.BtnList = {}
table.insert(self.BtnList, self.BtnTabTeam)
table.insert(self.BtnList, self.BtnTabSingle)
self.TypeTabGroup:Init(self.BtnList, function(index)
self:RefreshSelectedPanel(index)
end)
end
function XUiPanelHall:RegisterClickEvent(uiNode, func)
if func == nil then
XLog.Error("XUiPanelHall:RegisterClickEvent函数参数错误参数func不能为空")
return
end
if type(func) ~= "function" then
XLog.Error("XUiPanelHall:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
end
local listener = function(...)
func(self, ...)
end
CsXUiHelper.RegisterClickEvent(uiNode, listener)
end
function XUiPanelHall:AutoAddListener()
self:RegisterClickEvent(self.BtnRefresh, self.OnBtnRefreshClick)
end
function XUiPanelHall:OnBtnRefreshClick()
self:Refresh()
end
function XUiPanelHall:Show()
if self.IsShow then
return
end
self.IsShow = true
self.GameObject:SetActive(true)
self.RootUi:PlayAnimation("HallQieHuan")
self.TypeTabGroup:SelectIndex(ARENA_HALL_TAB.TEAM)
end
function XUiPanelHall:Hide()
if not self.IsShow then
return
end
self.IsShow = false
self.GameObject:SetActive(false)
end
--动态列表事件
function XUiPanelHall:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
local data = self.DataList[index]
grid:ResetData(data, self.RootUi)
end
end
function XUiPanelHall:Refresh()
local func = function()
self.TxtNoPlayer.gameObject:SetActive(false)
self.TxtNoTeam.gameObject:SetActive(false)
if self.SelectedIndex == ARENA_HALL_TAB.TEAM then
self.DataList = XDataCenter.ArenaManager.GetHallTeamList()
self.DynamicTeamTable:SetTotalCount(#self.DataList)
if #self.DataList > 0 then
self.TxtNoTeam.gameObject:SetActive(false)
self.DynamicTeamTable:ReloadDataASync(1)
else
self.TxtNoTeam.gameObject:SetActive(true)
self.DynamicTeamTable:ReloadDataASync()
end
else
self.DataList = XDataCenter.ArenaManager.GetHallPlayerList()
self.DynamicSingleTable:SetTotalCount(#self.DataList)
if #self.DataList > 0 then
self.TxtNoPlayer.gameObject:SetActive(false)
self.DynamicSingleTable:ReloadDataASync(1)
else
self.TxtNoPlayer.gameObject:SetActive(true)
self.DynamicSingleTable:ReloadDataASync()
end
end
end
if self.SelectedIndex == ARENA_HALL_TAB.TEAM then
XDataCenter.ArenaManager.RequestHallTeamList(func)
else
XDataCenter.ArenaManager.RequestHallPlayerList(func)
end
end
function XUiPanelHall:RefreshSelectedPanel(index)
self.SelectedIndex = index
if index == ARENA_HALL_TAB.TEAM then
self.SViewTeam.gameObject:SetActive(true)
self.SViewSingle.gameObject:SetActive(false)
else
self.SViewTeam.gameObject:SetActive(false)
self.SViewSingle.gameObject:SetActive(true)
end
self:Refresh()
end
return XUiPanelHall