This commit is contained in:
chenxi 2023-05-17 17:26:35 +08:00
parent 8c2d9c26bb
commit b5541f30b6
3 changed files with 62 additions and 30 deletions

View File

@ -63,11 +63,7 @@ function DailyTaskCell:refresh(task)
self.adBtnRoot:setVisible(false)
self.completeNode:setVisible(false)
else
if task.lock == nil then
self.lockBg:setVisible(false)
else
self.lockBg:setVisible(true)
end
self.lockBg:setVisible(false)
self.lockNode:setVisible(false)
self.progressBg:setVisible(true)
local count = task.progress

View File

@ -108,6 +108,7 @@ function BountyData:setBought(season, level)
end
self.bought = true
self.level = level or self.level
DataManager.DailyTaskData:unlockBountyTask()
self:markDirty()
end

View File

@ -12,6 +12,7 @@ function DailyTaskData:ctor()
self.isInReset = false
self.taskTypeMap = {}
self.dailyTasks = {}
self.isUnlockBountyDailyTask = false
end
function DailyTaskData:init(data)
@ -26,6 +27,7 @@ function DailyTaskData:init(data)
table.remove(v)
end
end
self.isUnlockBountyDailyTask = DataManager.BountyData:getBought()
local redPoint = 0
ModuleManager.TaskManager:unRegisterAllModuleTask(DATA_NAME)
for k, v in pairs(cfg) do
@ -49,7 +51,7 @@ function DailyTaskData:init(data)
dailyTaskObj.redPoint = false
end
if v.bounty then
if DataManager.BountyData:getBought() then
if self.isUnlockBountyDailyTask then
dailyTaskObj.lock = false
else
dailyTaskObj.lock = true
@ -63,7 +65,7 @@ function DailyTaskData:init(data)
end
table.insert(list, dailyTaskObj)
if #list == 1 then
self:registerTask(taskInfo.type)
self:registerTaskWithType(taskInfo.type)
end
end
self.dailyTasks[k] = dailyTaskObj
@ -96,39 +98,26 @@ function DailyTaskData:refreshDailyTask(task)
if originTaskInfo == nil then
return
end
local dailyTaskInfo = self:getDailyTaskCfg()[id]
if dailyTaskInfo == nil then
return
end
dailyTaskObj.id = task.id
dailyTaskObj.taskId = task.task_id
dailyTaskObj.progress = task.progress
dailyTaskObj.needProgress = taskInfo.number
dailyTaskObj.refresh = task.refresh
dailyTaskObj.claimed = task.claimed
dailyTaskObj.type = dailyTaskInfo.type
dailyTaskObj.reset = dailyTaskInfo.reset
local redPoint = false
if not dailyTaskObj.claimed and dailyTaskObj.progress >= dailyTaskObj.needProgress then
redPoint = true
end
local originTaskType = originTaskInfo.type
if originTaskType ~= taskInfo.type then -- 任务类型变了
local originTaskList = self.taskTypeMap[originTaskType]
if originTaskList then
for k, v in ipairs(originTaskList) do
if v.id == id then
table.remove(originTaskList, k)
break
end
end
if #originTaskList == 0 then
self:unregisterTask(originTaskType)
end
end
local newTaskList = self.taskTypeMap[taskInfo.type]
if newTaskList == nil then
newTaskList = {}
self.taskTypeMap[taskInfo.type] = newTaskList
end
table.insert(newTaskList, dailyTaskObj)
if #newTaskList == 1 then
self:registerTask(taskInfo.type)
end
self:unregisterTask(id, originTaskType)
self:registerTask(dailyTaskObj, taskInfo.type)
end
self:markDailyTaskDirty()
@ -294,7 +283,7 @@ function DailyTaskData:addTaskProgress(task, taskType, count)
self:markDailyTaskDirty()
end
function DailyTaskData:registerTask(taskType)
function DailyTaskData:registerTaskWithType(taskType)
ModuleManager.TaskManager:registerTask(DATA_NAME, taskType, function(count)
local list = self:getTaskListByType(taskType)
if #list > 0 then
@ -305,10 +294,37 @@ function DailyTaskData:registerTask(taskType)
end)
end
function DailyTaskData:unregisterTask(taskType)
function DailyTaskData:unregisterTask(id, taskType)
local taskList = self.taskTypeMap[taskType]
if taskList then
for k, v in ipairs(taskList) do
if v.id == id then
table.remove(taskList, k)
break
end
end
if #taskList == 0 then
self:unregisterTaskWithType(taskType)
end
end
end
function DailyTaskData:unregisterTaskWithType(taskType)
ModuleManager.TaskManager:unRegisterTask(DATA_NAME, taskType)
end
function DailyTaskData:registerTask(dailyTaskObj, taskType)
local taskList = self.taskTypeMap[taskType]
if taskList == nil then
taskList = {}
self.taskTypeMap[taskType] = taskList
end
table.insert(taskList, dailyTaskObj)
if #taskList == 1 then
self:registerTaskWithType(taskType)
end
end
function DailyTaskData:getIfCanReset()
return self.initDay < Time:getBeginningOfServerToday()
end
@ -325,4 +341,23 @@ function DailyTaskData:getIsShowRedPoint()
return self.redPoint > 0
end
function DailyTaskData:unlockBountyTask()
if self.isUnlockBountyDailyTask then
return
end
self.isUnlockBountyDailyTask = true
local dirty = false
local taskCfg = self:getTaskCfg()
for k, v in pairs(self.dailyTasks) do
if v.lock then -- 有锁的要解锁
v.lock = false
dirty = true
self:registerTask(v, taskCfg[v.taskId].type)
end
end
if dirty then
self:markDailyTaskDirty()
end
end
return DailyTaskData