From c44ce67f07699233b950be40a2fadcdb2d28363d Mon Sep 17 00:00:00 2001 From: chenxi Date: Thu, 11 May 2023 22:22:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/common/bi_report.lua | 1 + lua/app/module/task/task_manager.lua | 15 +++++ lua/app/proto/proto_msg_type.lua | 27 +++++---- lua/app/ui/task/task_main_ui.lua | 67 +++++++++++++++++++---- lua/app/userdata/task/daily_task_data.lua | 18 ++++++ 5 files changed, 104 insertions(+), 24 deletions(-) diff --git a/lua/app/common/bi_report.lua b/lua/app/common/bi_report.lua index a985e7f2..881062f6 100644 --- a/lua/app/common/bi_report.lua +++ b/lua/app/common/bi_report.lua @@ -52,6 +52,7 @@ BIReport.TASK_OPT_TYPE = { } BIReport.ITEM_GET_TYPE = { + NONE = "None", NEW_PLAYER_INITIAL = "NewPlayerInitial", -- 新玩家创号自带 UPGRADE_HERO = "UpgradeHero", CHAPTER_FIGHT_START = "ChapterFightStart", diff --git a/lua/app/module/task/task_manager.lua b/lua/app/module/task/task_manager.lua index 5eb73141..10ca9eae 100644 --- a/lua/app/module/task/task_manager.lua +++ b/lua/app/module/task/task_manager.lua @@ -48,6 +48,21 @@ function TaskManager:onDailyTaskClaim(result) end end +function TaskManager:resetDailyTask() + if DataManager.DailyTaskData:getIsInReset() then + return + end + DataManager.DailyTaskData:setInReset(true) + self:sendMessage(ProtoMsgType.FromMsgEnum.TaskDailyInfoReq, {}, {}, self.onResetDailyTask, BIReport.ITEM_GET_TYPE.NONE) +end + +function TaskManager:onResetDailyTask(result) + DataManager.DailyTaskData:setInReset(false) + if result.err_code == GConst.ERROR_STR.SUCCESS then + DataManager.DailyTaskData:init(result.info) + end +end + function TaskManager:registerTask(moduleName, taskType, callback) if not self.registerTaskInfo then self.registerTaskInfo = {} diff --git a/lua/app/proto/proto_msg_type.lua b/lua/app/proto/proto_msg_type.lua index b724d94f..6e5a8b79 100644 --- a/lua/app/proto/proto_msg_type.lua +++ b/lua/app/proto/proto_msg_type.lua @@ -23,10 +23,9 @@ local ProtoMsgType = { [1070843294] = "LoginRsp", [1471116409] = "BindReq", [1471118242] = "BindRsp", - [1473507638] = "TaskTutorRewardReq", - [1473509471] = "TaskTutorRewardRsp", [1584689751] = "ActPaidResultReq", [1584691584] = "ActPaidResultRsp", + [1662315069] = "TriggerLevelUpGiftNtf", [1666427920] = "MailDeleteReq", [1666429753] = "MailDeleteRsp", [1901321540] = "PipedReq", @@ -36,8 +35,6 @@ local ProtoMsgType = { [2118853729] = "HeroUpgradeRsp", [2285872137] = "ChapterBoxRewardReq", [2285873970] = "ChapterBoxRewardRsp", - [2429586383] = "MailCycleReq", - [2429588216] = "MailCycleRsp", [2581180989] = "MailListReq", [2581182822] = "MailListRsp", [2620369240] = "SevenDayRewardReq", @@ -62,9 +59,13 @@ local ProtoMsgType = { [3341173994] = "BountyBoughtNtf", [3363939655] = "TaskDailyAdReq", [3363941488] = "TaskDailyAdRsp", + [3421550443] = "GlobalGiftReq", + [3421552276] = "GlobalGiftRsp", [3421843875] = "TaskDailyRewardReq", [3421845708] = "TaskDailyRewardRsp", [3440328467] = "PigLevelUpNtf", + [3555824176] = "TaskDailyInfoReq", + [3555826009] = "TaskDailyInfoRsp", [3607879254] = "AuthReq", [3607881087] = "AuthRsp", [3624439233] = "NewMailNtf", @@ -105,10 +106,9 @@ local ProtoMsgType = { LoginRsp = 1070843294, BindReq = 1471116409, BindRsp = 1471118242, - TaskTutorRewardReq = 1473507638, - TaskTutorRewardRsp = 1473509471, ActPaidResultReq = 1584689751, ActPaidResultRsp = 1584691584, + TriggerLevelUpGiftNtf = 1662315069, MailDeleteReq = 1666427920, MailDeleteRsp = 1666429753, PipedReq = 1901321540, @@ -118,8 +118,6 @@ local ProtoMsgType = { HeroUpgradeRsp = 2118853729, ChapterBoxRewardReq = 2285872137, ChapterBoxRewardRsp = 2285873970, - MailCycleReq = 2429586383, - MailCycleRsp = 2429588216, MailListReq = 2581180989, MailListRsp = 2581182822, SevenDayRewardReq = 2620369240, @@ -144,9 +142,13 @@ local ProtoMsgType = { BountyBoughtNtf = 3341173994, TaskDailyAdReq = 3363939655, TaskDailyAdRsp = 3363941488, + GlobalGiftReq = 3421550443, + GlobalGiftRsp = 3421552276, TaskDailyRewardReq = 3421843875, TaskDailyRewardRsp = 3421845708, PigLevelUpNtf = 3440328467, + TaskDailyInfoReq = 3555824176, + TaskDailyInfoRsp = 3555826009, AuthReq = 3607879254, AuthRsp = 3607881087, NewMailNtf = 3624439233, @@ -187,10 +189,9 @@ local ProtoMsgType = { LoginRsp = "LoginRsp", BindReq = "BindReq", BindRsp = "BindRsp", - TaskTutorRewardReq = "TaskTutorRewardReq", - TaskTutorRewardRsp = "TaskTutorRewardRsp", ActPaidResultReq = "ActPaidResultReq", ActPaidResultRsp = "ActPaidResultRsp", + TriggerLevelUpGiftNtf = "TriggerLevelUpGiftNtf", MailDeleteReq = "MailDeleteReq", MailDeleteRsp = "MailDeleteRsp", PipedReq = "PipedReq", @@ -200,8 +201,6 @@ local ProtoMsgType = { HeroUpgradeRsp = "HeroUpgradeRsp", ChapterBoxRewardReq = "ChapterBoxRewardReq", ChapterBoxRewardRsp = "ChapterBoxRewardRsp", - MailCycleReq = "MailCycleReq", - MailCycleRsp = "MailCycleRsp", MailListReq = "MailListReq", MailListRsp = "MailListRsp", SevenDayRewardReq = "SevenDayRewardReq", @@ -226,9 +225,13 @@ local ProtoMsgType = { BountyBoughtNtf = "BountyBoughtNtf", TaskDailyAdReq = "TaskDailyAdReq", TaskDailyAdRsp = "TaskDailyAdRsp", + GlobalGiftReq = "GlobalGiftReq", + GlobalGiftRsp = "GlobalGiftRsp", TaskDailyRewardReq = "TaskDailyRewardReq", TaskDailyRewardRsp = "TaskDailyRewardRsp", PigLevelUpNtf = "PigLevelUpNtf", + TaskDailyInfoReq = "TaskDailyInfoReq", + TaskDailyInfoRsp = "TaskDailyInfoRsp", AuthReq = "AuthReq", AuthRsp = "AuthRsp", NewMailNtf = "NewMailNtf", diff --git a/lua/app/ui/task/task_main_ui.lua b/lua/app/ui/task/task_main_ui.lua index 875418ad..7355bd79 100644 --- a/lua/app/ui/task/task_main_ui.lua +++ b/lua/app/ui/task/task_main_ui.lua @@ -37,6 +37,27 @@ function TaskMainUI:ctor(params) self.page = params and params.page or PAGE_DAILY self.dailyTaskList = {} self.challengeTaskList = {} + self:initTaskList() + if DataManager.DailyTaskData:getIfCanReset() then + ModuleManager.TaskManager:resetDailyTask() + end +end + +function TaskMainUI:isFullScreen() + return false +end + +function TaskMainUI:getPrefabPath() + return "assets/prefabs/ui/task/task_main_ui.prefab" +end + +function TaskMainUI:initTaskList() + for i = 1, #self.dailyTaskList do + table.remove(self.dailyTaskList) + end + for i = 1, #self.challengeTaskList do + table.remove(self.challengeTaskList) + end local taskAdId = DataManager.DailyTaskData:getDailyTaskAdId() local taskFinalId = DataManager.DailyTaskData:getDailyTaskFinalId() local dailyTasks = DataManager.DailyTaskData:getDailyTasks() @@ -53,14 +74,6 @@ function TaskMainUI:ctor(params) sortTask(self.challengeTaskList) end -function TaskMainUI:isFullScreen() - return false -end - -function TaskMainUI:getPrefabPath() - return "assets/prefabs/ui/task/task_main_ui.prefab" -end - function TaskMainUI:onLoadRootComplete() self.uiMap = self.root:genAllChildren() self.uiMap["task_main_ui.bg.close_btn"]:addClickListener(function() @@ -173,7 +186,25 @@ end function TaskMainUI:bindData() self:bind(DataManager.DailyTaskData, "dailyTaskDirty", function() - self:onRefresh() + if self.delayRefreshSid then + self:unscheduleGlobal(self.delayRefreshSid) + end + self.delayRefreshSid = self:performWithDelayGlobal(function() + self.delayRefreshSid = nil + sortTask(self.dailyTaskList) + sortTask(self.challengeTaskList) + self:onRefresh() + end, 0.1) + end) + self:bind(DataManager.DailyTaskData, "resetFlag", function() + if self.delayRefreshSid then + self:unscheduleGlobal(self.delayRefreshSid) + end + self.delayRefreshSid = self:performWithDelayGlobal(function() + self.delayRefreshSid = nil + self:initTaskList() + self:onRefresh() + end, 0.1) end) end @@ -236,16 +267,25 @@ function TaskMainUI:refreshDailyTasks() if self.dailyTaskScrollRect == nil then self:initDailyTasks() else - self.dailyTaskScrollRect:updateAllCell() + if self.dailyTaskScrollRect:getTotalCount() == #self.dailyTaskList then + self.dailyTaskScrollRect:updateAllCell() + else + self.dailyTaskScrollRect:clearCells() + self.dailyTaskScrollRect:refillCells(#self.dailyTaskList) + end end end function TaskMainUI:refreshChallenge() - Logger.logHighlight("refreshChallenge") if self.challengeTaskScrollRect == nil then self:initChallengeTasks() else - self.challengeTaskScrollRect:updateAllCell() + if self.challengeTaskScrollRect:getTotalCount() == #self.challengeTaskList then + self.challengeTaskScrollRect:updateAllCell() + else + self.challengeTaskScrollRect:clearCells() + self.challengeTaskScrollRect:refillCells(#self.challengeTaskList) + end end end @@ -262,6 +302,9 @@ function TaskMainUI:updateTime() if self.resetTime == time then return end + if self.resetTime and time > self.resetTime and DataManager.DailyTaskData:getIfCanReset() then -- 跨天了 + ModuleManager.TaskManager:resetDailyTask() + end self.resetTime = time self.timeTx:setText(GFunc.getTimeStrWithHMS2(self.resetTime)) end diff --git a/lua/app/userdata/task/daily_task_data.lua b/lua/app/userdata/task/daily_task_data.lua index a8d21264..ed22e6c3 100644 --- a/lua/app/userdata/task/daily_task_data.lua +++ b/lua/app/userdata/task/daily_task_data.lua @@ -6,6 +6,8 @@ local DATA_NAME = "DailyTaskData" function DailyTaskData:ctor() self.data.dailyTaskDirty = false + self.data.resetFlag = false + self.isInReset = false self.taskTypeMap = {} self.dailyTasks = {} end @@ -22,6 +24,7 @@ function DailyTaskData:init(data) table.remove(v) end end + ModuleManager.TaskManager:unRegisterAllModuleTask(DATA_NAME) for k, v in pairs(cfg) do local task = tasks and tasks[k] or GConst.EMPTY_TABLE local taskInfo = taskCfg[task.task_id] @@ -57,6 +60,9 @@ function DailyTaskData:init(data) self.dailyTasks[k] = dailyTaskObj end end + self.initDay = Time:getBeginningOfServerToday() + self.isInReset = false + self.data.resetFlag = not self.data.resetFlag end function DailyTaskData:refreshDailyTask(task) @@ -245,4 +251,16 @@ function DailyTaskData:unregisterTask(taskType) ModuleManager.TaskManager:unRegisterTask(DATA_NAME, taskType) end +function DailyTaskData:getIfCanReset() + return self.initDay ~= Time:getBeginningOfServerToday() +end + +function DailyTaskData:setInReset(isInReset) + self.isInReset = isInReset +end + +function DailyTaskData:getIsInReset() + return self.isInReset +end + return DailyTaskData \ No newline at end of file