PGRData/Script/matrix/xoverseas/xui/xuislotmachine/XUiSlotMachineTaskContentPanel.lua

77 lines
2.7 KiB
Lua
Raw Normal View History

local tableSort = table.sort
local tableInsert = table.insert
local XSlotMachineTaskGrid = require("XOverseas/XUi/XUiSlotMachine/XUiSlotMachineTaskGrid")
local XUiSlotMachineTaskContentPanel = XClass(nil, "XUiSlotMachineTaskContentPanel")
function XUiSlotMachineTaskContentPanel:Ctor(rootUi, ui)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RectTransform = ui
self.RootUi = rootUi
XTool.InitUiObject(self)
self:Init()
end
function XUiSlotMachineTaskContentPanel:Init()
self.DynamicTable = XDynamicTableNormal.New(self.PanelTaskList.gameObject)
self.DynamicTable:SetProxy(XSlotMachineTaskGrid)
self.DynamicTable:SetDelegate(self)
end
function XUiSlotMachineTaskContentPanel:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
local taskId = self.TaskIds[index]
if taskId == nil then return end
grid:Init(self.RootUi)
grid:UpdateGrid(XDataCenter.TaskManager.GetTaskDataById(taskId))
end
end
function XUiSlotMachineTaskContentPanel:Refresh(taskTimeLimitId, taskType)
self.TaskTimeLimitId = taskTimeLimitId
if self.TaskTimeLimitId then
local taskCfg = XTaskConfig.GetTimeLimitTaskCfg(self.TaskTimeLimitId)
self.TaskIds = {}
local readOnlyTaskIds = {}
if taskType == XSlotMachineConfigs.TaskType.Daily then
readOnlyTaskIds = taskCfg.DayTaskId
elseif taskType == XSlotMachineConfigs.TaskType.Cumulative then
readOnlyTaskIds = taskCfg.TaskId
end
for _, taskId in ipairs(readOnlyTaskIds) do
tableInsert(self.TaskIds, taskId)
end
self:SortTaskIds(self.TaskIds)
self.DynamicTable:SetDataSource(self.TaskIds)
self.DynamicTable:ReloadDataASync()
end
end
function XUiSlotMachineTaskContentPanel:SortTaskIds(taskIds)
tableSort(taskIds, function(taskId1, taskId2)
local taskData1 = XDataCenter.TaskManager.GetTaskDataById(taskId1)
local taskData2 = XDataCenter.TaskManager.GetTaskDataById(taskId2)
if taskData1.State ~= taskData2.State then
if taskData1.State == XDataCenter.TaskManager.TaskState.Achieved then
return true
else
if taskData1.State == XDataCenter.TaskManager.TaskState.Active and taskData2.State == XDataCenter.TaskManager.TaskState.Finish then
return true
else
return false
end
end
else
if taskId1 < taskId2 then
return true
else
return false
end
end
end)
end
return XUiSlotMachineTaskContentPanel