PGRData/Script/matrix/xui/xuiregression3rd/xuipanel/XUiPanelRegressionTask.lua
2024-09-01 22:49:41 +02:00

129 lines
No EOL
4.3 KiB
Lua

local XUiPanelRegressionBase = require("XUi/XUiRegression3rd/XUiPanel/XUiPanelRegressionBase")
local XUiGridRegressionTask = require("XUi/XUiRegression3rd/XUiGrid/XUiGridRegressionTask")
local XUiPanelRegressionTask = XClass(XUiPanelRegressionBase, "XUiPanelRegressionTask")
--- 页签按钮类型
---@field Convention 常规任务
---@field Activity 活动任务
local TabType = {
Convention = 1,
Activity = 2
}
--region ------------------重写父类方法 start-------------------
function XUiPanelRegressionTask:Show()
self.GameObject:SetActiveEx(true)
self:RefreshView()
end
function XUiPanelRegressionTask:Hide()
self.GameObject:SetActiveEx(false)
end
function XUiPanelRegressionTask:InitUi()
local tabBtn = {
self.BtnDaily,
self.BtnActivity
}
self.PanelBtnGroup:Init(tabBtn, function(index) self:OnSelectTab(index) end)
self.DynamicTable = XDynamicTableNormal.New(self.PanelTaskList)
self.DynamicTable:SetProxy(XUiGridRegressionTask, self.RootUi)
self.DynamicTable:SetDelegate(self)
self.GridTask.gameObject:SetActiveEx(false)
self.TaskVideModel = self.ViewModel:GetProperty("_TaskVideModel")
XRedPointManager.AddRedPointEvent(self.BtnReceiveAll, self.OnCheckBtnRedPoint, self, { XRedPointConditions.Types.CONDITION_REGRESSION3_TASK })
end
function XUiPanelRegressionTask:InitCb()
self.BtnReceiveAll.CallBack = function()
self:OnBtnReceiveAllClick()
end
end
function XUiPanelRegressionTask:UpdateTime()
self.TxtTime.text = self.ViewModel:GetLeftTimeDesc()
end
--endregion------------------重写父类方法 finish------------------
function XUiPanelRegressionTask:OnBtnReceiveAllClick()
local viewModel = self.TaskVideModel
local taskIds = viewModel:GetAchievedTaskList()
if XTool.IsTableEmpty(taskIds) then
XUiManager.TipMsg(XRegression3rdConfigs.GetClientConfigValue("NoRewardAvailableTips", 1))
return
end
XDataCenter.TaskManager.FinishMultiTaskRequest(taskIds, function(rewardGoodsList)
XUiManager.OpenUiObtain(rewardGoodsList)
viewModel:UpdateFinishCount()
XEventManager.DispatchEvent(XEventId.EVENT_REGRESSION3_TASK_STATUS_CHANGE)
end)
end
function XUiPanelRegressionTask:OnSelectTab(index)
if self.TabIndex == index then
return
end
self.AnimSwitch.transform:PlayTimelineAnimation()
self.TabIndex = index
self:SetupDynamicTable()
end
function XUiPanelRegressionTask:SetupDynamicTable()
local taskList
if self.TabIndex == TabType.Convention then
taskList = self.TaskVideModel:GetConventionTaskList()
elseif self.TabIndex == TabType.Activity then
taskList = self.TaskVideModel:GetActivityTaskList()
end
self.TaskList = taskList
local empty = XTool.IsTableEmpty(self.TaskList)
self.PanelNoneDailyTask.gameObject:SetActiveEx(empty)
self.PanelTaskDailyList.gameObject:SetActiveEx(not empty)
if empty then
return
end
self.DynamicTable:SetDataSource(self.TaskList)
self.DynamicTable:ReloadDataSync()
end
function XUiPanelRegressionTask:OnDynamicTableEvent(evt, idx, grid)
if evt == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:RefreshTask(self.TaskList[idx])
end
end
function XUiPanelRegressionTask:RefreshView()
if not XDataCenter.Regression3rdManager.CheckTaskLocalRedPointData() then
XDataCenter.Regression3rdManager.MarkTaskLocalRedPointData()
end
local viewModel = self.TaskVideModel
self.RootUi:BindViewModelPropertyToObj(viewModel, function()
if XTool.IsNumberValid(self.TabIndex) then
self:SetupDynamicTable()
else
self.PanelBtnGroup:SelectIndex(TabType.Convention)
end
end, "_TaskFinishCount")
self:UpdateTime()
end
function XUiPanelRegressionTask:OnCheckBtnRedPoint()
local taskConventionIds = self.TaskVideModel:GetAchievedConventionTaskList()
local taskActivityIds = self.TaskVideModel:GetAchievedActivityTaskList()
local emptyConvention = XTool.IsTableEmpty(taskConventionIds)
local emptyActivity = XTool.IsTableEmpty(taskActivityIds)
self.BtnDaily:ShowReddot(not emptyConvention)
self.BtnActivity:ShowReddot(not emptyActivity)
self.BtnReceiveAll:ShowReddot(not emptyConvention or not emptyActivity)
end
return XUiPanelRegressionTask