コード例 #1
0
        // todo, items on load.
        internal void UpdateCheckboxes()
        {
            if (!updateNeeded)
            {
                return;
            }
            updateNeeded = false;
            checklistGrid.Clear();

            if (buttonsHaveDummyTextures)
            {
                Texture2D foundFilterTexture = Utilities.ResizeImage(ItemChecklist.instance.GetTexture("Images/filterFound"), 32, 32);
                Texture2D muteButtonTexture  = Utilities.ResizeImage(Main.itemTexture[ItemID.Megaphone], 32, 32);
                //Texture2D sortButtonTexture = Utilities.ResizeImage(Main.itemTexture[ItemID.ToxicFlask], 32, 32);
                Texture2D modFilterButtonTexture         = Utilities.ResizeImage(ItemChecklist.instance.GetTexture("Images/filterMod"), 32, 32);
                Texture2D collectChestItemsButtonTexture = Utilities.ResizeImage(Main.cursorTextures[8], 32, 32);
                Texture2D showBadgeButtonTexture         = Utilities.ResizeImage(Main.itemTexture[ItemID.Book], 32, 32);         // Main.extraTexture[58]

                foundFilterButton.SetImage(foundFilterTexture);
                muteButton.SetImage(muteButtonTexture);
                modFilterButton.SetImage(modFilterButtonTexture);
                collectChestItemsButton.SetImage(collectChestItemsButtonTexture);
                showBadgeButton.SetImage(showBadgeButtonTexture);

                buttonsHaveDummyTextures = false;
            }

            var itemChecklistPlayer = Main.LocalPlayer.GetModPlayer <ItemChecklistPlayer>(ItemChecklist.instance);
            var temp = new List <UIItemSlot>();

            for (int i = 0; i < itemChecklistPlayer.findableItems.Length; i++)
            {
                if (itemChecklistPlayer.findableItems[i])
                {
                    // filters here
                    if ((showCompleted != 1 && itemChecklistPlayer.foundItem[i]) || (showCompleted != 2 && !itemChecklistPlayer.foundItem[i]))
                    {
                        if (!PassModFilter(itemSlots[i]))
                        {
                            continue;
                        }

                        if (SharedUI.instance.SelectedCategory != null)
                        {
                            if (!SharedUI.instance.SelectedCategory.belongs(itemSlots[i].item) && !SharedUI.instance.SelectedCategory.subCategories.Any(x => x.belongs(itemSlots[i].item)))
                            {
                                continue;
                            }
                        }

                        bool filtered = false;
                        foreach (var filter in SharedUI.instance.availableFilters)
                        {
                            if (filter.button.selected)
                            {
                                if (!filter.belongs(itemSlots[i].item))
                                {
                                    filtered = true;
                                }
                            }
                        }
                        if (filtered)
                        {
                            continue;
                        }

                        if (itemSlots[i].item.Name.IndexOf(itemNameFilter.currentString, StringComparison.OrdinalIgnoreCase) == -1)
                        {
                            continue;
                        }

                        if (itemDescriptionFilter.currentString.Length > 0)
                        {
                            if ((itemSlots[i].item.ToolTip != null && GetTooltipsAsString(itemSlots[i].item.ToolTip).IndexOf(itemDescriptionFilter.currentString, StringComparison.OrdinalIgnoreCase) != -1) /*|| (recipe.createItem.toolTip2 != null && recipe.createItem.toolTip2.ToLower().IndexOf(itemDescriptionFilter.Text, StringComparison.OrdinalIgnoreCase) != -1)*/)
                            {
                            }
                            else
                            {
                                continue;
                            }
                        }

                        UIItemSlot box = itemSlots[i];
                        box.badge = SharedUI.instance.SelectedSort?.badge(box.item) ?? "";
                        temp.Add(box);
                    }
                }
            }
            checklistGrid.AddRange(temp);

            if (lastfoundID > 0)
            {
                checklistGrid.Recalculate();
                if (showCompleted != 1)                 // Don't Goto when unfound is the display mode.
                {
                    checklistGrid.Goto(delegate(UIElement element)
                    {
                        UIItemSlot itemSlot = element as UIItemSlot;
                        return(itemSlot != null && itemSlot.id == lastfoundID);
                    }, true);
                }
                lastfoundID = -1;
            }
        }