From 61141e9fb8f00c8ef376df4b2724e91081b2162a Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 10 Jan 2021 08:35:57 -0700 Subject: [PATCH] Initial commit --- SceneManager/Menus/ImportPathMenu.cs | 61 ++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 SceneManager/Menus/ImportPathMenu.cs diff --git a/SceneManager/Menus/ImportPathMenu.cs b/SceneManager/Menus/ImportPathMenu.cs new file mode 100644 index 0000000..f4f3505 --- /dev/null +++ b/SceneManager/Menus/ImportPathMenu.cs @@ -0,0 +1,61 @@ +using RAGENativeUI; +using RAGENativeUI.Elements; +using System.Drawing; +using SceneManager.Objects; +using SceneManager.Utils; +using System.Collections.Generic; +using System.Linq; +using Rage; + +namespace SceneManager.Menus +{ + internal class ImportPathMenu + { + internal static UIMenu Menu = new UIMenu("Scene Manager", "~o~Import Path Menu"); + private static UIMenuItem menuItem; + + internal static void Initialize() + { + Menu.ParentMenu = PathMainMenu.Menu; + MenuManager.MenuPool.Add(Menu); + + Menu.OnItemSelect += ImportPathMenu_OnItemSelect; + Menu.OnMenuOpen += ImportPathMenu_OnMenuOpen; + } + + internal static void BuildImportMenu() + { + Menu.Clear(); + foreach(Path path in Settings.ImportedPaths) + { + Menu.AddItem(menuItem = new UIMenuItem(path.Name)); + menuItem.ForeColor = Color.Gold; + } + } + + private static void ImportPathMenu_OnMenuOpen(UIMenu menu) + { + GameFiber.StartNew(() => UserInput.InitializeMenuMouseControl(menu, new List()), "RNUI Mouse Input Fiber"); + + // Disable menu item if PathManager.Paths contains a path with a matching name + foreach (UIMenuItem menuItem in menu.MenuItems) + { + menuItem.Enabled = !PathManager.Paths.Any(x => x.Name == menuItem.Text); + } + } + + private static void ImportPathMenu_OnItemSelect(UIMenu sender, UIMenuItem selectedItem, int index) + { + // When the user clicks on a path, that path needs to be added from Settings.importedPaths to PathMainMenu.paths + Path importedPath = PathManager.ImportPath(Settings.ImportedPaths.FirstOrDefault(x => x.Name == selectedItem.Text)); + importedPath.Load(); + Game.LogTrivial($"{selectedItem.Text} added to paths collection as path #{importedPath.Number}. Paths count: {PathManager.Paths.Count}"); + selectedItem.Enabled = false; + + // Refresh path main menu + PathMainMenu.BuildPathMenu(); + PathMainMenu.Menu.RefreshIndex(); + Menu.Visible = true; + } + } +}