public void ResetGame()
 {
     ScoreController.ResetScore();
     LevelController.Reset();
     LivesController.ResetLives();
     ResetPaddlePosition();
     ClearBricks();
     GenerateCurrentLevel();
 }
        private void Awake()
        {
            _playerInputController = GetComponent <PlayerInputController>();

            var brickFactoryGameObject = Instantiate(_brickFactoryPrefab);

            brickFactoryGameObject.name = _brickFactoryPrefab.name;
            _brickFactory = brickFactoryGameObject.GetComponent <BrickFactory>();

            var ballFactoryGameObject = Instantiate(_ballFactoryPrefab);

            ballFactoryGameObject.name = _ballFactoryPrefab.name;
            _ballFactory = ballFactoryGameObject.GetComponent <BallFactory>();

            _bricksController                 = new BricksController();
            _bricksController.BrickHit       += OnBrickHit;
            _bricksController.BrickDestroyed += OnBrickDestroy;
            _livesController = new LivesController();
            _scoreController = new ScoreController();
            _levelController = new LevelController();

            _stateMachine = new BreakoutGameStateMachine();
        }
 public void ResetLives()
 {
     LivesController.ResetLives();
 }
 public void RemoveLife()
 {
     LivesController.RemoveLife();
 }