TH1/Unity/Assets/Scripts/TH1_UI/Controller/Base/ViewHierarchyProperty.cs
2025-08-20 02:24:48 +08:00

75 lines
1.9 KiB
C#

using System;
using TH1_UI.Controller.Base;
//
public enum ViewLevelValue
{
LEVEL_1,
LEVEL_2, //一级界面互斥
LEVEL_3, //二级界面互斥
LEVEL_4,
}
//
public class ViewHierarchyProperty
{
public ViewLevelValue ViewLevel = ViewLevelValue.LEVEL_1;
//
public void Start(IViewControllerInterface controller)
{
if (_currLinkNode != null)
{
_currLinkNode.Detach();
}
_currLinkNode = new ViDoubleLinkNode2<IViewControllerInterface>();
_currLinkNode.Data = controller;
}
//
public void Open()
{
if (_currLinkNode != null)
{
_currLinkNode.Detach();
//
IViewControllerInterface view = _currLinkNode.Data;
switch (ViewLevel)
{
case ViewLevelValue.LEVEL_1:
break;
case ViewLevelValue.LEVEL_2:
case ViewLevelValue.LEVEL_3:
case ViewLevelValue.LEVEL_4:
_MutualWindow(view);
break;
}
//
_viewOpenList.PushBack(_currLinkNode);
}
}
//
void _MutualWindow(IViewControllerInterface viewOpen)
{
ViDoubleLinkNode2<IViewControllerInterface> iter = _viewOpenList.GetHead();
while (!_viewOpenList.IsEnd(iter))
{
IViewControllerInterface iterView = iter.Data;
ViDoubleLink2<IViewControllerInterface>.Next(ref iter);
//
if (iterView.ViewLevel == viewOpen.ViewLevel)
{
iterView.Close();
}
}
}
//
public void Close()
{
if (_currLinkNode != null)
{
_currLinkNode.Detach();
}
}
//
ViDoubleLinkNode2<IViewControllerInterface> _currLinkNode = null;
static ViDoubleLink2<IViewControllerInterface> _viewOpenList = new ViDoubleLink2<IViewControllerInterface>();
}