PGRData/Script/matrix/xui/xuitask/XTaskContainer.lua

99 lines
No EOL
2.9 KiB
Lua

XTaskContainer = XClass(nil, "XTaskContainer")
function XTaskContainer:Ctor(rootUi, container, grid, taskType, cb)
self.RootUi = rootUi
self.PanelContainer = container
self.GridTask = grid
self.TaskType = taskType
self.GridContainer = {}
self.Girds = {}
if self.TaskType == XDataCenter.TaskManager.TaskType.Daily then
self.Cb = cb
end
self.GridTask.gameObject:SetActive(false)
end
function XTaskContainer:GetTaskList()
if self.TaskType == XDataCenter.TaskManager.TaskType.Story then
return XDataCenter.TaskManager.GetStoryTaskList()
elseif self.TaskType == XDataCenter.TaskManager.TaskType.Daily then
return XDataCenter.TaskManager.GetDailyTaskList()
elseif self.TaskType == XDataCenter.TaskManager.TaskType.Activity then
return XDataCenter.TaskManager.GetActivityTaskList()
elseif self.TaskType == XDataCenter.TaskManager.TaskType.Achievement then
return XDataCenter.TaskManager.GetAchvTaskList()
else
XLog.Error("XTaskContainer:GetTaskList error: unknown task type, task type is " .. self.TaskType)
end
end
function XTaskContainer:Refresh()
local list = self:GetTaskList()
if not list or #list <= 0 then
return
end
self.GridContainer = {}
for _, var in ipairs(self.Girds) do
var.GameObject.name = "-1"
var.GameObject:SetActive(false)
end
for i, var in ipairs(list) do
local grid = self.Girds[i]
if grid then
self.GridContainer[var.Id] = grid
grid:ResetData(var)
grid.GameObject.name = var.Id
grid.GameObject:SetActive(true)
else
self:AddItem(var)
end
end
end
function XTaskContainer:AddItem(data)
local ui = CS.UnityEngine.Object.Instantiate(self.GridTask)
ui.transform:SetParent(self.PanelContainer, false)
ui.gameObject:SetActive(true)
ui.gameObject.name = data.Id
local grid = XUiGridTask.New(self.RootUi, ui, data, function()
if self.Cb then
self.Cb()
end
end)
table.insert(self.Girds, grid)
grid:PlayEnter()
self.GridContainer[data.Id] = grid
end
function XTaskContainer:RemoveItem(id)
if self.TaskType ~= XDataCenter.TaskManager.TaskType.Achievement then
self.GridContainer[id].GameObject:SetActive(false)
-- CS.UnityEngine.Object.Destroy(self.GridContainer[id].GameObject)
end
self.GridContainer[id] = nil
end
--成就列表分类显示
function XTaskContainer:MatchType(achvtype)
for _, var in ipairs(self.Girds) do
var.GameObject:SetActive(false)
end
for _, v in pairs(self.GridContainer) do
if v.tableData.AchvType == achvtype then
v.GameObject.gameObject:SetActive(true)
end
end
end
-- function XTaskContainer:UpdateTaskProgress(id, value)
-- self.GridContainer[id]:UpdateProgress(value)
-- end