Esempio n. 1
0
    private void Start()
    {
        // 状態が変わった時にだけ呼び出される
        this.UpdateAsObservable()
        .Select(_ => _state)
        .DistinctUntilChanged()
        .Subscribe(_ =>
        {
            switch (_)
            {
            case GameState.Title:
                {
                    break;
                }

            case GameState.Initialize:
                {
                    _cameraView.ChangeBloom(1, 1.25f);
                    _cameraView.ChangeDepthOfField(5, 1.5f);
                    _player.Initialize();
                    break;
                }

            case GameState.Game:
                {
                    break;
                }

            case GameState.Retry:
                {
                    _cameraView.ChangeDepthOfField(3, .5f);
                    FloorManager.Instance.Retry();
                    _player.JumpUp();
                    _player.Restore();
                    break;
                }

            case GameState.FloorUp:
                {
                    FloorManager.Instance.FloorUp();
                    _player.JumpUp();
                    break;
                }

            case GameState.Upgrade:
                {
                    _upgradController.Setup();
                    break;
                }

            case GameState.GameOver:
                {
                    if (Time.timeScale != 1)
                    {
                        Time.timeScale = 1;
                        CameraVignette(0.25f, 0.7f);
                    }

                    _cameraView.ChangeDepthOfField(2, .5f);
                    _gameOverController.GameOver();
                    break;
                }

            case GameState.GameClear:
                {
                    if (Time.timeScale != 1)
                    {
                        Time.timeScale = 1;
                        CameraVignette(0.25f, 0.7f);
                    }

                    _cameraView.ChangeBloom(5, 0.5f);
                    _cameraView.ChangeDepthOfField(1, 1f);
                    _gameClearController.GameClear(_player.GetTotalTime(), _player.GetCoin());
                    break;
                }

            case GameState.Restart:
                {
                    _cameraView.ChangeBloom(50, 0.25f);
                    _cameraView.ChangeDepthOfField(5, 2f);

                    FloorManager.Instance.Restart();
                    _player.JumpUp();
                    _player.Restart();

                    break;
                }
            }
        });
    }