Пример #1
0
        public static void Main()
        {
            // Create a fiber to process our menus
            menusProcessFiber = new GameFiber(ProcessLoop);

            // Create the MenuPool to easily process our menus
            menuPool = new MenuPool();

            // Create our menus
            menu1 = CreateMenu("First");
            menu2 = CreateMenu("Second");
            menu3 = CreateMenu("Third");
            menu4 = CreateMenu("Fourth");

            // Create the menu switcher
            menuSwitcher = new UIMenuSwitchMenusItem("Menu", "", new DisplayItem(menu1, "The First"),
                                                     new DisplayItem(menu2, "The Second"),
                                                     new DisplayItem(menu3, "The Third"),
                                                     new DisplayItem(menu4, "The Fourth"));

            // We use the DisplayItem class to specify the custom text that will appear in the menu switcher;
            // we can pass the menus directly too and it will use the menu title text instead:
            //
            // menuSwitcher = new UIMenuSwitchMenusItem("Menu", "", menu1, menu2, menu3, menu4);
            //

            // Add the menu switcher to the menus
            menu1.AddItem(menuSwitcher, 0);
            menu2.AddItem(menuSwitcher, 0);
            menu3.AddItem(menuSwitcher, 0);
            menu4.AddItem(menuSwitcher, 0);


            menu1.RefreshIndex();
            menu2.RefreshIndex();
            menu3.RefreshIndex();
            menu4.RefreshIndex();

            // Temporal fix to prevent some flickering that happens occasionally when switching menus
            menuSwitcher.OnListChanged += (s, i) => { menuSwitcher.CurrentMenu.Draw(); };

            // Start our process fiber
            menusProcessFiber.Start();


            // Continue with our plugin... in this example, hibernate to prevent it from being unloaded
            GameFiber.Hibernate();
        }
Пример #2
0
        private static void Main()
        {
            // create the pool that handles drawing and processing the menus
            pool = new MenuPool();

            // create the menus
            UIMenu menu1 = CreateMenu("First");
            UIMenu menu2 = CreateMenu("Second");
            UIMenu menu3 = CreateMenu("Third");
            UIMenu menu4 = CreateMenu("Fourth");
            UIMenu menu5 = CreateMenu("Fifth");

            // create the item that will handle switching between the menus
            menuSwitcher = new UIMenuSwitchMenusItem("Menu", "", new DisplayItem(menu1, "The First"),
                                                     new DisplayItem(menu2, "The Second"),
                                                     new DisplayItem(menu3, "The Third"),
                                                     new DisplayItem(menu4, "The Fourth"),
                                                     new DisplayItem(menu5, "The Fifth"));

            // insert the menu switcher item as the first item of all the menus
            menu1.AddItem(menuSwitcher, 0);
            menu2.AddItem(menuSwitcher, 0);
            menu3.AddItem(menuSwitcher, 0);
            menu4.AddItem(menuSwitcher, 0);
            menu5.AddItem(menuSwitcher, 0);

            // update the description when the selected menu changes
            menuSwitcher.OnListChanged += (s, i) => menuSwitcher.Description = i switch
            {
                0 => "This is the first menu.",
                1 => "This is the second menu.",
                2 => "This is the third menu.",
                3 => "This is the fourth menu.",
                4 => "This is the fifth menu.",
                _ => ""
            };

            // add all the menus to the pool
            pool.Add(menu1, menu2, menu3, menu4, menu5);

            // start the fiber which will handle drawing and processing the menus
            GameFiber.StartNew(ProcessMenus);

            // continue with the plugin...
            Game.Console.Print($"  Press {KeyBinding} to open the menu.");
            Game.DisplayHelp($"Press ~{KeyBinding.GetInstructionalId()}~ to open the menu.");
        }
Пример #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();
        }