示例#1
0
    private void StateMachineUpdate()
    {
        switch (_gameState)
        {
        case EGameState.MENU:
        {
            _colorSchemeManager.RandomizeColorSceme();
            _backgroundGradient.SetColor(_colorSchemeManager.GetBGColors());
            _startCubeRenderer.material = _colorSchemeManager.GetCubeMaterial(0f);
            _cubeManager.OnScoreUpdate  = null;
            _uiController.UpdateScoreText(_highScore);
            _cubeManager.HandleMenuState();
            _cameraController.MoveCameraByBlockHeight(0f);
            _cameraController.ZoomInCamera();
            _onClick = () => ChangeState(EGameState.PLAY);
            _cubeManager.OnYUpdate = null;
            _cubeManager.OnFail    = null;
            break;
        }

        case EGameState.PLAY:
        {
            _score = 0;
            _uiController.UpdateScoreText(_score);
            _cameraController.ZoomInCamera();
            _cubeManager.HandleNewGame();
            _cubeManager.OnScoreUpdate = AddScore;
            _onClick = _cubeManager.HandleClick;
            _cubeManager.OnYUpdate = _cameraController.MoveCameraByBlockHeight;
            _cubeManager.OnFail    = () => ChangeState(EGameState.LOSE);
            break;
        }

        case EGameState.LOSE:
        {
            UpdateHighScore();
            _cubeManager.OnScoreUpdate = null;
            _cameraController.ZoomOutCamera(_cubeManager.LastCubeYPos);
            _onClick = () => ChangeState(EGameState.MENU);
            _cubeManager.OnYUpdate = null;
            _cubeManager.OnFail    = null;
            break;
        }
        }
    }