1
Fork 0
mirror of https://github.com/thegeneralist01/Scene-Manager-DevRepo synced 2026-01-11 23:50:29 +01:00

Big refactor

This commit is contained in:
Rich Dunne 2021-01-10 08:35:21 -07:00
parent 6769ca815e
commit f1554a4aea
8 changed files with 557 additions and 1365 deletions

View file

@ -1,32 +1,36 @@
using RAGENativeUI;
using SceneManager.Menus;
using Rage;
using System.Linq;
using RAGENativeUI.Elements;
using System.Collections.Generic;
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 = new MenuPool();
internal static Dictionary<UIMenu, List<UIMenuItem>> menus = new Dictionary<UIMenu, List<UIMenuItem>>();
internal static MenuPool MenuPool { get; } = new MenuPool();
internal static void InstantiateMenus()
internal static void InitializeMenus()
{
MainMenu.InstantiateMenu();
SettingsMenu.InstantiateMenu();
PathMainMenu.InstantiateMenu();
PathCreationMenu.InstantiateMenu();
BarrierMenu.InstantiateMenu();
EditPathMenu.InstantiateMenu();
EditWaypointMenu.InstantiateMenu();
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)
foreach (UIMenu menu in MenuPool)
{
menu.MouseControlsEnabled = false;
menu.AllowCameraMovement = true;
@ -38,8 +42,57 @@ namespace SceneManager
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);
}
}
}