local TaskData = class("TaskData", BaseData) local DAILY_TASK_AD_ID = 1 local DAILY_TASK_FINAL_ID = 2 function TaskData:ctor() self.data.dailyTaskDirty = false end function TaskData:init(data) local tasks = data and data.tasks local cfg = self:getDailyTaskCfg() local taskCfg = self:getTaskCfg() self.dailyTasks = {} for k, v in pairs(cfg) do local task = tasks and tasks[k] or GConst.EMPTY_TABLE local taskInfo = taskCfg[task.task_id] if taskInfo then local dailyTaskObj = { id = k, taskId = task.task_id, progress = task.progress, needProgress = taskInfo.number, refresh = task.refresh, claimed = task.claimed, type = v.type } if v.bounty then dailyTaskObj.lock = true end self.dailyTasks[k] = dailyTaskObj end end end function TaskData:refreshDailyTask(task) local taskInfo = self:getTaskCfg()[task.task_id] if taskInfo == nil then return end local id = task.id local dailyTaskObj = self.dailyTasks[id] if dailyTaskObj == nil then dailyTaskObj = {} self.dailyTasks[id] = dailyTaskObj end -- 刷新任务的时候type不会变 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 self:markDailyTaskDirty() end function TaskData:getIsOpen() return ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.TASK, true) end function TaskData:getDailyResetTime() return 86400 - Time:getServerTime() % 86400 end function TaskData:getDailyTaskAdId() return DAILY_TASK_AD_ID end function TaskData:getDailyTaskFinalId() return DAILY_TASK_FINAL_ID end function TaskData:markDailyTaskDirty() self.data.dailyTaskDirty = not self.data.dailyTaskDirty end function TaskData:getDailyTaskProgress(id) local task = self.dailyTasks[id] if task == nil then return 0, 1 end return task.progress, task.needProgress end function TaskData:getDailyTaskDesc(id) local task = self.dailyTasks[id] if task == nil then return GConst.EMPTY_STRING end local cfg = self:getTaskI18NCfg() return cfg[task.taskId].desc end function TaskData:getDailyTaskIsLock(id) local task = self.dailyTasks[id] if task == nil then return nil end return task.lock end function TaskData:getDailyTaskCanRefresh(id) local cfg = self:getDailyTaskCfg()[id] if cfg == nil then return false end return cfg.ad_refresh end function TaskData:getDailyTaskIcon(id) local task = self.dailyTasks[id] if task == nil then return GConst.EMPTY_STRING end local cfg = self:getTaskCfg() return cfg[task.taskId].icon end function TaskData:getDailyTaskReward(id) local task = self.dailyTasks[id] if task == nil then return GConst.EMPTY_STRING end local cfg = self:getTaskCfg() return cfg[task.taskId].reward end function TaskData:getDailyTasks() return self.dailyTasks end function TaskData:getTaskI18NCfg() if self.taskI18NCfg == nil then self.taskI18NCfg = I18N:getConfig("task") end return self.taskI18NCfg end function TaskData:getTaskCfg() if self.taskCfg == nil then self.taskCfg = ConfigManager:getConfig("task") end return self.taskCfg end function TaskData:getDailyTaskCfg() if self.dailyTaskCfg == nil then self.dailyTaskCfg = ConfigManager:getConfig("task_daily") end return self.dailyTaskCfg end return TaskData