public static bool ScrollingMenu_SortUnlocks(ScrollingMenu __instance, List <Unlock> myUnlockList, List <Unlock> ___listUnlocks) { List <DisplayedUnlock> displayedList = myUnlockList.ConvertAll(u => (DisplayedUnlock)u.__RogueLibsCustom); if (__instance.menuType == "FreeItems") { displayedList.RemoveAll(u => u is ItemUnlock itemUnlock && !itemUnlock.IsAvailableInItemTeleporter); } displayedList.Sort(); CustomScrollingMenu menu = new CustomScrollingMenu(__instance, displayedList); if (RogueFramework.IsDebugEnabled(DebugFlags.UnlockMenus)) { RogueFramework.LogDebug($"Setting up \"{menu.Type}\" menu."); } ___listUnlocks.Clear(); ___listUnlocks.AddRange(menu.Unlocks.Select(du => du.Unlock)); foreach (DisplayedUnlock du in menu.Unlocks) { du.Menu = menu; } if (menu.Type == UnlocksMenuType.Loadouts) { reRollLoadouts.Menu = menu; ___listUnlocks.Insert(0, reRollLoadouts.Unlock); if (RogueFramework.IsDebugEnabled(DebugFlags.EnableTools)) { RogueFramework.LogDebug("Adding \"GiveNuggets\" debug tool to the menu."); giveNuggets.Menu = menu; ___listUnlocks.Insert(0, giveNuggets.Unlock); } } if (menu.Type == UnlocksMenuType.MutatorMenu) { __instance.nuggetSlot.gameObject.SetActive(true); clearAllMutators.Menu = menu; ___listUnlocks.Insert(0, clearAllMutators.Unlock); } else if (menu.Type == UnlocksMenuType.RewardsMenu) { __instance.nuggetSlot.gameObject.SetActive(true); // clearAllItems.Menu = menu; // ___listUnlocks.Insert(0, clearAllItems.Unlock); } else if (menu.Type == UnlocksMenuType.TraitsMenu) { __instance.nuggetSlot.gameObject.SetActive(true); // clearAllTraits.Menu = menu; // ___listUnlocks.Insert(0, clearAllTraits.Unlock); } __instance.numButtons = ___listUnlocks.Count; return(false); }
public static void ScrollingMenu_OpenScrollingMenu(ScrollingMenu __instance, ref float __state, List <Unlock> ___listUnlocks) { __instance.numButtons = ___listUnlocks.Count; float x = __state / (__instance.numButtons - __instance.numButtonsOnScreen + 1f); bool debug = RogueFramework.IsDebugEnabled(DebugFlags.UnlockMenus); if (debug) { RogueFramework.LogDebug($"Restoring menu's scrolling value of {__state} units."); } __instance.StartCoroutine(EnsureScrollbarValue(__instance, Mathf.Clamp01(1f - x))); if (__instance.menuType == "Challenges" || __instance.menuType == "FreeItems") { __instance.nuggetSlot.gameObject.SetActive(true); } else if (__instance.menuType == "Floors") { if (debug) { RogueFramework.LogDebug("Setting up \"Floors\" menu."); } List <DisplayedUnlock> displayedUnlocks = GameController.gameController.sessionDataBig.floorUnlocks.Select(u => (DisplayedUnlock)u.__RogueLibsCustom).OrderBy(d => d).ToList(); CustomScrollingMenu menu = new CustomScrollingMenu(__instance, displayedUnlocks); foreach (DisplayedUnlock du in displayedUnlocks.ToList()) { if (!du.IsAvailable) { displayedUnlocks.Remove(du); __instance.buttonsData.Remove(du.ButtonData); __instance.numButtons--; } else { du.Menu = menu; } } foreach (ButtonData buttonData in __instance.buttonsData) { SetupUnlocks(buttonData, buttonData.scrollingButtonUnlock); } } else if (__instance.menuType == "Traits") { if (debug) { RogueFramework.LogDebug("Setting up \"Traits\" menu."); } __instance.numButtons = __instance.smallTraitList.Count; List <DisplayedUnlock> displayedUnlocks = __instance.smallTraitList.Select(u => (DisplayedUnlock)u.__RogueLibsCustom).OrderBy(d => d).ToList(); CustomScrollingMenu menu = new CustomScrollingMenu(__instance, displayedUnlocks); foreach (DisplayedUnlock du in displayedUnlocks) { du.Menu = menu; } foreach (ButtonData buttonData in __instance.buttonsData) { SetupUnlocks(buttonData, buttonData.scrollingButtonUnlock); } } else if (__instance.menuType == "RemoveTrait" || __instance.menuType == "ChangeTraitRandom" || __instance.menuType == "UpgradeTrait") { if (debug) { RogueFramework.LogDebug($"Setting up \"{__instance.menuType}\" menu."); } __instance.numButtons = __instance.customTraitList.Count; List <DisplayedUnlock> displayedUnlocks = __instance.customTraitList.Select(u => (DisplayedUnlock)u.__RogueLibsCustom).OrderBy(d => d).ToList(); CustomScrollingMenu menu = new CustomScrollingMenu(__instance, displayedUnlocks); foreach (DisplayedUnlock du in displayedUnlocks) { du.Menu = menu; } foreach (ButtonData buttonData in __instance.buttonsData) { SetupUnlocks(buttonData, buttonData.scrollingButtonUnlock); } } }