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

178 lines
6.8 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 XUiCharacterQualitySystemV2P6 = XLuaUiManager.Register(XLuaUi, "UiCharacterQualitySystemV2P6")
local PanelName =
{
XPanelQualityWholeV2P6 = "XPanelQualityWholeV2P6", -- QualitySystem的主界面
XPanelQualitySingleV2P6 = "XPanelQualitySingleV2P6", -- 二级进化球界面
XPanelQualityUpgradeDetailV2P6 = "XPanelQualityUpgradeDetailV2P6", -- 进化升级详情弹窗界面
}
function XUiCharacterQualitySystemV2P6:OnAwake()
---@type XCharacterAgency
local ag = XMVCA:GetAgency(ModuleId.XCharacter)
self.CharacterAgency = ag
self.OpenChildStack = XStack.New()
self.IsEvoPerform = nil --演出锁
-- 初始化3d动态列表
self.ParentUi.PanelModel:InitDynamicTable3D(self)
self:InitPanel()
end
function XUiCharacterQualitySystemV2P6:InitPanel()
self.PanelIndex =
{
{Name = PanelName.XPanelQualityWholeV2P6, ParentTrans = "PanelQualityWhole", AssetPath = CS.XGame.ClientConfig:GetString("PanelQualityWholeV2P6")},
{Name = PanelName.XPanelQualitySingleV2P6, ParentTrans = "PanelQualitySingle", AssetPath = CS.XGame.ClientConfig:GetString("PanelQualitySingleV2P6"),
Args = {function (afterEvoQuality)
self:OnCharEvolution(afterEvoQuality)
end}
},
{Name = PanelName.XPanelQualityUpgradeDetailV2P6, ParentTrans = "PanelQualityUpgradeDetail", AssetPath = CS.XGame.ClientConfig:GetString("PanelQualityUpgradeDetailV2P6"),
Args = {function (nextQuality)
self:OnUpgradeCloseCb(nextQuality)
end}
},
}
for k, panelInfo in pairs(self.PanelIndex) do
local proxy = require("XUi/XUiCharacterV2P6/PanelChildUi/"..panelInfo.Name)
local path = panelInfo.AssetPath
local ui = self[panelInfo.ParentTrans]:LoadPrefab(path)
ui.gameObject:SetActiveEx(false)
local args = panelInfo.Args or {}
self[panelInfo.Name] = proxy.New(ui, self, table.unpack(args))
end
-- 点击特效动态列表的回调
self.ParentUi.PanelModel:SetDynamicTableClickCb(function (seleQuality)
self:OnQualityBallSelected(seleQuality)
end)
end
function XUiCharacterQualitySystemV2P6:OnStart()
self:OpenChildPanel(PanelName.XPanelQualityWholeV2P6)
end
function XUiCharacterQualitySystemV2P6:OnEnable()
-- 进化界面更改资源栏为对应角色碎片
local character = self.ParentUi.CurCharacter
local fragmentItemId = XCharacterConfigs.GetCharacterItemId(character.Id)
self.ParentUi:SetPanelAsset(XDataCenter.ItemManager.ItemId.FreeGem, fragmentItemId, XDataCenter.ItemManager.ItemId.Coin)
self.ParentUi.PanelModel:SetCameraQualityActive(true)
end
-- 不是真的子ui是panel
function XUiCharacterQualitySystemV2P6:OpenChildPanel(targetName)
for k, name in pairs(PanelName) do
if name == targetName then
self[name]:Open()
else
self[name]:Close()
end
end
local regisBackFun = function ()
if self.OpenChildStack:Count() >= 2 then
self.ParentUi:SetBackTrigger(function ()
self:BackFun()
end)
else
self.ParentUi:SetBackTrigger(nil)
end
end
if self.OpenChildStack:Peek() == targetName then
regisBackFun()
return
end
self.OpenChildStack:Push(targetName)
regisBackFun()
end
-- 该界面下所有的子界面想返回到上一个界面都要通过OpenLastChildUi打开不能通过新开OpenChildPanel打开
function XUiCharacterQualitySystemV2P6:OpenLastChildUi()
if not self.OpenChildStack or self.OpenChildStack:Count() < 2 then
return
end
local curUiname = self.OpenChildStack:Peek()
self.OpenChildStack:Pop()
local targetUiName = self.OpenChildStack:Peek()
-- 特殊处理(single回whole)
if targetUiName == PanelName.XPanelQualityWholeV2P6 and curUiname == PanelName.XPanelQualitySingleV2P6 then
self[curUiname]:Close() -- 提前关闭single
CS.XUiManager.Instance:SetMask(true)
self.ParentUi.PanelModel:PlayCharModelAnime("SingleToQuality", function ()
self:OpenChildPanel(targetUiName)
CS.XUiManager.Instance:SetMask(false)
end)
return
end
self:OpenChildPanel(targetUiName)
end
-- 回到qualitySystem的主界面whole界面
function XUiCharacterQualitySystemV2P6:BackToQualityHome()
self.ParentUi:SetBackTrigger(nil)
self.OpenChildStack:Clear()
self:OpenChildPanel(PanelName.XPanelQualityWholeV2P6)
end
-- 在该界面下点击返回按钮使用的方法
function XUiCharacterQualitySystemV2P6:BackFun()
-- 子界面关闭时,打开上一次打开的子界面
if self.OpenChildStack and self.OpenChildStack:Count() >= 2 then
self:OpenLastChildUi()
end
end
-- 单品质展示界面 返回时应该回到所有品质球展示界面
function XUiCharacterQualitySystemV2P6:OnQualityBallSelected(selectQuality)
self.ParentUi:SetCamera(XEnumConst.CHARACTER.CameraV2P6.QualitySingle)
self.ParentUi.PanelModel:PlayCharModelAnime("QualityToSingle") -- 移动镜头
self.ParentUi.PanelModel:PlayCharModelAnime("PanelBigBallEnable") -- 刷新大球
self:OpenChildPanel(PanelName.XPanelQualitySingleV2P6)
self[PanelName.XPanelQualitySingleV2P6]:Refresh(selectQuality)
end
-- 升品质提示详情界面 返回应该回到单品质展示界面
function XUiCharacterQualitySystemV2P6:OnCharEvolution(afterEvoQuality)
self.ParentUi:SetCamera(XEnumConst.CHARACTER.CameraV2P6.QualityUpgradeDetail)
self:OpenChildPanel(PanelName.XPanelQualityUpgradeDetailV2P6)
self[PanelName.XPanelQualityUpgradeDetailV2P6]:Refresh(afterEvoQuality)
-- 打开升级详情界面时打开下一个大球
self.ParentUi.PanelModel:SetPanelEffectBallBigActive(true)
self.ParentUi.PanelModel:RefreshBigBallEffect(afterEvoQuality, nil, true)
self.ParentUi.PanelModel:OpenBigEffectBall(afterEvoQuality)
end
-- 关闭详情界面 要直接返回到QualitySystem的主界面
function XUiCharacterQualitySystemV2P6:OnUpgradeCloseCb(nextQuality)
self.IsEvoPerform = true -- 加上演出锁、禁止玩家操作、禁止其他地方操作动态列表
CS.XUiManager.Instance:SetMask(true)
self:BackToQualityHome()
if nextQuality > XEnumConst.CHARACTER.MAX_QUALITY then
return
end
-- 关闭大球展示
self.ParentUi.PanelModel:SetPanelEffectBallBigActive(false)
self.ParentUi.PanelModel:PlayCharModelAnime("UpgradeDetailToQuality")
self.ParentUi.PanelModel:RefreshDynamicTable3DByEvoPerform(nextQuality, function ()
self.IsEvoPerform = false
CS.XUiManager.Instance:SetMask(false)
end)
end
function XUiCharacterQualitySystemV2P6:OnDisable()
self.IsEvoPerform = false
self.ParentUi.PanelModel:SetCameraQualityActive(false)
end
return XUiCharacterQualitySystemV2P6