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