예제 #1
0
        static void Prefix(PartDesc.ShopCategory type, ref List <PartInstance> ___currentItems)
        {
            SortBy sort = SortOptions.Instance.forCategory(type);

            switch (sort)
            {
            case SortBy.Default:
                // keep order as it is
                break;

            case SortBy.NewestFirst:
                ___currentItems.Reverse();
                break;

            case SortBy.PriceAscending:
                ___currentItems.Sort(
                    delegate(PartInstance a, PartInstance b)
                {
                    return(a.GetPart().m_price <b.GetPart().m_price ? -1 : a.GetPart().m_price> b.GetPart().m_price ? 1 : 0);
                }
                    );
                break;

            case SortBy.PriceDescending:
                ___currentItems.Sort(
                    delegate(PartInstance a, PartInstance b)
                {
                    return(a.GetPart().m_price <b.GetPart().m_price ? 1 : a.GetPart().m_price> b.GetPart().m_price ? -1 : 0);
                }
                    );
                break;

            case SortBy.NameAscending:
                ___currentItems.Sort(
                    delegate(PartInstance a, PartInstance b)
                {
                    return(a.GetPart().m_uiShopName.CompareTo(b.GetPart().m_uiShopName));
                }
                    );
                break;

            case SortBy.NameDescending:
                ___currentItems.Sort(
                    delegate(PartInstance a, PartInstance b)
                {
                    return(a.GetPart().m_uiShopName.CompareTo(b.GetPart().m_uiShopName) * -1);
                }
                    );
                break;

            default:
                break;
            }
        }
예제 #2
0
 public SortBy forCategory(PartDesc.ShopCategory category)
 {
     if (currentSort.ContainsKey(category))
     {
         return(currentSort.GetValueSafe(category));
     }
     else
     {
         return(SortBy.Default);
     }
 }
예제 #3
0
 public void setSortFor(PartDesc.ShopCategory category, SortBy sortBy)
 {
     if (!currentSort.ContainsKey(category))
     {
         currentSort.Add(category, sortBy);
     }
     else
     {
         currentSort[category] = sortBy;
     }
     ConfigUtil.SaveContentToJson(currentSort, ModloaderMod.Instance.Modpath + "/sortOptions.json");
 }
예제 #4
0
        static void Prefix(Inventory __instance)
        {
            if (File.Exists(ModloaderMod.Instance.Modpath + "/ui.assetbundle"))
            {
                try
                {
                    if (dropdownPrefab == null)
                    {
                        AssetBundle uiBundle = AssetBundle.LoadFromFile(ModloaderMod.Instance.Modpath + "/ui.assetbundle");
                        dropdownPrefab = uiBundle.LoadAsset <GameObject>("Dropdown");

                        GameObject goDropdown = UnityEngine.Object.Instantiate(dropdownPrefab, __instance.transform, false);
                        goDropdown.transform.localPosition = new Vector3(goDropdown.transform.localPosition.x + 290, goDropdown.transform.localPosition.y + 210);
                        sortDropdown = goDropdown.GetComponent <Dropdown>();
                        sortDropdown.onValueChanged = new Dropdown.DropdownEvent();
                        sortDropdown.onValueChanged.AddListener(delegate(int choice)
                        {
                            PartDesc.ShopCategory currentCategory = ReflectionUtils.Get <PartDesc.ShopCategory>("m_currentCategory", __instance);
                            switch (choice)
                            {
                            case 0:
                                SortOptions.Instance.setSortFor(currentCategory, SortBy.Default);
                                break;

                            case 1:
                                SortOptions.Instance.setSortFor(currentCategory, SortBy.NewestFirst);
                                break;

                            case 2:
                                SortOptions.Instance.setSortFor(currentCategory, SortBy.PriceAscending);
                                break;

                            case 3:
                                SortOptions.Instance.setSortFor(currentCategory, SortBy.PriceDescending);
                                break;

                            case 4:
                                SortOptions.Instance.setSortFor(currentCategory, SortBy.NameAscending);
                                break;

                            case 5:
                                SortOptions.Instance.setSortFor(currentCategory, SortBy.NameDescending);
                                break;

                            default:
                                SortOptions.Instance.setSortFor(currentCategory, SortBy.Default);
                                break;
                            }
                            __instance.ConstructInventory();
                        }
                                                                );
                    }
                    PartDesc.ShopCategory category = ReflectionUtils.Get <PartDesc.ShopCategory>("m_currentCategory", __instance);
                    sortDropdown.value = (int)SortOptions.Instance.forCategory(category);
                }
                catch (Exception e)
                {
                    PCBSModloader.ModLogs.Log(e.Message);
                    throw;
                }
            }
        }