public BoardEngine(IBoardSetup <TEntity> boardSetup,
                           IPathsValidator <TEntity> pathsValidator,
                           IBoardMoveService <TEntity> boardMoveService,
                           IRefreshAllPaths <TEntity> refreshAllPaths,
                           int currentPlayer)
        {
            CurrentPlayer     = currentPlayer;
            _boardMoveService = boardMoveService;

            BoardState = new BoardState <TEntity>(pathsValidator);

            _boardSetup = boardSetup;
            _boardSetup.SetupPieces(this);

            _refreshAllPaths = refreshAllPaths;
            _refreshAllPaths.RefreshAllPaths(BoardState, CurrentPlayer);
        }