99 lines
No EOL
2.9 KiB
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 |