c1_lua/lua/app/ui/task/task_main_ui.lua
2023-05-11 10:09:29 +08:00

256 lines
7.9 KiB
Lua

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:getDailyTaskList()
for k, v in ipairs(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()
self:initDailyTasks()
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"]
self:initChallengeTasks()
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:refreshDaily()
end)
end
function TaskMainUI:onRefresh()
self:switchPage(self.page)
end
function TaskMainUI:switchPage(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()
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:refreshChallenge()
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