Exemple #1
0
        public HeadOverlayUI(UIMenu menu, string title, int prop, HeadOverlayTypes type)
        {
            Menu = InteractionMenu.Instance._interactionMenuPool.AddSubMenuOffset(menu, title, new PointF(5, Screen.Height / 2));

            Menu.OnMenuClose += sender => { ClothesManager.Instance.SaveHeadOverlays(); };

            var drawables = new List <dynamic>();

            for (int i = 0; i < 11; i++)
            {
                drawables.Add("");
            }
            Drawables = new UIMenuSliderItem("Drawables", drawables, 0);
            Menu.AddItem(Drawables);

            Drawables.OnSliderChanged += (sender, index) =>
            {
                var color1 = new List <dynamic>();
                var color2 = new List <dynamic>();
                if (color2 != null)
                {
                    Menu.RemoveItemAt(2);
                }
                if (Colors1 != null)
                {
                    Menu.RemoveItemAt(1);
                }
                color1.Clear();
                color2.Clear();
                for (int i = 0; i < 63; i++)
                {
                    color1.Add("");
                }
                for (int i = 0; i < 63; i++)
                {
                    color2.Add("");
                }
                Colors1 = new UIMenuSliderItem("Primary Color", color1, 0);
                Menu.AddItem(Colors1);

                Colors2 = new UIMenuSliderItem("Secondary Color", color2, 0);
                Menu.AddItem(Colors2);

                ClothesManager.Instance.SetHeadOverlays(type, index, 0, 0);
                Colors1.OnSliderChanged += (textsender, textindex) =>
                {
                    ClothesManager.Instance.SetHeadOverlays(type, index, Colors1.Index, Colors2.Index);
                };
                Colors2.OnSliderChanged += (textsender, textindex) =>
                {
                    ClothesManager.Instance.SetHeadOverlays(type, index, Colors1.Index, Colors2.Index);
                };
                InteractionMenu.Instance._interactionMenuPool.RefreshIndex();
            };
        }
Exemple #2
0
 static internal void OnSliderChangedHandler(UIMenu sender, UIMenuSliderItem slider, int newindex)
 {
     switch (slider.Text)
     {
     case "Ped Rotation":
         if (Ped != null)
         {
             Rotation    = slider.Value;
             Ped.Heading = Rotation;
         }
         break;
     }
 }
Exemple #3
0
        private void SetupCreationMenu()
        {
            //Create New Character Button
            _creationMenu = _loginMenuPool.AddSubMenuOffset(_loginMenu, "~g~Create a new character!", "Start the process of creating your character here.", new PointF(Screen.Width / 2, Screen.Height / 2));
            var firstNameButton   = new UIMenuItem("First Name", "The first name of your character.");
            var lastNameButton    = new UIMenuItem("Last Name", "The last name of your character.");
            var dateOfBirthButton = new UIMenuItem("Date of birth", "The date of birth of your character.");

            List <dynamic> itemList     = new List <dynamic>();
            var            maleOption   = new UIMenuItem("Male");
            var            femaleOption = new UIMenuItem("Female");

            itemList.Add(maleOption);
            itemList.Add(femaleOption);
            var genderOption = new UIMenuSliderItem("Male/Female", itemList, 0, "The gender of your character", true);
            var createButton = new UIMenuItem("Finalize Character", "Finalize the creation of your character!");

            _creationMenu.AddItem(firstNameButton);
            _creationMenu.AddItem(lastNameButton);
            _creationMenu.AddItem(dateOfBirthButton);
            _creationMenu.AddItem(genderOption);
            _creationMenu.AddItem(createButton);
            _creationMenu.OnMenuClose += (sender) =>
            {
                firstNameButton.Text   = "First Name";
                lastNameButton.Text    = "Last Name";
                dateOfBirthButton.Text = "Date of birth";
            };
            _creationMenu.OnItemSelect += (sender, item, index) =>
            {
                if (item == firstNameButton || item == lastNameButton || item == dateOfBirthButton)
                {
                    API.DisplayOnscreenKeyboard(1, "", "First Name Of Your Character", "", "", "", "", 15);
                    API.DisableAllControlActions(0);
                    _creationMenu.Visible = false;
                    _isKeyboardUp         = true;
                }
                else if (item == createButton)
                {
                    if (_requestpending)
                    {
                        return;
                    }
                    _requestpending = true;
                    TriggerServerEvent("characterCreationRequest", firstNameButton.Text, lastNameButton.Text, dateOfBirthButton.Text, genderOption.Index);
                }
            };
        }
Exemple #4
0
        public ComponentUI(UIMenu menu, string title, int component, ComponentTypes type)
        {
            Menu = InteractionMenu.Instance._interactionMenuPool.AddSubMenuOffset(menu, title, new PointF(5, Screen.Height / 2));

            Menu.OnMenuClose += sender => { ClothesManager.Instance.SaveComponents(); };

            var drawables = new List <dynamic>();

            for (int i = 0; i < API.GetNumberOfPedDrawableVariations(Game.PlayerPed.Handle, component); i++)
            {
                drawables.Add("");
            }

            if (drawables.Any())
            {
                Drawables       = new UIMenuSliderItem("Drawables", drawables, 0);
                Drawables.Index = API.GetPedDrawableVariation(Game.PlayerPed.Handle, component);
                Menu.AddItem(Drawables);

                Drawables.OnSliderChanged += (sender, index) =>
                {
                    var textures = new List <dynamic>();
                    if (Textures != null)
                    {
                        Menu.RemoveItemAt(1);
                    }
                    textures.Clear();
                    for (int i = 0; i < API.GetNumberOfPedTextureVariations(Game.PlayerPed.Handle, component, index); i++)
                    {
                        textures.Add("");
                    }
                    Textures       = new UIMenuSliderItem("Textures", textures, 0);
                    Textures.Index = API.GetPedTextureVariation(Game.PlayerPed.Handle, component);
                    Menu.AddItem(Textures);
                    ClothesManager.Instance.SetComponents(type, index, 0, 0);
                    Textures.OnSliderChanged += (textsender, textindex) =>
                    {
                        ClothesManager.Instance.SetComponents(type, index, textindex, 0);
                    };
                    InteractionMenu.Instance._interactionMenuPool.RefreshIndex();
                };
            }
        }
        public ModelMenu(UIMenu menu, string title)
        {
            Menu = InteractionMenu.Instance._interactionMenuPool.AddSubMenuOffset(menu, title, new PointF(5, Screen.Height / 2));


            var maleModels   = new List <dynamic>();
            var femaleModels = new List <dynamic>();

            for (int i = 0; i < modelMaleList.Count; i++)
            {
                maleModels.Add("");
            }
            for (int i = 0; i < modelFemaleList.Count; i++)
            {
                femaleModels.Add("");
            }
            MaleModels = new UIMenuSliderItem("Models", maleModels, 0);
            Menu.AddItem(MaleModels);
            MaleModels.OnSliderChanged += (sender, index) =>
            {
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.
                ClothesManager.Instance.SetModel(modelMaleList[index]);
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.
                ClothesManager.Instance.SetComponents(0, 0, 0, 0);
                ClothesManager.Instance.SaveModel(modelMaleList[index]);
            };
            FemaleModels = new UIMenuSliderItem("Models", femaleModels, 0);
            Menu.AddItem(FemaleModels);
            FemaleModels.OnSliderChanged += (sender, index) =>
            {
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.
                ClothesManager.Instance.SetModel(modelFemaleList[index]);
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.
                ClothesManager.Instance.SetComponents(0, 0, 0, 0);
                ClothesManager.Instance.SaveModel(modelFemaleList[index]);
            };
        }
Exemple #6
0
 public void ColorA_SliderChanged(UIMenuSliderItem sender, int newIndex)
 {
     BulletLines.Config.ColorA = newIndex;
 }
Exemple #7
0
    public void AddMenuCook(UIMenu menu)
    {
        var newitem = new UIMenuItem("Cook!", "Cook the dish with the appropiate ingredients and ketchup.");

        newitem.SetLeftBadge(UIMenuItem.BadgeStyle.Star);
        newitem.SetRightBadge(UIMenuItem.BadgeStyle.Tick);
        menu.AddItem(newitem);
        menu.OnItemSelect += (sender, item, index) =>
        {
            if (item == newitem)
            {
                string output = ketchup ? "You have ordered ~b~{0}~w~ ~r~with~w~ ketchup." : "You have ordered ~b~{0}~w~ ~r~without~w~ ketchup.";
                Screen.ShowSubtitle(String.Format(output, dish));
            }
        };

        menu.OnIndexChange += (sender, index) =>
        {
            if (sender.MenuItems[index] == newitem)
            {
                newitem.SetLeftBadge(UIMenuItem.BadgeStyle.None);
            }
        };

        var colorItem = new UIMenuItem("UIMenuItem with Colors", "~b~Look!!~r~I can be colored ~y~too!!~w~", Color.FromArgb(150, 185, 230, 185), Color.FromArgb(170, 174, 219, 242));

        menu.AddItem(colorItem);

        var foods = new List <dynamic>
        {
            "Banana",
            "Apple",
            "Pizza",
            "Quartilicious",
            0xF00D,             // Dynamic!
        };

        var BlankItem = new UIMenuSeparatorItem();

        menu.AddItem(BlankItem);

        var colorListItem = new UIMenuListItem("Colored ListItem.. Really?", foods, 0, "~b~Look!!~r~I can be colored ~y~too!!~w~", Color.FromArgb(150, 185, 230, 185), Color.FromArgb(170, 174, 219, 242));

        menu.AddItem(colorListItem);

        var Slider = new UIMenuSliderItem("Slider Item", "Cool!", true);         // by default max is 100 and multipler 5 = 20 steps.

        menu.AddItem(Slider);

        var SliderProgress = new UIMenuSliderProgressItem("Slider Progress Item", 10, 0);

        menu.AddItem(SliderProgress);

        var Progress = new UIMenuProgressItem("Progress Item", "descriptiom", 10, 0, true);

        menu.AddItem(Progress);

        var listPanelItem1 = new UIMenuListItem("Change Color", new List <object> {
            "Example", "example2"
        }, 0);
        var ColorPanel = new UIMenuColorPanel("Color Panel Example", UIMenuColorPanel.ColorPanelType.Hair);

        // you can choose between hair palette or makeup palette
        menu.AddItem(listPanelItem1);
        listPanelItem1.AddPanel(ColorPanel);

        var listPanelItem2 = new UIMenuListItem("Change Percentage", new List <object> {
            "Example", "example2"
        }, 0);
        var PercentagePanel = new UIMenuPercentagePanel("Percentage Panel Example", "0%", "100%");

        // You can change every text in this Panel
        menu.AddItem(listPanelItem2);
        listPanelItem2.AddPanel(PercentagePanel);

        var listPanelItem3 = new UIMenuListItem("Change Grid Position", new List <object> {
            "Example", "example2"
        }, 0);
        var GridPanel = new UIMenuGridPanel("Up", "Left", "Right", "Down", new System.Drawing.PointF(.5f, .5f));

        // you can choose the text in every position and where to place the starting position of the cirlce
        // the other 2 grids panel available are not listed as they work the same way but in only 2 direction (horizontally or vertically)
        // and to use them you must stream the stream folder provided with NativeUI project
        menu.AddItem(listPanelItem3);
        listPanelItem3.AddPanel(GridPanel);

        var listPanelItem4 = new UIMenuListItem("Look at Statistics", new List <object> {
            "Example", "example2"
        }, 0);
        var statistics = new UIMenuStatisticsPanel();

        statistics.AddStatistics("Look at this!");
        statistics.AddStatistics("I'm a statistic too!");
        statistics.AddStatistics("Am i not?!");
        //you can add as menu statistics you want
        statistics.SetPercentage(0, 10f);
        statistics.SetPercentage(1, 50f);
        statistics.SetPercentage(2, 100f);
        //and you can get / set their percentage
        menu.AddItem(listPanelItem4);
        listPanelItem4.AddPanel(statistics);

        UIMenuItem PauseMenu = new UIMenuItem("Open custom pauseMenu");

        menu.AddItem(PauseMenu);
        PauseMenu.Activated += (_submenu, item) =>
        {
            _menuPool.CloseAllMenus();
            OpenCustomPauseMenu();
        };

        // THERE ARE NO EVENTS FOR PANELS.. WHEN YOU CHANGE WHAT IS CHANGABLE THE LISTITEM WILL DO WHATEVER YOU TELL HIM TO DO

        menu.OnListChange += (sender, item, index) =>
        {
            if (item == listPanelItem1)
            {
                Screen.ShowNotification("Selected color " + ((item.Panels[0] as UIMenuColorPanel).CurrentSelection + 1) + "...");
                item.Description = "Selected color " + ((item.Panels[0] as UIMenuColorPanel).CurrentSelection + 1) + "...";
                item.Parent.UpdateDescription();                 // this is neat.. this will update the description of the item without refresh index.. try it by changing color
            }
            else if (item == listPanelItem2)
            {
                Screen.ShowSubtitle("Percentage = " + (item.Panels[0] as UIMenuPercentagePanel).Percentage + "...");
            }
            else if (item == listPanelItem3)
            {
                Screen.ShowSubtitle("GridPosition = " + (item.Panels[0] as UIMenuGridPanel).CirclePosition + "...");
            }
        };
    }
 private void CountSliderChange(UIMenuSliderItem sender, int newIndex)
 {
     sender.Text = "Peds:  " + sender.Value;
 }
        void Setup()
        {
            XDocument document = XDocument.Load("scripts/Delivery/Locations.xml");

            ReadMissions(document);

            MainMenu = new UIMenu("LSDeliveries", "Menu");
            menuPool.Add(MainMenu);

            CreateMenu = menuPool.AddSubMenu(MainMenu, "Create Mission");
            EditMenu   = menuPool.AddSubMenu(MainMenu, "Edit Mission");

            #region Create Sub Menu
            mName            = new UIMenuItem("Name:  ");
            mName.Activated += MName_Activated;
            CreateMenu.AddItem(mName);

            mStreet = new UIMenuItem("Street:  ");
            CreateMenu.AddItem(mStreet);

            mArea = new UIMenuItem("Area:  ");
            CreateMenu.AddItem(mArea);

            List <dynamic> typeList = new List <dynamic>();
            foreach (MissionType t in Enum.GetValues(typeof(MissionType)))
            {
                typeList.Add(t.ToString());
            }
            mtype = new UIMenuListItem("Type:  ", typeList, 0);
            CreateMenu.AddItem(mtype);

            List <dynamic> vTypeList = new List <dynamic>();
            vTypeList.Add("Any");
            foreach (VehicleClass t in Enum.GetValues(typeof(VehicleClass)))
            {
                vTypeList.Add(t.ToString());
            }
            mVehicleType = new UIMenuListItem("Vehicle Type:", vTypeList, 0);
            CreateMenu.AddItem(mVehicleType);

            mVehicle            = new UIMenuItem("Vehcile:  None");
            mVehicle.Activated += VehicleSelected;
            CreateMenu.AddItem(mVehicle);

            mUsePVehicle = new UIMenuCheckboxItem("Use Player Vehicle:", true);
            CreateMenu.AddItem(mUsePVehicle);

            List <dynamic> useList = new List <dynamic>();
            foreach (UseCase t in Enum.GetValues(typeof(UseCase)))
            {
                useList.Add(t.ToString());
            }
            mUseCase = new UIMenuListItem("Use:  ", useList, 3);
            CreateMenu.AddItem(mUseCase);

            mStartPos            = new UIMenuItem("sPos:  ");
            mStartPos.Activated += StartPosSelected;
            CreateMenu.AddItem(mStartPos);

            mEndPos            = new UIMenuItem("ePos:  ");
            mEndPos.Activated += EndPosSelected;
            CreateMenu.AddItem(mEndPos);

            mCount                  = new UIMenuSliderItem("Peds:  ");
            mCount.Maximum          = 4;
            mCount.Multiplier       = 1;
            mCount.OnSliderChanged += CountSliderChange;
            CreateMenu.AddItem(mCount);

            mAccept            = new UIMenuItem("Add Mission");
            mAccept.Activated += AcceptSelected;
            CreateMenu.AddItem(mAccept);

            CreateMenu.OnMenuOpen += CreateMenu_OnMenuOpen;
            #endregion

            SetupPlayMenu(menuPool);

            menuPool.RefreshIndex();
        }
Exemple #10
0
        private void RefreshOrganizations(List <dynamic> orgInfo)
        {
            _myOrgsMenu.Clear();
            _myOrgs.Clear();
            Debug.WriteLine("Refreshing");
            foreach (var info in orgInfo)
            {
                Debug.Write(info.name);
                _myOrgs.Add(new Organization(info.name, info.invite, info.promote, info.deposit, info.withdrawl, info.members, info.bank));
            }

            foreach (var org in _myOrgs)
            {
                var menu = InteractionMenu.Instance._interactionMenuPool.AddSubMenuOffset(_myOrgsMenu, org.Name, new PointF(5, Screen.Height / 2));

                var DeleteMenu      = InteractionMenu.Instance._interactionMenuPool.AddSubMenuOffset(menu, "~r~Delete (Only works if your the owner) ", new PointF(5, Screen.Height / 2));
                var YesButtonDelete = new UIMenuItem("~r~Yes!");
                var NoButtonDelete  = new UIMenuItem("~g~No!");
                DeleteMenu.AddItem(YesButtonDelete);
                DeleteMenu.AddItem(NoButtonDelete);
                DeleteMenu.OnItemSelect += (sender, item, index) =>
                {
                    InteractionMenu.Instance._interactionMenuPool.CloseAllMenus();
                    if (item == YesButtonDelete)
                    {
                        TriggerServerEvent("Organizations:Delete", org.Name);
                    }
                    InteractionMenu.Instance._interactionMenuPool.CloseAllMenus();
                };

                var LeaveMenu      = InteractionMenu.Instance._interactionMenuPool.AddSubMenuOffset(menu, "~r~Leave Organization!", new PointF(5, Screen.Height / 2));
                var YesButtonLeave = new UIMenuItem("~r~Yes!");
                var NoButtonLeave  = new UIMenuItem("~g~No!");
                LeaveMenu.AddItem(YesButtonLeave);
                LeaveMenu.AddItem(NoButtonLeave);
                LeaveMenu.OnItemSelect += (sender, item, index) =>
                {
                    InteractionMenu.Instance._interactionMenuPool.CloseAllMenus();
                    if (item == YesButtonLeave)
                    {
                        TriggerServerEvent("Organizations:Leave", org.Name);
                    }
                    InteractionMenu.Instance._interactionMenuPool.CloseAllMenus();
                };

                if (org.CanInvite)
                {
                    var inviteButton = new UIMenuItem("~b~Invite Closest Player!");
                    menu.AddItem(inviteButton);
                    InteractionMenu.Instance._interactionMenuPool.RefreshIndex();
                    menu.OnItemSelect += (sender, item, index) =>
                    {
                        if (item == inviteButton)
                        {
                            InteractionMenu.Instance._interactionMenuPool.CloseAllMenus();
                            Utility.Instance.GetClosestPlayer(out var output);
                            if (output.Dist < 5)
                            {
                                TriggerServerEvent("Organizations:Invite", org.Name, API.GetPlayerServerId(output.Pid));
                            }
                            else
                            {
                                Utility.Instance.SendChatMessage("[Organizations]", "No player is close enough to invite!", 150, 25, 25);
                            }
                        }
                    };
                }

                if (org.CanPromote)
                {
                    var permsMenu = InteractionMenu.Instance._interactionMenuPool.AddSubMenuOffset(menu, "Members", new PointF(5, Screen.Height / 2));
                    foreach (var member in org.Members)
                    {
                        Debug.WriteLine(member);
                        UIMenu memberMenu    = InteractionMenu.Instance._interactionMenuPool.AddSubMenuOffset(permsMenu, member, new PointF(5, Screen.Height / 2));
                        var    depositSlider = new UIMenuSliderItem("Can Deposit. ~g~Yes~w~/~r~No", new List <dynamic>()
                        {
                            0, 1
                        }, 0);
                        var withdrawlSlider = new UIMenuSliderItem("Can Withdrawl. ~g~Yes~w~/~r~No", new List <dynamic>()
                        {
                            0, 1
                        }, 0);
                        var inviteSlider = new UIMenuSliderItem("Can Invite. ~g~Yes~w~/~r~No", new List <dynamic>()
                        {
                            0, 1
                        }, 0);
                        var promoteSlider = new UIMenuSliderItem("Can Promote. ~g~Yes~w~/~r~No", new List <dynamic>()
                        {
                            0, 1
                        }, 0);
                        var kickButton = new UIMenuItem("~r~Kick!");
                        var saveButton = new UIMenuItem("~g~Save Perms!");
                        memberMenu.AddItem(kickButton);
                        memberMenu.AddItem(depositSlider);
                        memberMenu.AddItem(withdrawlSlider);
                        memberMenu.AddItem(inviteSlider);
                        memberMenu.AddItem(promoteSlider);
                        memberMenu.AddItem(saveButton);
                        InteractionMenu.Instance._interactionMenuPool.RefreshIndex();
                        memberMenu.OnItemSelect += (sender, item, index) =>
                        {
                            InteractionMenu.Instance._interactionMenuPool.CloseAllMenus();
                            if (item == saveButton)
                            {
                                var canDeposit  = depositSlider.Index == 0 ? true : false;
                                var canWithdraw = withdrawlSlider.Index == 0 ? true : false;
                                var canInvite   = inviteSlider.Index == 0 ? true : false;
                                var canPromote  = promoteSlider.Index == 0 ? true : false;
                                TriggerServerEvent("Organizations:UpdatePerms", org.Name, member, canInvite, canPromote, canDeposit, canWithdraw);
                            }

                            if (item == kickButton)
                            {
                                TriggerServerEvent("Organizations:Kick", org.Name, member);
                            }
                        };
                    }
                }

                var balanceButton = new UIMenuItem("~g~Organization Bank Balance : " + org.Bank);
                menu.AddItem(balanceButton);

                if (org.CanDeposit)
                {
                    var depositButton = new UIMenuItem("~y~Deposit Into Organization Bank!");
                    menu.AddItem(depositButton);
                    InteractionMenu.Instance._interactionMenuPool.RefreshIndex();
                    menu.OnItemSelect += (sender, item, index) =>
                    {
                        if (item == depositButton)
                        {
                            InteractionMenu.Instance._interactionMenuPool.CloseAllMenus();
                            Utility.Instance.KeyboardInput("Amount you are depositing", "", 10, s =>
                            {
                                if (Int32.TryParse(s, out var result))
                                {
                                    TriggerServerEvent("Organizations:Deposit", org.Name, result);
                                }
                                else
                                {
                                    Utility.Instance.SendChatMessage("[Organizations]", "Invalid amount!", 150, 25, 25);
                                }
                            });
                        }
                    };
                }

                if (org.CanWithdrawl)
                {
                    var withdrawButton = new UIMenuItem("~o~Withdraw From Organization Bank!");
                    menu.AddItem(withdrawButton);
                    InteractionMenu.Instance._interactionMenuPool.RefreshIndex();
                    menu.OnItemSelect += (sender, item, index) => {
                        if (item == withdrawButton)
                        {
                            InteractionMenu.Instance._interactionMenuPool.CloseAllMenus();
                            Utility.Instance.KeyboardInput("Amount you are withdrawing", "", 10, s =>
                            {
                                if (Int32.TryParse(s, out var result))
                                {
                                    TriggerServerEvent("Organizations:Withdraw", org.Name, result);
                                }
                                else
                                {
                                    Utility.Instance.SendChatMessage("[Organizations]", "Invalid amount!", 150, 25, 25);
                                }
                            });
                        }
                    };
                }
            }
        }