Files
butchers-games-test/Assets/Scripts/Toolkit/OHM/UnityToolkit/UI/UIMenusController.cs
T
Boris Nikolaev 5f1e94b653 add project files
2026-08-14 01:58:31 +03:00

92 lines
1.5 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace OHM.UnityToolkit.UI
{
public class UIMenusController : MonoBehaviour
{
public UIMenuBase defaultMenu;
private List<UIMenuBase> _popupStack = new List<UIMenuBase>();
public UIMenuBase[] AllSubMenus { get; set; }
private void Awake()
{
InitSubMenus();
if (defaultMenu != null)
{
HideAllExcept(defaultMenu);
}
else
{
HideAll();
}
}
private void InitSubMenus()
{
AllSubMenus = GetComponentsInChildren<UIMenuBase>(true);
for (int i = 0; i < AllSubMenus.Length; i++)
{
InitSubMenu(AllSubMenus[i]);
}
}
protected virtual void InitSubMenu(UIMenuBase menu)
{
menu.SetMenuController(this);
}
public void HideAll()
{
for (int i = 0; i < AllSubMenus.Length; i++)
{
AllSubMenus[i].Hide();
}
}
public void HideAllExcept(UIMenuBase except)
{
for (int i = 0; i < AllSubMenus.Length; i++)
{
UIMenuBase menu = AllSubMenus[i];
if (menu != except)
{
menu.Hide();
}
}
}
public void ShowDebug(bool state)
{
}
public void PushPopup(UIMenuBase popup)
{
_popupStack.Add(popup);
}
public void PopPopup(UIMenuBase popup)
{
_popupStack.RemoveAll((UIMenuBase p) => p == popup);
}
public void Update()
{
if (!Input.GetKeyUp(KeyCode.Escape))
{
return;
}
var stack = new List<UIMenuBase>(_popupStack);
for (int i = stack.Count - 1; i >= 0; i--)
{
if (stack[i].OnBack())
{
break;
}
}
}
}
}