Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Menu not opening or loading #159

Open
TAG-1534 opened this issue Apr 6, 2023 · 0 comments
Open

Menu not opening or loading #159

TAG-1534 opened this issue Apr 6, 2023 · 0 comments

Comments

@TAG-1534
Copy link

TAG-1534 commented Apr 6, 2023

Hi there, sorry I am new to this side of RagePlugin.. I'm not quite sure what I have done wrong as I have copied the Example code to just get a menu opening and working but yet its not.

I have it placed under GrandTheftAutoV/Plugins & GrandTheftAutoV/Plugins/LSPDFR but none seem to work... Not sure what to do

namespace Ped_Interaction_Menu
{
    using System;
    using System.Linq;
    using System.Security.Policy;
    using System.Windows.Forms;
    using Rage;
    using Rage.Attributes;
    using Rage.Native;
    using RAGENativeUI;
    using RAGENativeUI.Elements;
    using RAGENativeUI.PauseMenu;

    internal static class PedInteractionMenu
    {
        private static MenuPool pool;
        private static UIMenu mainMenu;

        private static readonly Keys Keybinding = Keys.K;

        private static void Main()
        {
            pool = new MenuPool();
            mainMenu = new UIMenu("Ped Interactions", "Version ~o~1.0.0");
            {
                var cb = new UIMenuCheckboxItem("Checkbox", false, "A Checkbox menu Item");
                cb.CheckboxEvent += (item, isChecked) => Game.DisplaySubtitle($"The Checkbox is {(isChecked ? "" : "~r~not~s~")} checked");
                
                var spawnCar = new UIMenuItem("Spawn car", "Spawns a random car after 5 seconds.");
                spawnCar.Activated += (menu, item) =>
                {
                    // disable the item so the user cannot activate it again until the car has spawned
                    spawnCar.Enabled = false;

                    GameFiber.StartNew(() =>
                    {
                        // 5 second countdown
                        for (int sec = 5; sec > 0; sec--)
                        {
                            // show the countdown in the menu description
                            mainMenu.DescriptionOverride = $"The car will spawn in ~b~{sec}~s~ second(s).";

                            GameFiber.Sleep(1000); // sleep for 1 second
                        }

                        // remove the countdown from the description
                        mainMenu.DescriptionOverride = null;

                        // spawn the random car
                        new Vehicle(m => m.IsCar, Game.LocalPlayer.Character.GetOffsetPositionFront(5.0f)).Dismiss();

                        // wait a bit and re-enable the item
                        GameFiber.Sleep(500);
                        spawnCar.Enabled = true;
                    });
                };
                mainMenu.AddItems(cb, spawnCar);
            }

            // create a child menu
            UIMenu childMenu = new UIMenu("RAGENativeUI", "CHILD MENU");

            // create a new item in the main menu and bind the child menu to it
            {
                UIMenuItem bindItem = new UIMenuItem("Go to child menu");

                mainMenu.AddItem(bindItem);
                mainMenu.BindMenuToItem(childMenu, bindItem);


                bindItem.RightBadge = UIMenuItem.BadgeStyle.Star;
                mainMenu.OnIndexChange += (menu, index) => mainMenu.MenuItems[index].RightBadge = UIMenuItem.BadgeStyle.None;
            }

            // create the child menu items
            childMenu.AddItems(Enumerable.Range(1, 50).Select(i => new UIMenuItem($"Item #{i}")));

            // add all the menus to the pool
            pool.Add(mainMenu, childMenu);

            // 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.");
        }
        private static void ProcessMenus()
        {
            // draw the menu banners (only needed if UIMenu.SetBannerType(Rage.Texture) is used)
            // Game.RawFrameRender += (s, e) => pool.DrawBanners(e.Graphics);

            while (true)
            {
                GameFiber.Yield();

                pool.ProcessMenus();

                if (Game.IsKeyDown(Keybinding) && !UIMenu.IsAnyMenuVisible && !TabView.IsAnyPauseMenuVisible)
                {
                    mainMenu.Visible = true;
                }
            }
        }


        // a command that simulates loading the plugin
        [ConsoleCommand("LoadPI")]
        private static void RunMenuExample() => GameFiber.StartNew(Main);
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant