2025-06-04 05:02:57 +08:00

107 lines
2.2 KiB
Plaintext

local BaseCell = autoImport("BaseCell");
MenuCatCell = class("MenuCatCell", BaseCell);
function MenuCatCell:Init()
self:InitUI();
end
function MenuCatCell:InitUI()
self.container = self:FindGO("EffectContainer");
end
function MenuCatCell:SetData(data)
self.data = data;
local config = data.data;
if(config)then
if(self.effect)then
self.effect:Destroy();
end
local effectName = config.event.effect;
if(effectName)then
self:PlayEffect(effectName);
else
self:PassEvent(SystemUnLockEvent.ShowNextEvent, self.data)
end
else
self:PassEvent(SystemUnLockEvent.ShowNextEvent, self.data)
end
end
function MenuCatCell:RemoveLeanTween()
if(self.lt)then
self.lt:cancel();
end
self.lt = nil;
end
function MenuCatCell:PlayEffect(effectName)
local path = ResourcePathHelper.UIEffect(effectName)
self.effect = Asset_Effect.PlayOneShotOn(
path,
self.container.transform,
MenuCatCell._HandleMidEffectShow,
self);
if(self.effect)then
self:sendNotification(MainViewEvent.ShowOrHide, false);
self.effect:RegisterWeakObserver(self);
else
self:PassEvent(SystemUnLockEvent.ShowNextEvent, self.data)
end
end
function MenuCatCell:ObserverDestroyed(obj)
if(obj == self.effect)then
self.effect = nil;
self:PassEvent(SystemUnLockEvent.ShowNextEvent, self.data)
end
end
function MenuCatCell._HandleMidEffectShow(effectHandle, owner)
if(effectHandle and owner)then
owner:HandleMidEffectShow(effectHandle);
end
end
function MenuCatCell:HandleMidEffectShow(effectHandle)
local effectGO = effectHandle.gameObject;
local panels = UIUtil.GetAllComponentsInChildren(effectGO, UIPanel, true);
if(#panels == 0)then
return;
end
local upPanel = GameObjectUtil.Instance:FindCompInParents(effectGO, UIPanel);
local minDepth = nil;
for i=1,#panels do
if(minDepth == nil)then
minDepth = panels[i].depth;
else
minDepth = math.min(panels[i].depth, minDepth);
end
end
local startDepth = 1;
for i=1,#panels do
panels[i].depth = panels[i].depth + startDepth + upPanel.depth - minDepth;
end
end
function MenuCatCell:Show()
MenuCatCell.super.Show(self);
end
function MenuCatCell:Hide()
MenuCatCell.super.Hide(self);
if(self.effect)then
self.effect:Destroy();
end
self:sendNotification(MainViewEvent.ShowOrHide, true);
end