コード例 #1
0
ファイル: SortOptionsUI.cs プロジェクト: NotLe0n/BetterChests
        public override void OnInitialize()
        {
            var header = new UIText("Sorting Options");

            header.Top.Set(Main.instance.invBottom, 0);
            header.Left.Set(506 + 130, 0); // magic number because vanilla does it the same way lmao
            Append(header);

            list = new UIList();
            list.Top.Set(Main.instance.invBottom + 30, 0);
            list.Left.Set(506 + 130, 0);
            list.Width.Set(400, 0);
            list.Height.Set(400, 0);
            list.ListPadding = 14;
            list.SetPadding(2);
            Append(list);

            AddSortOption("Default sort", (evt, elm) => ItemSorting.SortChest());
            AddSortOption("Sort by ID", (evt, elm) => NewItemSorting.Sort(x => x.type, _reversed));
            AddSortOption("Sort Alphabetically", (evt, elm) => NewItemSorting.Sort(x => x.Name, _reversed));
            AddSortOption("Sort by rarity", (evt, elm) => NewItemSorting.Sort(x => x.rare, !_reversed));
            AddSortOption("Sort by stack size", (evt, elm) => NewItemSorting.Sort(x => x.stack, !_reversed));
            AddSortOption("Sort by value", (evt, elm) => NewItemSorting.Sort(x => x.value, !_reversed));
            AddSortOption("Sort by damage", (evt, elm) => NewItemSorting.Sort(x => x.damage, !_reversed));
            AddSortOption("Sort by defense", (evt, elm) => NewItemSorting.Sort(x => x.defense, !_reversed));
            AddSortOption("Sort by Mod", new MouseEvent(ModCarusel));
            AddSortOption("Sort randomly", (evt, elm) => NewItemSorting.Sort(x => Main.rand.NextFloat(), _reversed));

            var option = new UITextOption("Reversed: No");

            option.OnClick += (evt, elm) =>
            {
                _reversed = !_reversed;
                option.SetText(_reversed ? "Reversed: Yes" : "Reversed: No");
            };
            list.Add(option);

            var searchbox = new UIBetterTextBox("search item", Color.White);

            searchbox.Top.Set(Main.instance.invBottom + 170, 0);
            searchbox.Left.Set(71, 0);
            searchbox.Width.Set(209, 0);
            searchbox.Height.Set(30, 0);
            searchbox.OnTextChanged += () => NewItemSorting.Sort(x => x.Name.ToLower().Contains(searchbox.currentString.ToLower()), true);
            Append(searchbox);
        }
コード例 #2
0
ファイル: SortOptionsUI.cs プロジェクト: NotLe0n/BetterChests
        private void ModCarusel(UIMouseEvent evt, UIElement elm)
        {
            // get list of all mods with items
            List <Mod> modsWithItems = new List <Mod>();

            for (int i = 0; i < ItemLoader.ItemCount; i++)
            {
                var item = ItemLoader.GetItem(i);
                if (item != null && !modsWithItems.Contains(item.mod))
                {
                    modsWithItems.Add(item.mod);
                }
            }

            // increase index and reset it if limit is reached
            caruselIndex = caruselIndex < modsWithItems.Count - 1 ? caruselIndex + 1 : 0;

            // set text to mod name
            (elm as UITextOption).SetText("Sort my Mod: " + modsWithItems[caruselIndex].Name);
            // sort items
            NewItemSorting.Sort(x => x.modItem != null && x.modItem.mod.Name == modsWithItems[caruselIndex].Name, !_reversed);
        }