PGRData/Script/matrix/xui/xuimultidim/XUiMultiDimTask.lua

123 lines
No EOL
3.8 KiB
Lua

local XUiMultiDimTask = XLuaUiManager.Register(XLuaUi, "UiMultiDimTask")
function XUiMultiDimTask:OnAwake()
self:RegisterUiEvents()
self.GridTask.gameObject:SetActiveEx(false)
self.BtnFirstHasSnd.gameObject:SetActiveEx(false)
self.BtnTabGrid = {}
end
function XUiMultiDimTask:OnStart()
local itemId = XDataCenter.MultiDimManager.GetActivityItemId()
self.AssetPanel = XUiHelper.NewPanelActivityAsset({ itemId }, self.PanelSpecialTool)
self:InitDynamicTable()
self:InitLeftTabBtn()
self.TaskGroupIds = XDataCenter.MultiDimManager.GetActivityTaskGroupId()
self.CurrentTaskGroupId = self.TaskGroupIds[1]
-- 开启自动关闭检查
local endTime = XDataCenter.MultiDimManager.GetEndTime()
self:SetAutoCloseInfo(endTime, function(isClose)
if isClose then
XDataCenter.MultiDimManager.HandleActivityEndTime()
end
end)
end
function XUiMultiDimTask:OnEnable()
self.Super.OnEnable(self)
self.BtnTabGroup:SelectIndex(self.CurrentTab or 1)
self:RefreshRedPoint()
end
function XUiMultiDimTask:OnGetEvents()
return { XEventId.EVENT_FINISH_TASK }
end
function XUiMultiDimTask:OnNotify(event, ...)
if event == XEventId.EVENT_FINISH_TASK then
self:SetupDynamicTable()
self:RefreshRedPoint()
end
end
function XUiMultiDimTask:InitDynamicTable()
self.DynamicTable = XDynamicTableNormal.New(self.PanelTaskStoryList)
self.DynamicTable:SetProxy(XDynamicGridTask, self)
self.DynamicTable:SetDelegate(self)
end
function XUiMultiDimTask:SetupDynamicTable()
self.TaskDataList = XDataCenter.TaskManager.GetTimeLimitTaskListByGroupId(self.CurrentTaskGroupId)
self.PanelNoneStoryTask.gameObject:SetActiveEx(XTool.IsTableEmpty(self.TaskDataList))
self.DynamicTable:SetDataSource(self.TaskDataList)
self.DynamicTable:ReloadDataASync()
end
function XUiMultiDimTask:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid.RootUi = self
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:ResetData(self.TaskDataList[index])
end
end
function XUiMultiDimTask:InitLeftTabBtn()
local taskGroupNames = XDataCenter.MultiDimManager.GetActivityTaskGroupName()
local tabGroup = {}
for i = 1, #taskGroupNames do
local btn = self.BtnTabGrid[i]
if not btn then
local go = #self.BtnTabGrid == 0 and self.BtnFirst or XUiHelper.Instantiate(self.BtnFirst, self.BtnContent)
btn = go:GetComponent("XUiButton")
table.insert(self.BtnTabGrid, btn)
end
btn:SetName(taskGroupNames[i])
tabGroup[i] = btn
end
for i = #taskGroupNames + 1, #self.BtnTabGrid do
self.BtnTabGrid.GameObject:SetActiveEx(false)
end
self.BtnTabGroup:Init(tabGroup, function(tabIndex)
self:OnClickTabCallBack(tabIndex)
end)
end
function XUiMultiDimTask:OnClickTabCallBack(tabIndex)
if self.CurrentTab and self.CurrentTab == tabIndex then
return
end
self.CurrentTab = tabIndex
self.CurrentTaskGroupId = self.TaskGroupIds[tabIndex]
self:SetupDynamicTable()
end
function XUiMultiDimTask:RefreshRedPoint()
for tabIndex, taskGroupId in pairs(self.TaskGroupIds) do
local btn = self.BtnTabGrid[tabIndex]
if btn then
local isShowRed = XDataCenter.TaskManager.CheckLimitTaskList(taskGroupId)
btn:ShowReddot(isShowRed)
end
end
end
function XUiMultiDimTask:RegisterUiEvents()
XUiHelper.RegisterClickEvent(self, self.BtnBack, self.OnBtnBackClick)
XUiHelper.RegisterClickEvent(self, self.BtnMainUi, self.OnBtnMainUiClick)
end
function XUiMultiDimTask:OnBtnBackClick()
self:Close()
end
function XUiMultiDimTask:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
return XUiMultiDimTask