107 lines
2.2 KiB
Plaintext
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
|
|
|
|
|
|
|