1
Fork 0
mirror of https://github.com/thegeneralist01/Scene-Manager-DevRepo synced 2026-01-11 23:50:29 +01:00
Scene-Manager-DevRepo/SceneManager/Menus/MenuManager.cs
2021-01-10 08:35:21 -07:00

98 lines
2.6 KiB
C#

using RAGENativeUI;
using SceneManager.Menus;
using Rage;
using System.Linq;
using RAGENativeUI.Elements;
using System.Drawing;
namespace SceneManager
{
// The only reason this class should change is to modify how menus are are being handled
internal static class MenuManager
{
internal static MenuPool MenuPool { get; } = new MenuPool();
internal static void InitializeMenus()
{
MainMenu.Initialize();
SettingsMenu.Initialize();
PathMainMenu.Initialize();
PathCreationMenu.Initialize();
ImportPathMenu.Initialize();
BarrierMenu.Initialize();
EditPathMenu.Initialize();
EditWaypointMenu.Initialize();
BuildMenus();
ColorMenuItems();
DefineMenuMouseSettings();
}
private static void DefineMenuMouseSettings()
{
foreach (UIMenu menu in MenuPool)
{
menu.MouseControlsEnabled = false;
menu.AllowCameraMovement = true;
}
}
private static void BuildMenus()
{
MainMenu.BuildMainMenu();
SettingsMenu.BuildSettingsMenu();
PathMainMenu.BuildPathMenu();
ImportPathMenu.BuildImportMenu();
EditPathMenu.BuildEditPathMenu();
BarrierMenu.BuildBarrierMenu();
}
private static void ColorMenuItems()
{
foreach(UIMenuItem menuItem in MenuPool.SelectMany(x => x.MenuItems))
{
if (menuItem.Enabled && menuItem.ForeColor == Color.Gold)
{
menuItem.HighlightedBackColor = menuItem.ForeColor;
}
}
}
internal static bool AreMenusClosed()
{
if (!BarrierMenu.Menu.Visible && !PathMainMenu.Menu.Visible && !PathCreationMenu.Menu.Visible && !EditPathMenu.Menu.Visible && !EditWaypointMenu.Menu.Visible && !SettingsMenu.Menu.Visible)
{
return true;
}
else
{
return false;
}
}
internal static void Update()
{
while (AnyMenuVisible())
{
MenuPool.ProcessMenus();
GameFiber.Yield();
}
}
private static bool AnyMenuVisible()
{
if(MenuPool.Any(x => x.Visible))
{
return true;
}
return false;
}
internal static void AddToMenuPool(UIMenu menu)
{
MenuPool.Add(menu);
}
}
}