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.adBtnRoot:setVisible(false)
self.completeNode:setVisible(false) self.completeNode:setVisible(false)
else else
if task.lock == nil then self.lockBg:setVisible(false)
self.lockBg:setVisible(false)
else
self.lockBg:setVisible(true)
end
self.lockNode:setVisible(false) self.lockNode:setVisible(false)
self.progressBg:setVisible(true) self.progressBg:setVisible(true)
local count = task.progress local count = task.progress

View File

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

View File

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