local TaskMainUI = class("TaskMainUI", BaseUI) local PAGE_DAILY = 1 local PAGE_CHALLENGE = 2 local TASK_TYPE_DAILY = 1 local DAILY_TASK_CELL = "app/ui/task/cell/daily_task_cell" local function sortTask(taskList) table.sort(taskList, function(a, b) if a.claimed == b.claimed then if a.claimed then return a.id < b.id else local completeA = a.progress >= a.needProgress local completeB = b.progress >= b.needProgress if completeA == completeB then if completeA then return a.id < b.id else -- 没有完成的优先显示战令解锁 if a.bountyLock == b.bountyLock then return a.id < b.id else return a.bountyLock end end else return completeA end end else return b.claimed end end) end function TaskMainUI:ctor(params) self.page = params and params.page or PAGE_DAILY self.dailyTaskList = {} self.challengeTaskList = {} local taskAdId = DataManager.TaskData:getDailyTaskAdId() local taskFinalId = DataManager.TaskData:getDailyTaskFinalId() 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) else table.insert(self.challengeTaskList, v) end end end sortTask(self.dailyTaskList) 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() self:closeUI() end) self:initTitle() self:initPage() self:initCountDown() self:bindData() self:scheduleGlobal(function() self:updateTime() end) end function TaskMainUI:initTitle() self.titleTx = self.uiMap["task_main_ui.bg.title"] self.titleTx:setText("临时文本:任务") end function TaskMainUI:initPage() self.menuOne = self.uiMap["task_main_ui.bg.menu_1"] self.menuOne:addClickListener(function() self:switchPage(PAGE_DAILY) end) self.menuOneOn = self.uiMap["task_main_ui.bg.menu_1.on"] self.menuOneOff = self.uiMap["task_main_ui.bg.menu_1.off"] local menuOneOnTx = self.uiMap["task_main_ui.bg.menu_1.on.text"] menuOneOnTx:setText("临时文本:日常") local menuOneOffTx = self.uiMap["task_main_ui.bg.menu_1.off.text"] menuOneOffTx:setText("临时文本:日常") self.menuTwo = self.uiMap["task_main_ui.bg.menu_2"] self.menuTwo:addClickListener(function() self:switchPage(PAGE_CHALLENGE) end) self.menuTwoOn = self.uiMap["task_main_ui.bg.menu_2.on"] self.menuTwoOff = self.uiMap["task_main_ui.bg.menu_2.off"] local menuTwoOnTx = self.uiMap["task_main_ui.bg.menu_2.on.text"] menuTwoOnTx:setText("临时文本:挑战") local menuTwoOffTx = self.uiMap["task_main_ui.bg.menu_2.off.text"] menuTwoOffTx:setText("临时文本:挑战") self:initDaily() self:initChallenge() end function TaskMainUI:initDaily() self.dailyNode = self.uiMap["task_main_ui.bg.daily"] self:initDailyTaskAdCell() self:initDailyTaskFinalCell() end function TaskMainUI:initDailyTaskAdCell() self.dailyTaskAdCellNameTx = self.uiMap["task_main_ui.bg.daily.task_ad_cell.name_tx"] self.dailyTaskAdCellProgress = self.uiMap["task_main_ui.bg.daily.task_ad_cell.progress"] self.dailyTaskAdCellProgressTx = self.uiMap["task_main_ui.bg.daily.task_ad_cell.progress_tx"] self.dailyTaskAdCellBox = self.uiMap["task_main_ui.bg.daily.task_ad_cell.box"] self.dailyTaskAdCellBox:addClickListener(function() end) self.dailyTaskAdCellBoxInfo = self.uiMap["task_main_ui.bg.daily.task_ad_cell.box.info"] end function TaskMainUI:initDailyTaskFinalCell() self.dailyTaskFinalCellNameTx = self.uiMap["task_main_ui.bg.daily.task_final_cell.name_tx"] self.dailyTaskFinalCellProgress = self.uiMap["task_main_ui.bg.daily.task_final_cell.progress"] self.dailyTaskFinalCellProgressTx = self.uiMap["task_main_ui.bg.daily.task_final_cell.progress_tx"] self.dailyTaskFinalCellBox = self.uiMap["task_main_ui.bg.daily.task_final_cell.box"] self.dailyTaskFinalCellBox:addClickListener(function() end) self.dailyTaskFinalCellBoxInfo = self.uiMap["task_main_ui.bg.daily.task_final_cell.box.info"] end function TaskMainUI:initDailyTasks() self.dailyTaskScrollRect = self.uiMap["task_main_ui.bg.daily.scrollrect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) self.dailyTaskScrollRect:addInitCallback(function() return DAILY_TASK_CELL end) self.dailyTaskScrollRect:addRefreshCallback(function(index, cell) cell:refresh(self.dailyTaskList[index]) end) self.dailyTaskScrollRect:clearCells() self.dailyTaskScrollRect:refillCells(#self.dailyTaskList) end function TaskMainUI:initChallenge() self.challengeNode = self.uiMap["task_main_ui.bg.challenge"] end function TaskMainUI:initChallengeTasks() self.challengeTaskScrollRect = self.uiMap["task_main_ui.bg.challenge.scrollrect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) self.challengeTaskScrollRect:addInitCallback(function() return DAILY_TASK_CELL end) self.challengeTaskScrollRect:addRefreshCallback(function(index, cell) cell:refresh(self.challengeTaskList[index]) end) self.challengeTaskScrollRect:clearCells() self.challengeTaskScrollRect:refillCells(#self.challengeTaskList) end function TaskMainUI:initCountDown() local helpBtn = self.uiMap["task_main_ui.bg.time_btn"] helpBtn:addClickListener(function() self:showHelp() end) self.timeTx = self.uiMap["task_main_ui.bg.time_tx"] end function TaskMainUI:bindData() self:bind(DataManager.TaskData, "dailyTaskDirty", function() self:onRefresh() end) end function TaskMainUI:onRefresh() self:switchPage(self.page) end function TaskMainUI:switchPage(page) self.page = page if page == PAGE_DAILY then self.menuOneOn:setVisible(true) self.menuOneOff:setVisible(false) self.menuTwoOn:setVisible(false) self.menuTwoOff:setVisible(true) self.dailyNode:setAnchoredPositionX(0) self.challengeNode:setAnchoredPositionX(GConst.NOT_VISIBLE_POS) self:refreshDaily() else self.menuOneOn:setVisible(false) self.menuOneOff:setVisible(true) self.menuTwoOn:setVisible(true) self.menuTwoOff:setVisible(false) self.dailyNode:setAnchoredPositionX(GConst.NOT_VISIBLE_POS) self.challengeNode:setAnchoredPositionX(0) self:refreshChallenge() end end function TaskMainUI:refreshDaily() self:refreshDailyTaskAdCell() self:refreshDailyTaskFinalCell() self:refreshDailyTasks() end function TaskMainUI:refreshDailyTaskAdCell() local taskId = DataManager.TaskData:getDailyTaskAdId() local taskDesc = DataManager.TaskData:getDailyTaskDesc(taskId) self.dailyTaskAdCellNameTx:setText(taskDesc) local count, needCount = DataManager.TaskData:getDailyTaskProgress(taskId) if count > needCount then count = needCount end self.dailyTaskAdCellProgressTx:setText(count .. "/" .. needCount) self.dailyTaskAdCellProgress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = count/needCount end function TaskMainUI:refreshDailyTaskFinalCell() local taskId = DataManager.TaskData:getDailyTaskFinalId() local taskDesc = DataManager.TaskData:getDailyTaskDesc(taskId) self.dailyTaskFinalCellNameTx:setText(taskDesc) local count, needCount = DataManager.TaskData:getDailyTaskProgress(taskId) if count > needCount then count = needCount end self.dailyTaskFinalCellProgressTx:setText(count .. "/" .. needCount) self.dailyTaskFinalCellProgress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = count/needCount end 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() if self.page == PAGE_DAILY then else end end function TaskMainUI:updateTime() local time = DataManager.TaskData:getDailyResetTime() if self.resetTime == time then return end self.resetTime = time self.timeTx:setText(GFunc.getTimeStrWithHMS2(self.resetTime)) end return TaskMainUI