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

160 lines
5.7 KiB
Lua
Raw Normal View History

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