From b5b1ad00e72f691033a8d03b7544c8766f8d71e3 Mon Sep 17 00:00:00 2001 From: chenxi Date: Fri, 12 May 2023 11:23:06 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/ui/main_city/main_city_ui.lua | 10 +++++ lua/app/userdata/task/daily_task_data.lua | 45 +++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/lua/app/ui/main_city/main_city_ui.lua b/lua/app/ui/main_city/main_city_ui.lua index 74415e70..0fc644e8 100644 --- a/lua/app/ui/main_city/main_city_ui.lua +++ b/lua/app/ui/main_city/main_city_ui.lua @@ -146,6 +146,10 @@ function MainCityUI:_bind() end end end) + + self:bind(DataManager.DailyTaskData, "redPointFlag", function() + self:refreshTask() + end) end function MainCityUI:initBottomUI() @@ -459,6 +463,12 @@ function MainCityUI:refreshTask() return end self.taskBtn:setVisible(true) + local showRedPoint = DataManager.DailyTaskData:getIsShowRedPoint() + if showRedPoint then + self.taskBtn:addRedPoint(42, 42, 0.8) + else + self.taskBtn:removeRedPoint() + end end function MainCityUI:switchComp(index) diff --git a/lua/app/userdata/task/daily_task_data.lua b/lua/app/userdata/task/daily_task_data.lua index bfac4f77..40409639 100644 --- a/lua/app/userdata/task/daily_task_data.lua +++ b/lua/app/userdata/task/daily_task_data.lua @@ -7,6 +7,8 @@ local DATA_NAME = "DailyTaskData" function DailyTaskData:ctor() self.data.dailyTaskDirty = false self.data.resetFlag = false + self.data.redPointFlag = false + self.redPoint = 0 self.isInReset = false self.taskTypeMap = {} self.dailyTasks = {} @@ -24,6 +26,7 @@ function DailyTaskData:init(data) table.remove(v) end end + local redPoint = 0 ModuleManager.TaskManager:unRegisterAllModuleTask(DATA_NAME) for k, v in pairs(cfg) do local task = tasks and tasks[k] or GConst.EMPTY_TABLE @@ -39,6 +42,12 @@ function DailyTaskData:init(data) type = v.type, reset = v.reset } + if not dailyTaskObj.claimed and dailyTaskObj.progress >= dailyTaskObj.needProgress then + dailyTaskObj.redPoint = true + redPoint = redPoint + 1 + else + dailyTaskObj.redPoint = false + end if v.bounty then if DataManager.BountyData:getBought() then dailyTaskObj.lock = false @@ -63,6 +72,14 @@ function DailyTaskData:init(data) self.initDay = Time:getBeginningOfServerToday() self.isInReset = false self.data.resetFlag = not self.data.resetFlag + if self.redPoint ~= redPoint then + if self.redPoint > 0 and redPoint > 0 then + self.redPoint = redPoint + else + self.redPoint = redPoint + self.data.redPointFlag = not self.data.redPointFlag + end + end end function DailyTaskData:refreshDailyTask(task) @@ -85,6 +102,10 @@ function DailyTaskData:refreshDailyTask(task) dailyTaskObj.needProgress = taskInfo.number dailyTaskObj.refresh = task.refresh dailyTaskObj.claimed = task.claimed + 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] @@ -110,6 +131,21 @@ function DailyTaskData:refreshDailyTask(task) end end self:markDailyTaskDirty() + + if dailyTaskObj.redPoint ~= redPoint then + dailyTaskObj.redPoint = redPoint + if redPoint then + self.redPoint = self.redPoint + 1 + if self.redPoint == 1 then + self.data.redPointFlag = not self.data.redPointFlag + end + else + self.redPoint = self.redPoint - 1 + if self.redPoint == 0 then + self.data.redPointFlag = not self.data.redPointFlag + end + end + end end function DailyTaskData:getIsOpen() @@ -249,6 +285,11 @@ function DailyTaskData:addTaskProgress(task, taskType, count) ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.COMPLETED_DALY_TASK) end BIReport:postDailyTaskFinish(BIReport.TASK_TYPE.DAILY, task.id, task.taskId, task.refresh) + task.redPoint = true + self.redPoint = self.redPoint + 1 + if self.redPoint == 1 then + self.data.redPointFlag = not self.data.redPointFlag + end end self:markDailyTaskDirty() end @@ -280,4 +321,8 @@ function DailyTaskData:getIsInReset() return self.isInReset end +function DailyTaskData:getIsShowRedPoint() + return self.redPoint > 0 +end + return DailyTaskData \ No newline at end of file