diff --git a/lua/app/common/bi_report.lua b/lua/app/common/bi_report.lua index 93810646..d51d9a47 100644 --- a/lua/app/common/bi_report.lua +++ b/lua/app/common/bi_report.lua @@ -52,11 +52,14 @@ BIReport.ITEM_GET_TYPE = { RECOVERY_TIME = "RecoveryTime", ADS_BUY_VIT = "AdsBuyVit", GEM_BUY_VIT = "GemBuyVit", + TASK_DAILY_REFRESH = "TaskDailyRefresh", + TASK_DAILY_REWARD = "TaskDailyReward", } BIReport.ADS_CLICK_TYPE = { BATTLE_SKILL_REFRESH = "BattleSkillRefresh", AD_ENERGY = "AdEnergy", + TASK_DAILY_REFRESH = "TaskDailyRefresh", } BIReport.FIGHT_OPT_TYPE = { diff --git a/lua/app/module/task/task_manager.lua b/lua/app/module/task/task_manager.lua index e106bf57..92bb7fcb 100644 --- a/lua/app/module/task/task_manager.lua +++ b/lua/app/module/task/task_manager.lua @@ -4,6 +4,41 @@ function TaskManager:showTaskMainUI() UIManager:showUI("app/ui/task/task_main_ui") end +function TaskManager:refreshDailyTask(dailyTaskId) + SDKManager:showFullScreenAds(BIReport.ADS_CLICK_TYPE.TASK_DAILY_REFRESH, function() + local parmas = { + id = dailyTaskId, + } + self:sendMessage(ProtoMsgType.FromMsgEnum.TaskDailyRefreshReq, parmas, {}, self.onDailyTaskRefresh, BIReport.ITEM_GET_TYPE.TASK_DAILY_REFRESH) + end) +end + +function TaskManager:onDailyTaskRefresh(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + if result.task then + DataManager.TaskData:refreshDailyTask(result.task) + end + end +end + +function TaskManager:claimDailyTask(dailyTaskId) + local parmas = { + id = dailyTaskId, + } + self:sendMessage(ProtoMsgType.FromMsgEnum.TaskDailyRewardReq, parmas, {}, self.onDailyTaskClaim, BIReport.ITEM_GET_TYPE.TASK_DAILY_REWARD) +end + +function TaskManager:onDailyTaskClaim(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + if result.task then + DataManager.TaskData:refreshDailyTask(result.task) + end + if result.rewards then + GFunc.showRewardBox(result.reward) + end + end +end + function TaskManager:registerTask(moduleName, taskType, callback) if not self.registerTaskInfo then self.registerTaskInfo = {} diff --git a/lua/app/ui/task/cell/daily_task_cell.lua b/lua/app/ui/task/cell/daily_task_cell.lua index 8beb672f..551ee6b0 100644 --- a/lua/app/ui/task/cell/daily_task_cell.lua +++ b/lua/app/ui/task/cell/daily_task_cell.lua @@ -9,11 +9,17 @@ function DailyTaskCell:init() self.progressTx = uiMap["task_cell.progress_bg.progress_tx"] self.getBtn = uiMap["task_cell.get_btn"] self.getBtn:addClickListener(function() + if self.taskId then + ModuleManager.TaskManager:claimDailyTask(self.taskId) + end end) self.getBtnTx = uiMap["task_cell.get_btn.text"] self.getBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.BTN_CLAIM)) self.refreshBtn = uiMap["task_cell.refresh_btn"] self.refreshBtn:addClickListener(function() + if self.taskId then + ModuleManager.TaskManager:refreshDailyTask(self.taskId) + end end) self.refreshBtnTx = uiMap["task_cell.refresh_btn.text"] self.refreshBtnTx:setText("临时文本:刷新") @@ -33,6 +39,7 @@ function DailyTaskCell:init() end function DailyTaskCell:refresh(task) + self.taskId = task.id local icon = DataManager.TaskData:getDailyTaskIcon(task.id) self.icon:setSprite(GConst.ATLAS_PATH.ICON_TASK, icon) local taskDesc = DataManager.TaskData:getDailyTaskDesc(task.id) diff --git a/lua/app/ui/task/task_main_ui.lua b/lua/app/ui/task/task_main_ui.lua index 6f0bb621..a6f7fa18 100644 --- a/lua/app/ui/task/task_main_ui.lua +++ b/lua/app/ui/task/task_main_ui.lua @@ -39,8 +39,8 @@ function TaskMainUI:ctor(params) self.challengeTaskList = {} local taskAdId = DataManager.TaskData:getDailyTaskAdId() local taskFinalId = DataManager.TaskData:getDailyTaskFinalId() - local dailyTasks = DataManager.TaskData:getDailyTaskList() - for k, v in ipairs(dailyTasks) do + local dailyTasks = DataManager.TaskData:getDailyTasks() + for k, v in pairs(dailyTasks) do if k ~= taskAdId and k ~= taskFinalId then if v.type == TASK_TYPE_DAILY then table.insert(self.dailyTaskList, v) @@ -111,7 +111,6 @@ function TaskMainUI:initDaily() self.dailyNode = self.uiMap["task_main_ui.bg.daily"] self:initDailyTaskAdCell() self:initDailyTaskFinalCell() - self:initDailyTasks() end function TaskMainUI:initDailyTaskAdCell() @@ -150,7 +149,6 @@ end function TaskMainUI:initChallenge() self.challengeNode = self.uiMap["task_main_ui.bg.challenge"] - self:initChallengeTasks() end function TaskMainUI:initChallengeTasks() @@ -175,7 +173,7 @@ end function TaskMainUI:bindData() self:bind(DataManager.TaskData, "dailyTaskDirty", function() - self:refreshDaily() + self:onRefresh() end) end @@ -206,6 +204,7 @@ end function TaskMainUI:refreshDaily() self:refreshDailyTaskAdCell() self:refreshDailyTaskFinalCell() + self:refreshDailyTasks() end function TaskMainUI:refreshDailyTaskAdCell() @@ -232,8 +231,22 @@ function TaskMainUI:refreshDailyTaskFinalCell() self.dailyTaskFinalCellProgress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = count/needCount end -function TaskMainUI:refreshChallenge() +function TaskMainUI:refreshDailyTasks() + Logger.logHighlight("refreshDailyTasks") + if self.dailyTaskScrollRect == nil then + self:initDailyTasks() + else + self.dailyTaskScrollRect:updateAllCell() + end +end +function TaskMainUI:refreshChallenge() + Logger.logHighlight("refreshChallenge") + if self.challengeTaskScrollRect == nil then + self:initChallengeTasks() + else + self.challengeTaskScrollRect:updateAllCell() + end end function TaskMainUI:showHelp() diff --git a/lua/app/userdata/task/task_data.lua b/lua/app/userdata/task/task_data.lua index 9ccb4701..c61d964d 100644 --- a/lua/app/userdata/task/task_data.lua +++ b/lua/app/userdata/task/task_data.lua @@ -11,7 +11,7 @@ function TaskData:init(data) local tasks = data and data.tasks local cfg = self:getDailyTaskCfg() local taskCfg = self:getTaskCfg() - self.dailyTaskList = {} + 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] @@ -28,11 +28,32 @@ function TaskData:init(data) if v.bounty then dailyTaskObj.lock = true end - table.insert(self.dailyTaskList, dailyTaskObj) + 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 @@ -54,7 +75,7 @@ function TaskData:markDailyTaskDirty() end function TaskData:getDailyTaskProgress(id) - local task = self.dailyTaskList[id] + local task = self.dailyTasks[id] if task == nil then return 0, 1 end @@ -62,7 +83,7 @@ function TaskData:getDailyTaskProgress(id) end function TaskData:getDailyTaskDesc(id) - local task = self.dailyTaskList[id] + local task = self.dailyTasks[id] if task == nil then return GConst.EMPTY_STRING end @@ -71,7 +92,7 @@ function TaskData:getDailyTaskDesc(id) end function TaskData:getDailyTaskIsLock(id) - local task = self.dailyTaskList[id] + local task = self.dailyTasks[id] if task == nil then return nil end @@ -87,7 +108,7 @@ function TaskData:getDailyTaskCanRefresh(id) end function TaskData:getDailyTaskIcon(id) - local task = self.dailyTaskList[id] + local task = self.dailyTasks[id] if task == nil then return GConst.EMPTY_STRING end @@ -96,7 +117,7 @@ function TaskData:getDailyTaskIcon(id) end function TaskData:getDailyTaskReward(id) - local task = self.dailyTaskList[id] + local task = self.dailyTasks[id] if task == nil then return GConst.EMPTY_STRING end @@ -104,8 +125,8 @@ function TaskData:getDailyTaskReward(id) return cfg[task.taskId].reward end -function TaskData:getDailyTaskList() - return self.dailyTaskList +function TaskData:getDailyTasks() + return self.dailyTasks end function TaskData:getTaskI18NCfg()