public void OnEnterStage(GameStage newGameStage) { switch (newGameStage) { case GameStage.MainMenu: { GameUI.Instance.MainMenuUI.Show(); if (MusicMenuLoop != null) { AudioManager.Instance.FadeInSound(gameObject, MusicMenuLoop, 3.0f); } ResetGameStats(); } break; case GameStage.Settings: { GameUI.Instance.SettingsUI.Show(); CameraControllerStack.Instance.PushController(MenuCamera); } break; case GameStage.DayIntro: { PlayerCharacterController.Instance.Respawn(); GameUI.Instance.DayIntroUI.Show(); _dayIntroUIHander = GameUI.Instance.DayIntroUI.GetComponent<DayIntroUIHandler>(); CameraControllerStack.Instance.PushController(MenuCamera); _musicLowInstance = AudioManager.Instance.PlaySound(gameObject, MusicLow, 0); _musicMidInstance = AudioManager.Instance.PlaySound(gameObject, MusicMid, 0); _musicHighInstance = AudioManager.Instance.PlaySound(gameObject, MusicHigh, 0); DayIntroStarted?.Invoke(); } break; case GameStage.Daytime: { GameUI.Instance.DaytimeUI.Show(); _playerSanity.OnStartedDay(CurrentDay); _screamBank.OnStartedDay(CurrentDay); if (_currentDay == 0) { GameUI.Instance.DialogUI.ShowDialog("Looks like I crashed my boat again...time to explore!", 5, PlayerCharacterController.Instance.transform, Vector3.up * 3); } else if (_currentDay == 1) { GameUI.Instance.DialogUI.ShowDialog("Oh boy another day!", 5, PlayerCharacterController.Instance.transform, Vector3.up * 3); } else if (_currentDay == 2) { GameUI.Instance.DialogUI.ShowDialog("I feel like this might be my last day here!", 5, PlayerCharacterController.Instance.transform, Vector3.up * 3); } DaytimeStarted?.Invoke(); } break; case GameStage.DayOutro: { GameUI.Instance.DayOutroUI.Show(); _dayOutroUIHander = GameUI.Instance.DayOutroUI.GetComponent<DayOutroUIHandler>(); CameraControllerStack.Instance.PushController(MenuCamera); DayOutroStarted?.Invoke(); } break; case GameStage.WinGame: { GameUI.Instance.WinGameUI.Show(); CameraControllerStack.Instance.PushController(MenuCamera); if (WinAlert != null) { AudioManager.Instance.PlaySound(WinAlert); } } break; case GameStage.LoseGame: { GameUI.Instance.LoseGameUI.Show(); CameraControllerStack.Instance.PushController(MenuCamera); if (LoseAlert != null) { AudioManager.Instance.PlaySound(LoseAlert); } } break; } }
public void OnExitStage(GameStage oldGameStage, GameStage newGameStage) { switch (oldGameStage) { case GameStage.MainMenu: { if (MusicMenuLoop != null && newGameStage != GameStage.Settings) { AudioManager.Instance.FadeOutSound(gameObject, MusicMenuLoop, 3f); } CameraControllerStack.Instance.PopController(MenuCamera); GameUI.Instance.MainMenuUI.Hide(); } break; case GameStage.Settings: { CameraControllerStack.Instance.PopController(MenuCamera); GameUI.Instance.SettingsUI.Hide(); } break; case GameStage.DayIntro: { CameraControllerStack.Instance.PopController(MenuCamera); GameUI.Instance.DayIntroUI.Hide(); _dayIntroUIHander = null; } break; case GameStage.Daytime: { _playerSanity.OnCompletedDay(); _screamBank.OnCompletedDay(); AudioManager.Instance.FadeOutSound(gameObject, MusicLow, 3); AudioManager.Instance.FadeOutSound(gameObject, MusicMid, 3); AudioManager.Instance.FadeOutSound(gameObject, MusicHigh, 3); GameUI.Instance.DaytimeUI.Hide(); } break; case GameStage.DayOutro: { CameraControllerStack.Instance.PopController(MenuCamera); // Move on to the next day! _currentDay++; GameUI.Instance.DayOutroUI.Hide(); _dayOutroUIHander = null; } break; case GameStage.WinGame: { CameraControllerStack.Instance.PopController(MenuCamera); GameUI.Instance.WinGameUI.Hide(); } break; case GameStage.LoseGame: { CameraControllerStack.Instance.PopController(MenuCamera); GameUI.Instance.LoseGameUI.Hide(); } break; } }