public void Interact(PlayerController player)
 {
     if (IsValidForUse())
     {
         if (IsSecretGlitchFloorPit)
         {
             ExpandUtility.RatDungeon = DungeonDatabase.GetOrLoadByName("Base_ResourcefulRat");
             ExpandUtility.RatDungeon.LevelOverrideType = GameManager.LevelOverrideState.NONE;
             ExpandPrefabs.InitCanyonTileSet(ExpandUtility.RatDungeon, GlobalDungeonData.ValidTilesets.PHOBOSGEON);
             GameManager.Instance.StartCoroutine(ExpandUtility.DelayedGlitchLevelLoad(1f, "SecretGlitchFloor_Flow", true));
         }
         else
         {
             GameManager.Instance.LoadCustomLevel(targetLevelName);
         }
     }
 }
        private void TransitionToDepart(tk2dSpriteAnimator animator, tk2dSpriteAnimationClip clip)
        {
            GameManager.Instance.MainCameraController.DoDelayedScreenShake(departureShake, 0.25f, null);
            if (!m_depatureIsPlayerless)
            {
                for (int i = 0; i < GameManager.Instance.AllPlayers.Length; i++)
                {
                    GameManager.Instance.AllPlayers[i].PrepareForSceneTransition();
                }
                float delay = 0.5f;
                Pixelator.Instance.FadeToBlack(delay, false, 0f);
                GameUIRoot.Instance.HideCoreUI(string.Empty);
                GameUIRoot.Instance.ToggleLowerPanels(false, false, string.Empty);
                if (GameManager.Instance.CurrentGameMode == GameManager.GameMode.SUPERBOSSRUSH)
                {
                    GameManager.Instance.DelayedLoadBossrushFloor(delay);
                }
                else if (GameManager.Instance.CurrentGameMode == GameManager.GameMode.BOSSRUSH)
                {
                    GameManager.Instance.DelayedLoadBossrushFloor(delay);
                }
                else
                {
                    if (!GameManager.Instance.IsFoyer && GameManager.Instance.CurrentLevelOverrideState == GameManager.LevelOverrideState.NONE)
                    {
                        GlobalDungeonData.ValidTilesets nextTileset = GameManager.Instance.GetNextTileset(GameManager.Instance.Dungeon.tileIndices.tilesetId);
                        GameManager.DoMidgameSave(nextTileset);
                    }
                    if (IsGlitchElevator)
                    {
                        ExpandSettings.elevatorHasBeenUsed = true;
                        GameManager.Instance.StartCoroutine(ExpandUtility.DelayedGlitchLevelLoad(delay, BraveUtility.RandomElement(ExpandDungeonFlow.GlitchChestFlows), BraveUtility.RandomBool()));
                    }
                    else if (UsesOverrideTargetFloor)
                    {
                        GlobalDungeonData.ValidTilesets overrideTargetFloor = OverrideTargetFloor;
                        if (!string.IsNullOrEmpty(OverrideTargetFlorDungeonFlow))
                        {
                            GameManager.Instance.InjectedFlowPath = OverrideTargetFlorDungeonFlow;
                        }
                        switch (overrideTargetFloor)
                        {
                        case GlobalDungeonData.ValidTilesets.CASTLEGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_castle");
                            break;

                        case GlobalDungeonData.ValidTilesets.SEWERGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_sewer");
                            break;

                        case GlobalDungeonData.ValidTilesets.JUNGLEGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_jungle");
                            break;

                        case GlobalDungeonData.ValidTilesets.GUNGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt5");
                            break;

                        case GlobalDungeonData.ValidTilesets.CATHEDRALGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_cathedral");
                            break;

                        case GlobalDungeonData.ValidTilesets.BELLYGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_belly");
                            break;

                        case GlobalDungeonData.ValidTilesets.MINEGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_mines");
                            break;

                        case GlobalDungeonData.ValidTilesets.RATGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "ss_resourcefulrat");
                            break;

                        case GlobalDungeonData.ValidTilesets.CATACOMBGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_catacombs");
                            break;

                        case GlobalDungeonData.ValidTilesets.OFFICEGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_nakatomi");
                            break;

                        case GlobalDungeonData.ValidTilesets.WESTGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_west");
                            break;

                        case GlobalDungeonData.ValidTilesets.FORGEGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_forge");
                            break;

                        case GlobalDungeonData.ValidTilesets.HELLGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_bullethell");
                            break;

                        case GlobalDungeonData.ValidTilesets.SPACEGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_space");
                            break;

                        case GlobalDungeonData.ValidTilesets.PHOBOSGEON:
                            GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_phobos");
                            break;

                        case GlobalDungeonData.ValidTilesets.FINALGEON:     // Use FINALGEON to specify a name that does not have a matching tilesetID
                            GameManager.Instance.DelayedLoadCustomLevel(delay, OverrideExactLevelName);
                            break;
                        }
                    }
                    else
                    {
                        GameManager.Instance.DelayedLoadNextLevel(delay);
                    }
                    AkSoundEngine.PostEvent("Stop_MUS_All", gameObject);
                }
            }
            elevatorFloor.SetActive(false);
            animator.AnimationCompleted = (Action <tk2dSpriteAnimator, tk2dSpriteAnimationClip>)Delegate.Remove(animator.AnimationCompleted, new Action <tk2dSpriteAnimator, tk2dSpriteAnimationClip>(TransitionToDepart));
            animator.PlayAndDisableObject(elevatorDepartAnimName, null);
        }
 private void TransitionToDepart(tk2dSpriteAnimator animator, tk2dSpriteAnimationClip clip)
 {
     GameManager.Instance.MainCameraController.DoDelayedScreenShake(departureShake, 0.25f, null);
     if (!m_depatureIsPlayerless)
     {
         for (int i = 0; i < GameManager.Instance.AllPlayers.Length; i++)
         {
             GameManager.Instance.AllPlayers[i].PrepareForSceneTransition();
         }
         float delay = 0.5f;
         Pixelator.Instance.FadeToBlack(delay, false, 0f);
         GameUIRoot.Instance.HideCoreUI(string.Empty);
         GameUIRoot.Instance.ToggleLowerPanels(false, false, string.Empty);
         if (GameManager.Instance.CurrentGameMode == GameManager.GameMode.SUPERBOSSRUSH)
         {
             GameManager.Instance.DelayedLoadBossrushFloor(delay);
         }
         else if (GameManager.Instance.CurrentGameMode == GameManager.GameMode.BOSSRUSH)
         {
             GameManager.Instance.DelayedLoadBossrushFloor(delay);
         }
         else
         {
             if (!GameManager.Instance.IsFoyer && GameManager.Instance.CurrentLevelOverrideState == GameManager.LevelOverrideState.NONE)
             {
                 GlobalDungeonData.ValidTilesets nextTileset = GameManager.Instance.GetNextTileset(GameManager.Instance.Dungeon.tileIndices.tilesetId);
                 GameManager.DoMidgameSave(nextTileset);
             }
             if (UsesOverrideTargetFloor)
             {
                 GlobalDungeonData.ValidTilesets overrideTargetFloor = OverrideTargetFloor;
                 if (overrideTargetFloor == GlobalDungeonData.ValidTilesets.CATACOMBGEON)
                 {
                     GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_catacombs");
                 }
                 else if (overrideTargetFloor == GlobalDungeonData.ValidTilesets.FORGEGEON)
                 {
                     GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_forge");
                 }
                 else if (overrideTargetFloor == GlobalDungeonData.ValidTilesets.OFFICEGEON)
                 {
                     ExpandStats.elevatorHasBeenUsed = true;
                     if (BraveUtility.RandomBool())
                     {
                         GameManager.Instance.InjectedFlowPath = BraveUtility.RandomElement(ExpandDungeonFlow.GlitchChestFlows);
                         GameManager.Instance.DelayedLoadNextLevel(delay);
                     }
                     else
                     {
                         GameManager.Instance.StartCoroutine(ExpandUtility.DelayedGlitchLevelLoad(delay, BraveUtility.RandomElement(ExpandDungeonFlow.GlitchChestFlows), useNakatomiTileset: BraveUtility.RandomBool()));
                     }
                 }
                 else if (overrideTargetFloor == GlobalDungeonData.ValidTilesets.WESTGEON)
                 {
                     GameManager.Instance.DelayedLoadCustomLevel(delay, "tt_west");
                     // GameManager.Instance.StartCoroutine(ExpandUtility.DelayedGlitchLevelLoad(delay, "SecretGlitchFloor_Flow", true));
                 }
                 else
                 {
                     GameManager.Instance.DelayedLoadNextLevel(delay);
                 }
             }
             else
             {
                 GameManager.Instance.DelayedLoadNextLevel(delay);
             }
             AkSoundEngine.PostEvent("Stop_MUS_All", gameObject);
         }
     }
     elevatorFloor.SetActive(false);
     animator.AnimationCompleted = (Action <tk2dSpriteAnimator, tk2dSpriteAnimationClip>)Delegate.Remove(animator.AnimationCompleted, new Action <tk2dSpriteAnimator, tk2dSpriteAnimationClip>(TransitionToDepart));
     animator.PlayAndDisableObject(elevatorDepartAnimName, null);
 }