Exemplo n.º 1
0
        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);
                }
            }
        }