任务
This commit is contained in:
parent
8c2d9c26bb
commit
b5541f30b6
@ -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.lockNode:setVisible(false)
|
||||
self.progressBg:setVisible(true)
|
||||
local count = task.progress
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user