From 1be5bea839604d0d7f614daa3ae74b30e5b291ac Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 7 May 2021 04:05:35 -0600 Subject: [PATCH] Refactored driver options to separate menu --- SceneManager/Menus/PathMainMenu.cs | 72 ++++++++++++++++-------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/SceneManager/Menus/PathMainMenu.cs b/SceneManager/Menus/PathMainMenu.cs index 817cdba..d7d8e59 100644 --- a/SceneManager/Menus/PathMainMenu.cs +++ b/SceneManager/Menus/PathMainMenu.cs @@ -4,8 +4,10 @@ using System.Linq; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; -using SceneManager.Objects; +using SceneManager.Managers; +using SceneManager.Paths; using SceneManager.Utils; +using SceneManager.Waypoints; namespace SceneManager.Menus { @@ -14,14 +16,14 @@ namespace SceneManager.Menus private static int MAX_PATH_LIMIT { get; } = 10; internal static List ImportedPaths { get; } = new List(); private static string[] DismissOptions { get; } = new string[] { "From path", "From waypoint", "From world" }; - internal static UIMenu Menu { get; } = new UIMenu("Scene Manager", "~o~Path Manager Main Menu"); + internal static UIMenu Menu { get; } = new UIMenu("Scene Manager", "~o~Path Manager"); internal static UIMenuItem CreateNewPath { get; } = new UIMenuItem("Create New Path"); - internal static UIMenuListScrollerItem ImportPath { get; } = new UIMenuListScrollerItem("Import Path", "Import a saved path", ImportedPaths); + internal static UIMenuListScrollerItem ImportPath { get; } = new UIMenuListScrollerItem("Import Path", "Import a saved path from ~b~plugins/SceneManager/Saved Paths", ImportedPaths); internal static UIMenuItem DeleteAllPaths { get; } = new UIMenuItem("Delete All Paths"); - internal static UIMenuNumericScrollerItem EditPath { get; private set; } - internal static UIMenuListScrollerItem DirectOptions { get; } = new UIMenuListScrollerItem("Direct driver to path's", "", new[] { "First waypoint", "Nearest waypoint" }); - internal static UIMenuNumericScrollerItem DirectDriver { get; private set; } - internal static UIMenuListScrollerItem DismissDriver { get; } = new UIMenuListScrollerItem("Dismiss nearest driver", $"~b~From path: ~w~AI will be released from the path\n~b~From waypoint: ~w~AI will skip their current waypoint task\n~b~From world: ~w~AI will be removed from the world.", DismissOptions); + internal static UIMenuListScrollerItem EditPath { get; private set; } + //internal static UIMenuListScrollerItem DirectOptions { get; } = new UIMenuListScrollerItem("Direct driver to path's", "", new[] { "First waypoint", "Nearest waypoint" }); + //internal static UIMenuListScrollerItem DirectDriver { get; private set; } + //internal static UIMenuListScrollerItem DismissDriver { get; } = new UIMenuListScrollerItem("Dismiss nearest driver", $"~b~From path: ~w~Driver will be released from the path\n~b~From waypoint: ~w~Driver will skip their current waypoint task\n~b~From world: ~w~Driver will be removed from the world.", DismissOptions); internal static UIMenuCheckboxItem DisableAllPaths { get; } = new UIMenuCheckboxItem("Disable All Paths", false); internal static void Initialize() @@ -34,7 +36,7 @@ namespace SceneManager.Menus Menu.OnMenuOpen += PathMenu_OnMenuOpen; } - internal static void BuildPathMenu() + internal static void Build() { MenuManager.MenuPool.CloseAllMenus(); Menu.Clear(); @@ -43,20 +45,21 @@ namespace SceneManager.Menus CreateNewPath.ForeColor = Color.Gold; Menu.AddItem(ImportPath); ImportPath.ForeColor = Color.Gold; - ImportPath.Enabled = true; - Menu.AddItem(EditPath = new UIMenuNumericScrollerItem("Edit Path", "", 1, PathManager.Paths.Count, 1)); + ImportPath.Enabled = Settings.ImportedPaths.Count() > 0; + Menu.AddItem(EditPath = new UIMenuListScrollerItem("Edit Path", "Options to ~b~edit path waypoints~w~, ~b~disable the path~w~, ~b~export the path~w~, or ~b~delete the path~w~.", PathManager.Paths.Select(x => x.Name))); EditPath.ForeColor = Color.Gold; Menu.AddItem(DisableAllPaths); DisableAllPaths.Enabled = true; Menu.AddItem(DeleteAllPaths); DeleteAllPaths.Enabled = true; DeleteAllPaths.ForeColor = Color.Gold; - Menu.AddItem(DirectOptions); - Menu.AddItem(DirectDriver = new UIMenuNumericScrollerItem("Direct nearest driver to path", "", 1, PathManager.Paths.Count, 1)); // This must instantiate here because the Paths.Count value changes - DirectDriver.ForeColor = Color.Gold; - DirectDriver.Enabled = true; - Menu.AddItem(DismissDriver); - DismissDriver.ForeColor = Color.Gold; + //Menu.AddItem(DirectOptions); + //DirectOptions.Enabled = true; + //Menu.AddItem(DirectDriver = new UIMenuListScrollerItem("Direct nearest driver to path", "", PathManager.Paths.Select(x => x.Name))); // This must instantiate here because the Paths change + //DirectDriver.ForeColor = Color.Gold; + //DirectDriver.Enabled = true; + //Menu.AddItem(DismissDriver); + //DismissDriver.ForeColor = Color.Gold; if (PathManager.Paths.Count == MAX_PATH_LIMIT) { @@ -68,7 +71,8 @@ namespace SceneManager.Menus EditPath.Enabled = false; DeleteAllPaths.Enabled = false; DisableAllPaths.Enabled = false; - DirectDriver.Enabled = false; + //DirectOptions.Enabled = false; + //DirectDriver.Enabled = false; } if(Settings.ImportedPaths.Count == 0) { @@ -97,37 +101,39 @@ namespace SceneManager.Menus if (selectedItem == DeleteAllPaths) { - Utils.DeleteAllPaths.Delete(); + PathManager.DeleteAllPaths(); DisableAllPaths.Checked = false; - BuildPathMenu(); + Build(); Menu.Visible = true; + BarrierMenu.BuildMenu(); } - if (selectedItem == DirectDriver) - { - if(Utils.DirectDriver.ValidateOptions(DirectOptions, PathManager.Paths[DirectDriver.Index], out Vehicle nearbyVehicle, out Waypoint targetWaypoint)) - { - Utils.DirectDriver.Direct(nearbyVehicle, PathManager.Paths[DirectDriver.Index], targetWaypoint); - } - } + //if (selectedItem == DirectDriver) + //{ + // if(Utils.DirectDriver.ValidateOptions(DirectOptions, PathManager.Paths[DirectDriver.Index], out Vehicle nearbyVehicle, out Waypoint targetWaypoint)) + // { + // Utils.DirectDriver.Direct(nearbyVehicle, PathManager.Paths[DirectDriver.Index], targetWaypoint); + // } + //} - if (selectedItem == DismissDriver) - { - Utils.DismissDriver.Dismiss(DismissDriver.Index); - } + //if (selectedItem == DismissDriver) + //{ + // Utils.DismissDriver.Dismiss(DismissDriver.Index); + //} } private static void PathMenu_OnCheckboxChange(UIMenu sender, UIMenuCheckboxItem checkboxItem, bool @checked) { if (checkboxItem == DisableAllPaths) { - TogglePaths.Toggle(DisableAllPaths.Checked); + PathManager.ToggleAllPaths(DisableAllPaths.Checked); } } private static void PathMenu_OnMenuOpen(UIMenu menu) { - var scrollerItems = new List { DirectOptions, DirectDriver, DismissDriver, EditPath }; + //var scrollerItems = new List { DirectOptions, DirectDriver, DismissDriver, EditPath }; + var scrollerItems = new List { EditPath }; GameFiber.StartNew(() => UserInput.InitializeMenuMouseControl(menu, scrollerItems), "RNUI Mouse Input Fiber"); } @@ -142,7 +148,7 @@ namespace SceneManager.Menus } else { - PathCreationMenu.BuildPathCreationMenu(); + //PathCreationMenu.BuildPathCreationMenu(); Menu.Visible = false; PathCreationMenu.Menu.Visible = true; }