PGRData/Script/matrix/xui/xuirift/XUiRiftSettlePlugin.lua
2024-09-01 22:49:41 +02:00

108 lines
No EOL
3.9 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 XUiGridRiftPluginDrop = require("XUi/XUiRift/Grid/XUiGridRiftPluginDrop")
--大秘境关卡战斗结算界面
local XUiRiftSettlePlugin = XLuaUiManager.Register(XLuaUi, "UiRiftSettlePlugin")
function XUiRiftSettlePlugin:OnAwake()
self:InitButton()
self:InitDynamicTable()
end
function XUiRiftSettlePlugin:InitButton()
self:RegisterClickEvent(self.BtnQuit, self.OnBtnQuitClick)
self:RegisterClickEvent(self.BtnQuitLuck, self.OnBtnQuitClick)
self:RegisterClickEvent(self.BtnNext, self.OnBtnNextClick)
self:RegisterClickEvent(self.BtnSettle, self.OnBtnSettleClick)
end
function XUiRiftSettlePlugin:OnStart(settleData, nextStageGroup, nextStageIndex)
self.SettleData = settleData
self.RiftSettleResult = settleData.RiftSettleResult
self.NextStageGroup = nextStageGroup
self.NextStageIndex = nextStageIndex
end
function XUiRiftSettlePlugin:OnEnable()
-- 判断要不要进行下一关,显示对应按钮
local xStageGroup = XDataCenter.RiftManager.GetLastFightXStage():GetParent()
if xStageGroup:GetType() == XRiftConfig.StageGroupType.Luck then
self.BtnQuit.gameObject:SetActiveEx(false)
self.BtnQuitLuck.gameObject:SetActiveEx(true)
self.BtnNext.gameObject:SetActiveEx(false)
self.BtnSettle.gameObject:SetActiveEx(false)
elseif not self.NextStageGroup then
self.BtnQuit.gameObject:SetActiveEx(false)
self.BtnNext.gameObject:SetActiveEx(false)
self.BtnSettle.gameObject:SetActiveEx(true)
end
-- 刷新插件列表
self:RefreshDynamicTable()
end
-- 进行下一关战斗
function XUiRiftSettlePlugin:OnBtnNextClick()
CS.XFight.ExitForClient(true)
-- 直接再进入战斗关闭界面会在退出战斗前通过remove移除
XDataCenter.RiftManager.SetCurrSelectRiftStage(self.NextStageGroup)
local team = nil
if self.NextStageGroup:GetType() == XRiftConfig.StageGroupType.Multi then
team = XDataCenter.RiftManager.GetMultiTeamData()[self.NextStageIndex]
else
team = XDataCenter.RiftManager.GetSingleTeamData()
end
XDataCenter.RiftManager.EnterFight(team)
end
function XUiRiftSettlePlugin:OnBtnSettleClick()
-- 层结算不通过直接打开ui来跳转通过发送trigger在进入层选择界面是自动检测打开
local layerId = XDataCenter.RiftManager.GetLastFightXStage():GetParent():GetParent():GetId()
XLuaUiManager.PopThenOpen("UiRiftSettleWin", layerId, self.SettleData.RiftSettleResult)
end
function XUiRiftSettlePlugin:OnBtnQuitClick()
self:Close()
end
function XUiRiftSettlePlugin:InitDynamicTable()
self.GridRiftPluginTips.gameObject:SetActiveEx(false)
self.DynamicTable = XDynamicTableNormal.New(self.PanelPluginList)
self.DynamicTable:SetProxy(XUiGridRiftPluginDrop)
self.DynamicTable:SetDelegate(self)
end
local DropPluginSortFunc = function(dropDataA, dropDataB)
local isDecomposeA = dropDataA.DecomposeCount > 0
local isDecomposeB = dropDataB.DecomposeCount > 0
if isDecomposeA ~= isDecomposeB then
return not isDecomposeA
end
local pluginA = XDataCenter.RiftManager.GetPlugin(dropDataA.PluginId)
local pluginB = XDataCenter.RiftManager.GetPlugin(dropDataB.PluginId)
if pluginA:GetStar() ~= pluginB:GetStar() then
return pluginA:GetStar() > pluginB:GetStar()
end
return pluginA:GetId() > pluginB:GetId()
end
function XUiRiftSettlePlugin:RefreshDynamicTable()
self.DataList = self.RiftSettleResult.PluginDropRecords
table.sort(self.DataList, DropPluginSortFunc)
self.DynamicTable:SetDataSource(self.DataList)
self.DynamicTable:ReloadDataSync(1)
end
function XUiRiftSettlePlugin:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
local dropData = self.DataList[index]
grid:Refresh(dropData)
end
end
function XUiRiftSettlePlugin:OnDestroy()
CS.XFight.ExitForClient(true)
end
return XUiRiftSettlePlugin