160 lines
No EOL
5.7 KiB
Lua
160 lines
No EOL
5.7 KiB
Lua
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 |