public static void Main() { Game.FrameRender += Process; tabView = new TabView("A RAGENativeUI Pause Menu"); tabView.MoneySubtitle = "$10.000.000"; tabView.Name = "Here goes the Name! :D"; Dictionary <string, string> listDict = new Dictionary <string, string>() { { "First Item", "Text filler" }, { "Second Item", "Hey, here there's some text" }, { "Third Item", "Duh!" }, }; tabView.AddTab(simpleListTab = new TabItemSimpleList("A List", listDict)); simpleListTab.Activated += SimpleListTab_Activated; List <MissionInformation> missionsInfo = new List <MissionInformation>() { new MissionInformation("Mission One", new Tuple <string, string>[] { new Tuple <string, string>("This the first info", "Random Info"), new Tuple <string, string>("This the second info", "Random Info #2") }) { Logo = new MissionLogo(Game.CreateTextureFromFile("DefaultSkin.png")) }, new MissionInformation("Mission Two", "I have description!", new Tuple <string, string>[] { new Tuple <string, string>("Objective", "Mission Two Objective") }), }; tabView.AddTab(missionSelectTab = new TabMissionSelectItem("I'm a Mission Select Tab", missionsInfo)); missionSelectTab.OnItemSelect += MissionSelectTab_OnItemSelect; tabView.AddTab(textTab = new TabTextItem("TabTextItem", "Text Tab Item", "I'm a text tab item")); textTab.Activated += TextTab_Activated; List <TabItem> items = new List <TabItem>(); for (int i = 0; i < 10; i++) { TabTextItem tItem = new TabTextItem("Item #" + i, "Title #" + i, "Some random text for #" + i); tItem.Activated += SubMenuItem_Activated; items.Add(tItem); } tabView.AddTab(submenuTab = new TabSubmenuItem("A submenu", items)); List <UIMenuItem> menuItems = new List <UIMenuItem>() { new UIMenuItem("First MenuItem!", ""), new UIMenuCheckboxItem("A Checkbox", true), new UIMenuListItem("List", new List <dynamic>() { "something", new Vector3(5, 0, 5), 10, 5, false, }, 0), }; TabInteractiveListItem interactiveListItem = new TabInteractiveListItem("An Interactive List", menuItems); tabView.AddTab(interactiveListItem); tabView.RefreshIndex(); while (true) { GameFiber.Yield(); } }
private static void Main() { tabView = new TabView("A RAGENativeUI Pause Menu"); tabView.MoneySubtitle = "$10.000.000"; tabView.Name = "Here goes the Name! :D"; Dictionary <string, string> listDict = new Dictionary <string, string>() { { "First Item", "Text filler" }, { "Second Item", "Hey, here there's some text" }, { "Third Item", "Duh!" }, }; tabView.AddTab(simpleListTab = new TabItemSimpleList("A List", listDict)); simpleListTab.Activated += (s, e) => Game.DisplaySubtitle("I'm in the simple list tab", 5000); List <MissionInformation> missionsInfo = new List <MissionInformation>() { new MissionInformation("Mission One", new Tuple <string, string>[] { new Tuple <string, string>("This the first info", "Random Info"), new Tuple <string, string>("This the second info", "Random Info #2") }) { Logo = new MissionLogo(Game.CreateTextureFromFile("DefaultSkin.png")) }, new MissionInformation("Mission Two", "I have description!", new Tuple <string, string>[] { new Tuple <string, string>("Objective", "Mission Two Objective") }), }; tabView.AddTab(missionSelectTab = new TabMissionSelectItem("I'm a Mission Select Tab", missionsInfo)); missionSelectTab.OnItemSelect += (info) => { if (info.Name == "Mission One") { Game.DisplaySubtitle("~g~Mission One Activated", 5000); } else if (info.Name == "Mission Two") { Game.DisplaySubtitle("~b~Mission Two Activated", 5000); } }; tabView.AddTab(textTab = new TabTextItem("TabTextItem", "Text Tab Item", "I'm a text tab item")); textTab.Activated += (s, e) => Game.DisplaySubtitle("I'm in the text tab", 5000); List <TabItem> items = new List <TabItem>(); for (int i = 0; i < 10; i++) { TabItem tItem = i < 5 ? (TabItem) new TabTextItem("Item #" + i, "Title #" + i, "Some random text for #" + i) : (TabItem) new TabInteractiveListItem("Item #" + i, CreateMenuItems()); tItem.Activated += (s, e) => Game.DisplaySubtitle("Activated Submenu Item #" + submenuTab.Index, 5000); items.Add(tItem); } tabView.AddTab(submenuTab = new TabSubmenuItem("A submenu", items)); UIMenuItem[] menuItems = CreateMenuItems(); menuItems[0].Activated += (m, s) => Game.DisplaySubtitle("Activated first item!"); TabInteractiveListItem interactiveListItem = new TabInteractiveListItem("An Interactive List", menuItems); // set fast scrolling on scroller item with a slider bar (see MenuExtensions.cs) interactiveListItem.BackingMenu.WithFastScrollingOn(menuItems.Where(i => i is UIMenuScrollerItem s && s.SliderBar != null)); interactiveListItem.BackingMenu.OnIndexChange += (m, i) => Game.DisplaySubtitle("Selected #" + i); tabView.AddTab(interactiveListItem); tabView.RefreshIndex(); // start the fiber which will handle drawing and processing the pause menu GameFiber.StartNew(ProcessMenus); // continue with the plugin... Game.Console.Print($" Press {KeyBinding} to open the pause menu."); Game.DisplayHelp($"Press ~{KeyBinding.GetInstructionalId()}~ to open the pause menu."); }
private void BuildMainMenu() { MainMenu = new TabView("Cherry Multiplayer") { CanLeave = false, MoneySubtitle = "Cherry MP " + CurrentVersion }; _mainMapItem = new TabMapItem(); #region Welcome Screen { _welcomePage = new TabWelcomeMessageItem("Welcome to Cherry Multiplayer", "Development branch."); MainMenu.Tabs.Add(_welcomePage); } #endregion #region ServerBrowser { var dConnect = new TabButtonArrayItem("Quick Connect"); { var ipButton = new TabButton { Text = "IP Address", Size = new Size(500, 40) }; ipButton.Activated += (sender, args) => { MainMenu.TemporarilyHidden = true; var newIp = InputboxThread.GetUserInput(_clientIp ?? "", 30, TickSpinner); _clientIp = newIp; ipButton.Text = string.IsNullOrWhiteSpace(newIp) ? "IP Address" : newIp; MainMenu.TemporarilyHidden = false; }; dConnect.Buttons.Add(ipButton); } { var ipButton = new TabButton { Text = "Port", Size = new Size(500, 40) }; ipButton.Activated += (sender, args) => { MainMenu.TemporarilyHidden = true; var port = InputboxThread.GetUserInput(Port.ToString(), 30, TickSpinner); if (string.IsNullOrWhiteSpace(port)) { port = "4499"; } if (!int.TryParse(port, out int newPort)) { Util.Util.SafeNotify("Wrong port format!"); MainMenu.TemporarilyHidden = false; return; } Port = newPort; ipButton.Text = Port.ToString(); MainMenu.TemporarilyHidden = false; }; dConnect.Buttons.Add(ipButton); } { var ipButton = new TabButton { Text = "Password", Size = new Size(500, 40) }; ipButton.Activated += (sender, args) => { MainMenu.TemporarilyHidden = true; var newIp = InputboxThread.GetUserInput("", 30, TickSpinner); MainMenu.TemporarilyHidden = false; _QCpassword = newIp; ipButton.Text = string.IsNullOrWhiteSpace(newIp) ? "Password" : "*******"; }; dConnect.Buttons.Add(ipButton); } { var ipButton = new TabButton { Text = "Connect", Size = new Size(500, 40) }; ipButton.Activated += (sender, args) => { var isPassworded = false; if (!string.IsNullOrWhiteSpace(_QCpassword)) { isPassworded = true; } AddServerToRecent(_clientIp + ":" + Port, _QCpassword); ConnectToServer(_clientIp, Port, isPassworded, _QCpassword); MainMenu.TemporarilyHidden = true; }; dConnect.Buttons.Add(ipButton); } _Verified = new TabInteractiveListItem("Verified", new List <UIMenuItem>()); _serverBrowser = new TabInteractiveListItem("Internet", new List <UIMenuItem>()); _favBrowser = new TabInteractiveListItem("Favorites", new List <UIMenuItem>()); _lanBrowser = new TabInteractiveListItem("Local Network", new List <UIMenuItem>()); _recentBrowser = new TabInteractiveListItem("Recent", new List <UIMenuItem>()); _connectTab = new TabSubmenuItem("connect", new List <TabItem>() { dConnect, _favBrowser, _Verified, _serverBrowser, _lanBrowser, _recentBrowser }); MainMenu.AddTab(_connectTab); _connectTab.DrawInstructionalButtons += (sender, args) => { MainMenu.DrawInstructionalButton(4, Control.Jump, "Refresh"); if (Game.IsControlJustPressed(0, Control.Jump)) { RebuildServerBrowser(); } #region Verified, Iternet, LAN and Recent if (_connectTab.Index == 2 && _connectTab.Items[2].Focused || _connectTab.Index == 3 && _connectTab.Items[3].Focused || _connectTab.Index == 4 && _connectTab.Items[4].Focused || _connectTab.Index == 5 && _connectTab.Items[5].Focused) { MainMenu.DrawInstructionalButton(5, Control.Enter, "Add to Favorites"); if (Game.IsControlJustPressed(0, Control.Enter)) { var selectedServer = _serverBrowser.Items[_serverBrowser.Index]; if (_connectTab.Index == 2 && _connectTab.Items[2].Focused) { selectedServer = _Verified.Items[_Verified.Index]; } else if (_connectTab.Index == 4 && _connectTab.Items[4].Focused) { selectedServer = _lanBrowser.Items[_lanBrowser.Index]; } else if (_connectTab.Index == 5 && _connectTab.Items[5].Focused) { selectedServer = _recentBrowser.Items[_recentBrowser.Index]; } selectedServer.SetRightBadge(UIMenuItem.BadgeStyle.None); if (PlayerSettings.FavoriteServers.Contains(selectedServer.Description)) { var favItem = _favBrowser.Items.FirstOrDefault(i => i.Description == selectedServer.Description); if (favItem != null) { selectedServer.SetRightBadge(UIMenuItem.BadgeStyle.None); RemoveFromFavorites(selectedServer.Description); _favBrowser.Items.Remove(favItem); _favBrowser.RefreshIndex(); } } else { AddToFavorites(selectedServer.Description); selectedServer.SetRightBadge(UIMenuItem.BadgeStyle.Star); var item = new UIMenuItem(selectedServer.Text) { Description = selectedServer.Description }; item.SetRightLabel(selectedServer.RightLabel); item.SetLeftBadge(selectedServer.LeftBadge); item.Activated += (faf, selectedItem) => { if (IsOnServer()) { Client.Disconnect("Switching servers"); NetEntityHandler.ClearAll(); if (Npcs != null) { Npcs.ToList().ForEach(pair => pair.Value.Clear()); Npcs.Clear(); } while (IsOnServer()) { Script.Yield(); } } bool pass = false; if (selectedServer.LeftBadge == UIMenuItem.BadgeStyle.Lock) { pass = true; } var splt = selectedServer.Description.Split(':'); if (splt.Length < 2) { return; } if (!int.TryParse(splt[1], out int port)) { return; } ConnectToServer(splt[0], port, pass); MainMenu.TemporarilyHidden = true; _connectTab.RefreshIndex(); }; _favBrowser.Items.Add(item); } } } #endregion #region Favorites if (_connectTab.Index == 1 && _connectTab.Items[1].Focused) { MainMenu.DrawInstructionalButton(6, Control.NextCamera, "Add Server"); #region Add server if (Game.IsControlJustPressed(0, Control.NextCamera)) { MainMenu.TemporarilyHidden = true; var serverIp = InputboxThread.GetUserInput("Server IP(:Port)", 40, TickSpinner); if (serverIp.Contains("Server IP(:Port)") || string.IsNullOrWhiteSpace(serverIp)) { Util.Util.SafeNotify("Incorrect input!"); MainMenu.TemporarilyHidden = false; return; } else if (!serverIp.Contains(":")) { serverIp += ":4499"; } MainMenu.TemporarilyHidden = false; if (!PlayerSettings.FavoriteServers.Contains(serverIp)) { AddToFavorites(serverIp); var item = new UIMenuItem(serverIp) { Description = serverIp }; _favBrowser.Items.Add(item); } else { Util.Util.SafeNotify("Server already on the list"); return; } } #endregion MainMenu.DrawInstructionalButton(5, Control.Enter, "Remove"); #region Remove if (Game.IsControlJustPressed(0, Control.Enter)) { var selectedServer = _favBrowser.Items[_favBrowser.Index]; var favItem = _favBrowser.Items.FirstOrDefault(i => i.Description == selectedServer.Description); if (_Verified.Items.FirstOrDefault(i => i.Description == selectedServer.Description) != null) { _Verified.Items.FirstOrDefault(i => i.Description == selectedServer.Description).SetRightBadge(UIMenuItem.BadgeStyle.None); } if (_serverBrowser.Items.FirstOrDefault(i => i.Description == selectedServer.Description) != null) { _serverBrowser.Items.FirstOrDefault(i => i.Description == selectedServer.Description).SetRightBadge(UIMenuItem.BadgeStyle.None); } if (_lanBrowser.Items.FirstOrDefault(i => i.Description == selectedServer.Description) != null) { _lanBrowser.Items.FirstOrDefault(i => i.Description == selectedServer.Description).SetRightBadge(UIMenuItem.BadgeStyle.None); } if (_recentBrowser.Items.FirstOrDefault(i => i.Description == selectedServer.Description) != null) { _recentBrowser.Items.FirstOrDefault(i => i.Description == selectedServer.Description).SetRightBadge(UIMenuItem.BadgeStyle.None); } if (favItem != null) { Util.Util.SafeNotify("Server removed from Favorites!"); RemoveFromFavorites(selectedServer.Description); _favBrowser.Items.Remove(favItem); _favBrowser.RefreshIndex(); } } #endregion } #endregion }; CherryDiscord.CherryDiscord.InMenuDiscordInitialize(CurrentVersion.ToString()); CherryDiscord.CherryDiscord.InMenuDiscordUpdatePresence(); } #endregion #region Settings { #region General Menu var GeneralMenu = new TabInteractiveListItem("General", new List <UIMenuItem>()); { var nameItem = new UIMenuItem("Display Name"); nameItem.SetRightLabel(PlayerSettings.DisplayName); nameItem.Activated += (sender, item) => { if (IsOnServer()) { GTA.UI.Screen.ShowNotification("You cannot change your Display Name while connected to a server."); return; } MainMenu.TemporarilyHidden = true; var newName = InputboxThread.GetUserInput(PlayerSettings.DisplayName ?? "Enter a new Display Name", 32, TickSpinner); if (!string.IsNullOrWhiteSpace(newName)) { if (newName.Length > 32) { newName = newName.Substring(0, 32); } newName = newName.Replace(' ', '_'); PlayerSettings.DisplayName = newName; SaveSettings(); nameItem.SetRightLabel(newName); } MainMenu.TemporarilyHidden = false; }; GeneralMenu.Items.Add(nameItem); } { var debugItem = new UIMenuCheckboxItem("Show Game FPS Counter", PlayerSettings.ShowFPS); debugItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.ShowFPS = @checked; DebugInfo.FPS = @checked; SaveSettings(); }; GeneralMenu.Items.Add(debugItem); } { var debugItem = new UIMenuCheckboxItem("Disable Rockstar Editor", PlayerSettings.DisableRockstarEditor); debugItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.DisableRockstarEditor = @checked; SaveSettings(); }; GeneralMenu.Items.Add(debugItem); } { var debugItem = new UIMenuCheckboxItem("Allow Webcam/Microphone Streaming (Requires restart)", PlayerSettings.MediaStream); debugItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.MediaStream = @checked; SaveSettings(); }; GeneralMenu.Items.Add(debugItem); } { var nameItem = new UIMenuItem("Update Channel"); nameItem.SetRightLabel(PlayerSettings.UpdateChannel); nameItem.Activated += (sender, item) => { MainMenu.TemporarilyHidden = true; var newName = InputboxThread.GetUserInput(PlayerSettings.UpdateChannel ?? "stable", 40, TickSpinner); if (!string.IsNullOrWhiteSpace(newName)) { PlayerSettings.UpdateChannel = newName; SaveSettings(); nameItem.SetRightLabel(newName); } MainMenu.TemporarilyHidden = false; }; GeneralMenu.Items.Add(nameItem); } #endregion #region Chat var ChatboxMenu = new TabInteractiveListItem("Chat", new List <UIMenuItem>()); { var chatItem = new UIMenuCheckboxItem("Enable Timestamp", PlayerSettings.Timestamp); chatItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.Timestamp = @checked; SaveSettings(); }; ChatboxMenu.Items.Add(chatItem); } { var chatItem = new UIMenuCheckboxItem("Use Military Time", PlayerSettings.Militarytime); chatItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.Militarytime = @checked; SaveSettings(); }; ChatboxMenu.Items.Add(chatItem); } { var chatItem = new UIMenuCheckboxItem("Scale Chatbox With Safezone", PlayerSettings.ScaleChatWithSafezone); chatItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.ScaleChatWithSafezone = @checked; SaveSettings(); }; ChatboxMenu.Items.Add(chatItem); } { var chatItem = new UIMenuItem("Horizontal Chatbox Offset"); chatItem.SetRightLabel(PlayerSettings.ChatboxXOffset.ToString()); chatItem.Activated += (sender, item) => { MainMenu.TemporarilyHidden = true; var strInput = InputboxThread.GetUserInput(PlayerSettings.ChatboxXOffset.ToString(), 10, TickSpinner); if (!int.TryParse(strInput, out int newSetting)) { Util.Util.SafeNotify("Input was not in the correct format."); MainMenu.TemporarilyHidden = false; return; } MainMenu.TemporarilyHidden = false; PlayerSettings.ChatboxXOffset = newSetting; chatItem.SetRightLabel(PlayerSettings.ChatboxXOffset.ToString()); SaveSettings(); }; ChatboxMenu.Items.Add(chatItem); } { var chatItem = new UIMenuItem("Vertical Chatbox Offset"); chatItem.SetRightLabel(PlayerSettings.ChatboxYOffset.ToString()); chatItem.Activated += (sender, item) => { MainMenu.TemporarilyHidden = true; var strInput = InputboxThread.GetUserInput(PlayerSettings.ChatboxYOffset.ToString(), 10, TickSpinner); if (!int.TryParse(strInput, out int newSetting)) { Util.Util.SafeNotify("Input was not in the correct format."); MainMenu.TemporarilyHidden = false; return; } MainMenu.TemporarilyHidden = false; PlayerSettings.ChatboxYOffset = newSetting; chatItem.SetRightLabel(PlayerSettings.ChatboxYOffset.ToString()); SaveSettings(); }; ChatboxMenu.Items.Add(chatItem); } { var chatItem = new UIMenuCheckboxItem("Use Classic Chatbox", PlayerSettings.UseClassicChat); chatItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.UseClassicChat = @checked; SaveSettings(); }; ChatboxMenu.Items.Add(chatItem); } #endregion #region Experimental var ExpMenu = new TabInteractiveListItem("Experimental", new List <UIMenuItem>()); { var expItem = new UIMenuCheckboxItem("Disable Chromium Embedded Framework (Requires restart)", PlayerSettings.DisableCEF); expItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.DisableCEF = @checked; SaveSettings(); }; ExpMenu.Items.Add(expItem); } #endregion #region Debug Menu var DebugMenu = new TabInteractiveListItem("Debug", new List <UIMenuItem>()); { { var expItem = new UIMenuCheckboxItem("Enable CEF Development Tools (http://localhost:9222) [Restart required]", PlayerSettings.CEFDevtool); expItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.CEFDevtool = @checked; SaveSettings(); }; DebugMenu.Items.Add(expItem); } { var expItem = new UIMenuCheckboxItem("Enable Debug mode (Requires an extra tool)", PlayerSettings.DebugMode); expItem.CheckboxEvent += (sender, @checked) => { PlayerSettings.DebugMode = @checked; SaveSettings(); }; DebugMenu.Items.Add(expItem); } { var expItem = new UIMenuCheckboxItem("Save Debug to File (Huge performance impact)", SaveDebugToFile); expItem.CheckboxEvent += (sender, @checked) => { SaveDebugToFile = @checked; SaveSettings(); }; DebugMenu.Items.Add(expItem); } { var debugItem = new UIMenuCheckboxItem("Remove Game Entities", RemoveGameEntities); debugItem.CheckboxEvent += (sender, @checked) => { RemoveGameEntities = @checked; }; DebugMenu.Items.Add(debugItem); } { var debugItem = new UIMenuCheckboxItem("Show Streamer Debug Data", DebugInfo.StreamerDebug); debugItem.CheckboxEvent += (sender, @checked) => { DebugInfo.StreamerDebug = @checked; }; DebugMenu.Items.Add(debugItem); } { var debugItem = new UIMenuCheckboxItem("Disable Nametag Draw", ToggleNametagDraw); debugItem.CheckboxEvent += (sender, @checked) => { ToggleNametagDraw = @checked; }; DebugMenu.Items.Add(debugItem); } { var debugItem = new UIMenuCheckboxItem("Disable Position Update", TogglePosUpdate); debugItem.CheckboxEvent += (sender, @checked) => { TogglePosUpdate = @checked; }; DebugMenu.Items.Add(debugItem); } } #endregion var welcomeItem = new TabSubmenuItem("settings", new List <TabItem>() { GeneralMenu, ChatboxMenu, //DisplayMenu, //GraphicsMenu, ExpMenu, DebugMenu }); MainMenu.AddTab(welcomeItem); } #endregion #region Quit { var welcomeItem = new TabTextItem("Quit", "Quit Cherry Multiplayer", "Are you sure you want to quit Cherry Multiplayer and return to desktop?") { CanBeFocused = false }; welcomeItem.Activated += (sender, args) => { if (Client != null && IsOnServer()) { Client.Disconnect("Quit"); } CEFManager.Dispose(); CEFManager.DisposeCef(); Script.Wait(500); //Environment.Exit(0); Process.GetProcessesByName("GTA5")[0].Kill(); Process.GetCurrentProcess().Kill(); }; MainMenu.Tabs.Add(welcomeItem); } #endregion #region Current Server Tab #region Players _serverPlayers = new TabItemSimpleList("Players", new Dictionary <string, string>()); #endregion var favTab = new TabTextItem("Favorite", "Add to Favorites", "Add the current server to favorites.") { CanBeFocused = false }; favTab.Activated += (sender, args) => { var serb = _currentServerIp + ":" + _currentServerPort; AddToFavorites(_currentServerIp + ":" + _currentServerPort); var item = new UIMenuItem(serb) { Description = serb }; Util.Util.SafeNotify("Server added to favorites!"); item.Activated += (faf, selectedItem) => { if (IsOnServer()) { Client.Disconnect("Switching servers"); NetEntityHandler.ClearAll(); if (Npcs != null) { Npcs.ToList().ForEach(pair => pair.Value.Clear()); Npcs.Clear(); } while (IsOnServer()) { Script.Yield(); } } var splt = serb.Split(':'); if (splt.Length < 2) { return; } if (!int.TryParse(splt[1], out int port)) { return; } ConnectToServer(splt[0], port); MainMenu.TemporarilyHidden = true; _connectTab.RefreshIndex(); AddServerToRecent(serb, ""); }; _favBrowser.Items.Add(item); }; var dcItem = new TabTextItem("Disconnect", "Disconnect", "Disconnect from the current server.") { CanBeFocused = false }; dcItem.Activated += (sender, args) => { if (Client != null) { Client.Disconnect("Quit"); } }; _statsItem = new TabTextItem("Statistics", "Network Statistics", "") { CanBeFocused = false }; _serverItem = new TabSubmenuItem("server", new List <TabItem>() { _serverPlayers, favTab, _statsItem, dcItem }) { Parent = MainMenu }; #endregion MainMenu.RefreshIndex(); }
public async void OpenCustomPauseMenu() { TabView MenuContainer = new TabView("This is the title", "Subtitle"); MenuContainer.SideStringTop = "Player_Name"; MenuContainer.SideStringMiddle = "Middle_String"; MenuContainer.SideStringBottom = "Bottom_string"; MenuContainer.DisplayHeader = true; _menuPool.AddPauseMenu(MenuContainer); TabItem Item1 = new TabItem("simple TabItem"); TabTextItem Item2 = new TabTextItem("TabTextItem", "This is the Title inside", "With a cool text to be added where you can write whatever you want"); TabItemSimpleList Item3 = new TabItemSimpleList("TabItemSimpleList", new Dictionary <string, string>() { ["Item 1"] = "subItem 1", ["Item 2"] = "subItem 2", ["Item 3"] = "subItem 3", ["Item 4"] = "subItem 4", ["Item 5"] = "subItem 5", ["Item 6"] = "subItem 6" }); List <UIMenuItem> items = new List <UIMenuItem>() { new UIMenuItem("Item 1"), new UIMenuCheckboxItem("Item 2", true), new UIMenuListItem("Item 3", new List <dynamic>() { "Item1", 2, 3.0999 }, 0), new UIMenuSliderItem("Item 4", "", true), new UIMenuSliderProgressItem("Item 5", 20, 0), }; TabInteractiveListItem Item4 = new TabInteractiveListItem("TabInteractiveListItem", items); List <MissionInformation> info = new List <MissionInformation>() { new MissionInformation("Mission 1", new List <Tuple <string, string> >() { new Tuple <string, string>("item 1", "description 1"), new Tuple <string, string>("item 2", "description 2"), new Tuple <string, string>("item 3", "description 3"), new Tuple <string, string>("item 4", "description 4"), new Tuple <string, string>("item 5", "description 5"), }), new MissionInformation("Mission 2", new List <Tuple <string, string> >() { new Tuple <string, string>("item 1", "description 1"), new Tuple <string, string>("item 2", "description 2"), new Tuple <string, string>("item 3", "description 3"), new Tuple <string, string>("item 4", "description 4"), new Tuple <string, string>("item 5", "description 5"), }), }; TabSubmenuItem Item5 = new TabSubmenuItem("TabSubmenuItem", new List <TabItem>() { new TabItem("simple TabItem"), new TabTextItem("TabTextItem", "This is the Title inside", "With a cool text to be added where you can write whatever you want"), new TabItemSimpleList("TabItemSimpleList", new Dictionary <string, string>() { ["Item 1"] = "subItem 1", ["Item 2"] = "subItem 2", ["Item 3"] = "subItem 3", ["Item 4"] = "subItem 4", ["Item 5"] = "subItem 5", ["Item 6"] = "subItem 6" }), new TabMissionSelectItem("Mission tab", info), new TabInteractiveListItem("TabInteractiveListItem", items) }); TabMissionSelectItem Item6 = new TabMissionSelectItem("Mission tab", info); MenuContainer.AddTab(Item1); MenuContainer.AddTab(Item2); MenuContainer.AddTab(Item3); MenuContainer.AddTab(Item4); MenuContainer.AddTab(Item5); MenuContainer.AddTab(Item6); // this way we can choose which tab is the defualt one Item1.Active = true; Item1.Focused = true; Item1.Visible = true; MenuContainer.Visible = true; // items have events exactly the same as UIMenuItems and you can handle TabInteractiveListItem items just like that }