示例#1
0
        private static void SetItem(string item, int amount)
        {
            UIMenuColoredItem menuItem = new UIMenuColoredItem(item, Color.Gray, Color.Green);

            menuItem.SetRightLabel("~h~" + (amount > 0 ? "~g~" : "~r~") + amount);
            GlobalVariables.characterMenu.AddItem(menuItem);
        }
示例#2
0
        public ScriptManager()
        {
            KeyDown += onKeyDown;
            Tick    += onTick;

            UI.Notify("Script manager loaded");

            _menuPool = new MenuPool();
            // var mainMenu = new UIMenu("Native UI", "~b~NATIVEUI SHOWCASE");

            UIMenuColoredItem myItem = new UIMenuColoredItem("Simple Button", Color.White, Color.Black);

            myItem.TextColor            = Color.Red;
            myItem.HighlightedTextColor = Color.Yellow;

            myMenu.AddItem(myItem);

            myMenu.AddItem(new UIMenuCheckboxItem("Simple Checkbox", false));
            myMenu.AddItem(new UIMenuListItem("Simple List", new List <dynamic> {
                "Item 1", "Item 2", "Item 3"
            }, 0));
            myMenu.AddItem(new UIMenuItem("Another Button", "Items can have descriptions too!"));

            _menuPool.Add(myMenu);

            //Sprite sprite = new Sprite("shopui_title_graphics_michael", "shopui_title_graphics_michael", Point.Empty, Size.Empty);
            //myMenu.SetBannerType(sprite);

            // var banner = new UIResRectangle(Point.Empty, Size.Empty, Color.FromArgb(255, 255, 255, 255));
            //banner.Color = Color.FromArgb(255, 255, 255, 255);
            // myMenu.SetBannerType(banner);

            //myMenu.SetBannerType(banner);

            _menuPool.RefreshIndex();


            KeyDown += (o, e) =>
            {
                if (e.KeyCode == Keys.F5) // Our menu on/off switch
                {
                    myMenu.Visible = !myMenu.Visible;
                }
            };

            // myMenu.OnItemSelect += ItemSelectHandler;
        }
示例#3
0
        private void RefreshMenu()
        {
            myMenu.Clear();
            UIMenuColoredItem item = new UIMenuColoredItem("Save Current Vehicle", Color.FromArgb(80, 80, 50, 80), Color.FromArgb(180, 205, 41, 255));

            item.Description = $"Press Enter to save, {VehicleList.DeleteCarKeyCode} to repair.";
            item.SetLeftBadge(UIMenuItem.BadgeStyle.Star);
            myMenu.AddItem(item);
            foreach (var i in VehicleList.Vehicles)
            {
                item             = new UIMenuColoredItem(i.VehicleHash.ToString() + " (" + i.PrimaryColor.ToString() + ")", Color.FromArgb(30, 50, 50, 50), Color.FromArgb(180, 234, 237, 64));
                item.Description = $"Press Enter to spawn, {VehicleList.DeleteCarKeyCode} to delete.";
                item.SetLeftBadge(UIMenuItem.BadgeStyle.Car);
                myMenu.AddItem(item);
            }
            myMenu.RefreshIndex();
        }
        public UIMenuColoredItem AddColoredItem(UIMenu menu, string title, string desc, Color color1, Color color2, string rightLabel = "", UIMenuItem.BadgeStyle badge = UIMenuItem.BadgeStyle.None, bool isBadgeLeft = true)
        {
            var menuItem = new UIMenuColoredItem(title, desc, color1, color2);

            if (rightLabel != "")
            {
                menuItem.SetRightLabel(rightLabel);
            }

            if (isBadgeLeft)
            {
                menuItem.SetLeftBadge(badge);
            }
            else
            {
                menuItem.SetRightBadge(badge);
            }

            menu.AddItem(menuItem);
            return(menuItem);
        }
示例#5
0
        private void OnRenderCharacterList(object[] args)
        {
            if (args.Length < 2)
            {
                return;
            }

            _charList       = JsonConvert.DeserializeObject <List <CharDisplay> >(args[0] as string);
            _selectedCharId = (int)args[1];

            _charMenu = new MenuPool();

            var p = new Point(1350, 200);

            var menu = new UIMenu("Char Select", "Select a character", p);

            _charMenu.Add(menu);

            foreach (var c in _charList)
            {
                var ch = new UIMenuItem($"{c.CharName}");
                menu.AddItem(ch);
            }

            var spawnCharItem = new UIMenuColoredItem("Spawn Character", Color.DarkCyan, Color.LightBlue);

            menu.AddItem(spawnCharItem);

            var createCharItem = new UIMenuColoredItem("Create New Character", Color.CadetBlue, Color.LightBlue);

            menu.AddItem(createCharItem);


            menu.OnItemSelect += (sender, item, index) =>
            {
                if (item == createCharItem)
                {
                    Events.CallLocal("createchar");
                    _charMenu.CloseAllMenus();
                    return;
                }
                if (item == spawnCharItem)
                {
                    if (_selectedCharId < 0)
                    {
                        return;
                    }
                    SpawnChar(null);
                    _charMenu.CloseAllMenus();
                    return;
                }

                var selectedChar = _charList.Find(c => c.CharName == item.Text);
                SelectChar(new object[] { selectedChar.CharID });
            };

            menu.Visible = true;

            if (_selectedCharId >= 0)
            {
                SelectChar(new object[] { _selectedCharId });
            }
        }
示例#6
0
        public Main()
        {
            // Initialize managers
            AmmoTypeManager.Init();
            MaterialManager.Init();
            ConversionManager.Init();
            BenchManager.Init();

            // NativeUI
            Point          noBannerOffset = new Point(0, -107);
            UIResRectangle emptyBanner    = new UIResRectangle(Point.Empty, Size.Empty, Color.Empty);

            // Main menu
            BenchMain = new UIMenu(string.Empty, "SELECT AN OPTION", noBannerOffset);
            BenchMain.SetBannerType(emptyBanner);

            // Generic list menu for displaying ammo types/bench materials, subtitle changes with BenchMain item selection
            BenchList = new UIMenu(string.Empty, "LIST MENU TITLE", noBannerOffset);
            BenchList.SetBannerType(emptyBanner);

            // Action menu, subtitle changes with BenchList item selection
            BenchAction = new UIMenu(string.Empty, "ACTION MENU TITLE", noBannerOffset);
            BenchAction.SetBannerType(emptyBanner);

            MaterialHeader = new UIMenuColoredItem("~b~MATERIAL", Color.Transparent, Color.Transparent);
            MaterialHeader.SetRightLabel("~b~BENCH");
            MaterialHeader.Enabled = false;

            // Amount button
            AmountItem = new UIMenuItem("Amount");
            AmountItem.SetRightLabel("Select...");

            // Confirm button
            ConfirmItem = new UIMenuItem("Confirm");
            ConfirmItem.SetLeftBadge(UIMenuItem.BadgeStyle.Tick);

            // Separators
            MaterialSeparator         = new UIMenuColoredItem("TITLE", Color.Black, Color.Black);
            MaterialSeparator.Enabled = false;

            ActionSeparator         = new UIMenuColoredItem("~b~ACTION", Color.Black, Color.Black);
            ActionSeparator.Enabled = false;

            // Menu relations
            BenchMain.BindMenuToItem(BenchList, new UIMenuItem("Craft Ammo"));
            BenchMain.BindMenuToItem(BenchList, new UIMenuItem("Dismantle Ammo"));
            BenchMain.BindMenuToItem(BenchList, new UIMenuItem("Bench Materials"));

            // Add menus to the menupool
            MenuPool.Add(BenchMain);
            MenuPool.Add(BenchList);
            MenuPool.Add(BenchAction);

            // Menu events
            BenchMain.OnItemSelect += BenchMain_OnItemSelect;
            BenchList.OnItemSelect += BenchList_OnItemSelect;
            AmountItem.Activated   += AmountItem_Activated;
            ConfirmItem.Activated  += ConfirmItem_Activated;

            // Events
            Tick    += Main_Tick;
            Aborted += Main_Aborted;
        }
示例#7
0
        private void BenchList_OnItemSelect(UIMenu sender, UIMenuItem selectedItem, int index)
        {
            if (CurBench == null || !CanUseBench || CurListMode == ListMode.None || CurListMode == ListMode.Inventory)
            {
                return;
            }

            CurAmmoType = AmmoTypeManager.GetHashes()[index];
            CurAmount   = 0;

            BenchAction.RefreshIndex();
            BenchAction.Clear();

            CurCraftingAmounts.Clear();
            MaterialMenuItems.Clear();

            switch (CurListMode)
            {
            case ListMode.Crafting:
                BenchAction.Subtitle.Caption = $"~b~CRAFTING: ~s~{selectedItem.Text.ToUpperInvariant()}";
                MaterialSeparator.Text       = "~b~REQUIRES";

                bool isMaxCapacity = Util.CalcAmmoCapacity(CurAmmoType) == 0;
                AmountItem.SetRightLabel(isMaxCapacity ? "Full" : "Select...");
                BenchAction.AddItem(AmountItem);
                BenchAction.AddItem(MaterialSeparator);
                BenchAction.AddItem(MaterialHeader);

                // Crafting material display
                foreach (var material in ConversionManager.Conversions[CurAmmoType].CraftingMaterials)
                {
                    UIMenuColoredItem item = new UIMenuColoredItem($"→ {material.Value} {MaterialManager.GetName(material.Key)}", Color.Transparent, Color.Transparent);
                    item.SetRightLabel(CurBench.GetMaterialAmount(material.Key).ToString());
                    item.HighlightedTextColor = Color.WhiteSmoke;
                    item.Enabled = false;

                    MaterialMenuItems[material.Key] = item;
                    BenchAction.AddItem(item);
                }

                BenchAction.AddItem(ActionSeparator);
                BenchAction.AddItem(ConfirmItem);

                AmountItem.Enabled  = !isMaxCapacity;
                ConfirmItem.Enabled = false;
                break;

            case ListMode.Dismantling:
                BenchAction.Subtitle.Caption = $"~b~DISMANTLING: ~s~{selectedItem.Text.ToUpperInvariant()}";
                MaterialSeparator.Text       = "~b~GIVES";

                bool canDismantle = Game.Player.Character.GetAmmoByType(CurAmmoType) > 0;
                AmountItem.SetRightLabel(canDismantle ? "Select..." : "No Ammo");
                BenchAction.AddItem(AmountItem);
                BenchAction.AddItem(MaterialSeparator);
                BenchAction.AddItem(MaterialHeader);

                // Dismantling material display
                foreach (var material in ConversionManager.Conversions[CurAmmoType].BreakdownMaterials)
                {
                    int min = material.Value.Item1;
                    int max = material.Value.Item2;

                    UIMenuColoredItem item = new UIMenuColoredItem($"→ {(min == max ? max.ToString() : $"{min}-{max}")} {MaterialManager.GetName(material.Key)}", Color.Transparent, Color.Transparent);
                    item.SetRightLabel(CurBench.GetMaterialAmount(material.Key).ToString());
                    item.HighlightedTextColor = Color.WhiteSmoke;

                    MaterialMenuItems[material.Key] = item;
                    BenchAction.AddItem(item);
                }

                BenchAction.AddItem(ActionSeparator);
                BenchAction.AddItem(ConfirmItem);

                AmountItem.Enabled  = canDismantle;
                ConfirmItem.Enabled = false;
                break;
            }