Example #1
0
        public static void InitialiseMenus()
        {
            //bigMessage = new BigMessageThread(true);
            Game.FrameRender += Process;
            _MenuPool         = new MenuPool();
            ChecksMenu        = new UIMenu("Checks", "");
            _MenuPool.Add(ChecksMenu);

            ChecksMenu.AddItem(CheckNameItem = new UIMenuItem("Name/Vehicle Records Check"));

            ChecksMenu.AddItem(CheckInsuranceItem    = new UIMenuItem("Insurance Checks"));
            ChecksMenu.AddItem(CheckCourtResultsItem = new UIMenuItem("Magistrates' Court Results"));
            //ChecksMenu.SetMenuWidthOffset(0)
            ChecksMenu.RefreshIndex();
            ChecksMenu.OnItemSelect += OnItemSelect;
            //ChecksMenu.OnListChange += OnListChange;
            //_MenuPool.ProcessMenus();
            ChecksMenu.MouseControlsEnabled = false;
            ChecksMenu.AllowCameraMovement  = true;

            CourtsMenu = new TabView("~b~~h~San Andreas Magistrates' Court");



            CourtsMenu.Tabs.Add(PendingResultsList   = new TabSubmenuItem("Pending Results", EmptyItems));
            CourtsMenu.Tabs.Add(PublishedResultsList = new TabSubmenuItem("Results", EmptyItems));

            CourtsMenu.RefreshIndex();
            MainLogic();
            //CourtSystem.CreateNewCourtCase("Zach Houseknecht", new DateTime(1990, 2, 1), "speeding at 82MPH in a 30MPH limit", DateTime.Now.AddDays(-1), true, "Fined $500 and licence suspended for 56 days.", DateTime.Now, true);
            //CourtSystem.CreateNewCourtCase("Jeff Favignano", new DateTime(1990, 2, 1), "Armed Robbery", DateTime.Now, true, "Sentenced to 6 years in prison", DateTime.Now.AddDays(1), false);
        }
        private static void InitializeCourtsMenu()
        {
            CourtsMenu = new TabView("~b~~h~San Andreas Magistrates' Court");

            // use "AddTab" rather than "Tabs.Add" as it will throw an exception in "TabSubmenuItem.ProcessControls"
            // because the "Parent" won't be set in the submenu items causing a "NullPointerException"
            CourtsMenu.AddTab(PendingResultsList   = new TabSubmenuItem("Pending Results", EmptyItems));
            CourtsMenu.AddTab(PublishedResultsList = new TabSubmenuItem("Results", EmptyItems));

            CourtsMenu.RefreshIndex();
        }
Example #3
0
        public static void InitialiseMenus()
        {
            Game.FrameRender += Process;
            _MenuPool         = new MenuPool();
            //ChecksMenu = new UIMenu("Checks", "");
            //_MenuPool.Add(ChecksMenu);
            TrafficStopMenu = new UIMenu("Traffic Stop", "");
            _MenuPool.Add(TrafficStopMenu);
            TicketMenu = new UIMenu("Ticket", "");
            _MenuPool.Add(TicketMenu);

            PursuitTacticsMenu = new UIMenu("Pursuit Tactics", "");
            PursuitTacticsMenu.AddItem(AutomaticTacticsCheckboxItem = new UIMenuCheckboxItem("Automatic Tactics", EnhancedPursuitAI.DefaultAutomaticAI));
            PursuitTacticsMenu.AddItem(PursuitTacticsListItem       = new UIMenuListItem("Current Tactic", "", PursuitTacticsOptionsList));
            PursuitTacticsListItem.Enabled = false;
            PursuitTacticsMenu.RefreshIndex();
            PursuitTacticsMenu.OnItemSelect     += OnItemSelect;
            PursuitTacticsMenu.OnCheckboxChange += OnCheckboxChange;
            //TrafficStopMenu.OnListChange += OnListChange;
            PursuitTacticsMenu.MouseControlsEnabled = false;
            PursuitTacticsMenu.AllowCameraMovement  = true;
            _MenuPool.Add(PursuitTacticsMenu);


            Dictionary <UIMenu, string> UIMenus_Categories = new Dictionary <UIMenu, string>();

            foreach (string category in Offence.CategorizedTrafficOffences.Keys)
            {
                UIMenu newcategorymenu = new UIMenu(category, "LSPDFR+ offences");
                OffenceCategoryMenus.Add(newcategorymenu);
                UIMenus_Categories.Add(newcategorymenu, category);
            }
            OffenceCategorySwitchItem = new UIMenuSwitchMenusItem("Categories", "", OffenceCategoryMenus);

            foreach (UIMenu newcategorymenu in OffenceCategoryMenus)
            {
                newcategorymenu.AddItem(OffenceCategorySwitchItem);
                string category = UIMenus_Categories[newcategorymenu];
                foreach (string reason in Offence.CategorizedTrafficOffences[category].Select(x => x.name))
                {
                    UIMenuCheckboxItem newcheckboxitem = new UIMenuCheckboxItem(reason, false);
                    newcategorymenu.AddItem(newcheckboxitem);
                    CheckboxItems_Offences.Add(new Tuple <UIMenuCheckboxItem, Offence>(newcheckboxitem, Offence.CategorizedTrafficOffences[category].FirstOrDefault(x => x.name == reason)));
                }

                newcategorymenu.OnMenuClose += OnMenuClose;
                newcategorymenu.RefreshIndex();
                newcategorymenu.AllowCameraMovement  = true;
                newcategorymenu.MouseControlsEnabled = false;
                _MenuPool.Add(newcategorymenu);
            }



            var speech = new List <dynamic>()
            {
                "Hello", "Insult", "Kifflom", "Thanks", "Swear", "Warn", "Threaten"
            };

            TrafficStopMenu.AddItem(SpeechItem         = new UIMenuListItem("Speech", "", speech));
            TrafficStopMenu.AddItem(IDItem             = new UIMenuListItem("Ask for identification", "", OccupantSelector));
            TrafficStopMenu.AddItem(QuestionDriverItem = new UIMenuItem("Question driver"));
            TrafficStopMenu.AddItem(PenaltyItem        = new UIMenuItem("Issue Penalty"));
            TrafficStopMenu.AddItem(WarningItem        = new UIMenuItem("Issue warning", "Let the driver go with words of advice."));
            TrafficStopMenu.AddItem(OutOfVehicleItem   = new UIMenuListItem("Order out of vehicle", "", OccupantSelector));

            TrafficStopMenu.RefreshIndex();
            TrafficStopMenu.OnItemSelect += OnItemSelect;

            TrafficStopMenu.MouseControlsEnabled = false;
            TrafficStopMenu.AllowCameraMovement  = true;

            for (int i = 5; i <= Offence.maxFine; i += 5)
            {
                FineList.Add(Offence.currency + i.ToString());
            }

            for (int i = Offence.minpoints; i <= Offence.maxpoints; i += Offence.pointincstep)
            {
                PointsList.Add(i.ToString());
            }
            TicketMenu.AddItem(TicketOffenceSelectorItem);
            TicketMenu.AddItem(FineItem = new UIMenuListItem("Fine", "", FineList));

            PointsItem = new UIMenuListItem("Points", "", PointsList);
            if (Offence.enablePoints)
            {
                TicketMenu.AddItem(PointsItem);
            }

            //TicketMenu.AddItem(TicketReasonsListItem = new UIMenuListItem("Offence", TicketReasonsList, 0));
            TicketMenu.AddItem(SeizeVehicleTicketCheckboxItem = new UIMenuCheckboxItem("Seize Vehicle", false));
            List <dynamic> PenaltyOptions = new List <dynamic>()
            {
                "Ticket", "Court Summons"
            };

            if (LSPDFRPlusHandler.BritishPolicingScriptRunning)
            {
                PenaltyOptions = new List <dynamic> {
                    "Traffic Offence Report", "Fixed Penalty Notice", "Court Summons"
                };
            }
            TicketMenu.AddItem(IssueTicketItem = new UIMenuListItem("~h~Issue ", "", PenaltyOptions));
            IssueTicketItem.OnListChanged     += OnIndexChange;
            TicketMenu.ParentMenu = TrafficStopMenu;
            TicketMenu.RefreshIndex();
            TicketMenu.OnItemSelect += OnItemSelect;

            TicketMenu.MouseControlsEnabled = false;
            TicketMenu.AllowCameraMovement  = true;
            TicketMenu.SetMenuWidthOffset(80);


            QuestioningMenu = new UIMenu("Questioning", "");
            _MenuPool.Add(QuestioningMenu);
            QuestioningMenu.AddItem(IllegalInVehQuestionItem = new UIMenuItem(""));
            QuestioningMenu.AddItem(DrinkingQuestionItem     = new UIMenuItem(""));
            QuestioningMenu.AddItem(DrugsQuestionItem        = new UIMenuItem(""));
            QuestioningMenu.AddItem(SearchPermissionItem     = new UIMenuItem(""));
            QuestioningMenu.ParentMenu = TrafficStopMenu;
            QuestioningMenu.RefreshIndex();
            QuestioningMenu.OnItemSelect += OnItemSelect;

            QuestioningMenu.MouseControlsEnabled = false;
            QuestioningMenu.AllowCameraMovement  = true;
            QuestioningMenu.SetMenuWidthOffset(110);

            CourtsMenu = new TabView("~b~~h~San Andreas Court");



            CourtsMenu.AddTab(PendingResultsList   = new TabSubmenuItem("Pending Results", EmptyItems));
            CourtsMenu.AddTab(PublishedResultsList = new TabSubmenuItem("Results", EmptyItems));

            CourtsMenu.RefreshIndex();

            MainLogic();
        }
Example #4
0
        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();
            }
        }
Example #5
0
        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();
        }
Example #6
0
        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.");
        }
Example #7
0
    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
    }