Пример #1
0
    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;
        }
    }
Пример #2
0
    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;
        }
    }