PGRData/Script/matrix/xui/xuitrial/XUiPanelTrialTaskList.lua

160 lines
No EOL
5.7 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local XUiPanelTrialTaskList = XClass(nil, "XUiPanelTrialTaskList")
local XUiPanelTrialGrid = require("XUi/XUiTrial/XUiPanelTrialGrid")
function XUiPanelTrialTaskList:Ctor(ui, uiRoot, parent)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.UiRoot = uiRoot
self.Parent = parent
self.animationunlockcb = function() self:HandleRewardTypeTips() end
XTool.InitUiObject(self)
self:InitUiAfterAuto()
end
function XUiPanelTrialTaskList:InitUiAfterAuto()
self.DynamicTable = XDynamicTableNormal.New(self.SViewTaskList.gameObject)
self.DynamicTable:SetProxy(XUiPanelTrialGrid)
self.DynamicTable:SetDelegate(self)
end
-- trialtype,1:前段 other:后段
function XUiPanelTrialTaskList:UpdateTaskList(trialtype)
if self.PreTrialType == trialtype then
for i = 1, self.CurListLen do
local grid = self.DynamicTable:GetGridByIndex(i)
if grid then
local data = self.TaskListData[i]
grid:OnRefresh(data)
end
end
return
end
if trialtype == XDataCenter.TrialManager.TrialTypeCfg.TrialFor then
self.TaskListData = XTrialConfigs.GetForTotalData()
else
self.TaskListData = XTrialConfigs.GetBackEndTotalData()
end
if not self.TaskListData then
return
end
self.PreTrialType = trialtype
self.CurListLen = #self.TaskListData
self.DynamicTable:SetDataSource(self.TaskListData)
self.DynamicTable:ReloadDataASync(1)
end
-- 处理前段刚打完
function XUiPanelTrialTaskList:ForTrialFinish()
if XDataCenter.TrialManager.TrialRewardGetedFinish() and not XDataCenter.TrialManager.TypeRewardByTrialtype(XDataCenter.TrialManager.TrialTypeCfg.TrialFor) then
self.UiRoot:HandleForTrialFinish()
end
end
-- 处理后段段刚打完
function XUiPanelTrialTaskList:BackEndTrialFinish()
if not XDataCenter.TrialManager.BackEndTrialFinishJust() or not XDataCenter.TrialManager.TrialRewardGetedBackEndFinish() then
return
end
self.UiRoot:HandleBackFinishTips()
end
-- [监听动态列表事件]
function XUiPanelTrialTaskList:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid:Init(self.UiRoot, self.Parent)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
local data = self.TaskListData[index]
grid:OnRefresh(data, self.CurOpenFxState)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
if not self.CurOpenFxState then
return
end
if self.CurTipsShow then
return
end
local data = self.TaskListData[index]
local trialid = data.Id
if XDataCenter.TrialManager.TrialLevelFinished(trialid) then
if not XDataCenter.TrialManager.TrialRewardGeted(trialid) then
grid:CloseFx()
self.UiRoot:OpenRewardViewNow(true)
XDataCenter.TrialManager.OnTrialPassRewardRequest(
trialid,
function(rewardGoodsList)
self.CurTipsShow = true
XUiManager.OpenUiObtain(rewardGoodsList, nil, function()
local msg
if data.Type == XDataCenter.TrialManager.TrialTypeCfg.TrialBackEnd then
msg = CS.XTextManager.GetText("TrialLevelFinish", XDataCenter.TrialManager:TrialRewardGetedBackEndCount(), XTrialConfigs.GetBackEndTotalLength())
else
msg = CS.XTextManager.GetText("TrialLevelFinish", XDataCenter.TrialManager:TrialRewardGetedForCount(), XTrialConfigs.GetForTotalLength())
end
grid:SetTrialItemState()
self.UiRoot:OpenRewardViewNow(false)
XUiManager.TipMsg(msg, XUiManager.UiTipType.Success, function()
XLuaUiManager.Close("UiObtain")
self.CurTrialType = data.Type
grid:AfterRewardGetedPro(self.animationunlockcb)
end)
end
)
end
)
else
-- -- 提示玩家已經打完
-- local msg = CS.XTextManager.GetText("TrialFinish")
-- XUiManager.TipMsg(msg)
self.UiRoot:OpenSelectView(data)
end
elseif not XDataCenter.TrialManager.TrialLevelLock(trialid) then
-- 提示玩家没有解锁
local msg = CS.XTextManager.GetText("TrialUnLock")
XUiManager.TipMsg(msg)
else
self.UiRoot:OpenSelectView(data)
end
end
end
-- 动画播结束后再处理大奖的弹出tips
function XUiPanelTrialTaskList:HandleRewardTypeTips()
self.CurTipsShow = false
if not self.CurTrialType then
return
end
if self.CurTrialType == XDataCenter.TrialManager.TrialTypeCfg.TrialFor then
self:ForTrialFinish()
else
self:BackEndTrialFinish()
end
end
-- 重新设置list的item的状态.
function XUiPanelTrialTaskList:SetListItemFx()
for i = 1, self.CurListLen do
local grid = self.DynamicTable:GetGridByIndex(i)
if grid then
grid:SetTrialItemRewardFx()
end
end
end
-- 关闭list的item的特效防止特效透ui。
function XUiPanelTrialTaskList:ClostListItemFx()
for i = 1, self.CurListLen do
local grid = self.DynamicTable:GetGridByIndex(i)
if grid then
grid:CloseFx()
end
end
end
function XUiPanelTrialTaskList:OpenFxFinish(state)
self.CurOpenFxState = state
end
function XUiPanelTrialTaskList:OnSViewTaskListClick()
end
return XUiPanelTrialTaskList