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); }