public override ReadOnlyCollection<Move> GetValidMoves(Position from, bool returnIfAny, ChessGame game, Func<Move, bool> gameMoveValidator) { ChessUtilities.ThrowIfNull(from, "from"); ReadOnlyCollection<Move> horizontalVerticalMoves = new Rook(Owner).GetValidMoves(from, returnIfAny, game, gameMoveValidator); if (returnIfAny && horizontalVerticalMoves.Count > 0) return horizontalVerticalMoves; ReadOnlyCollection<Move> diagonalMoves = new Bishop(Owner).GetValidMoves(from, returnIfAny, game, gameMoveValidator); return new ReadOnlyCollection<Move>(horizontalVerticalMoves.Concat(diagonalMoves).ToList()); }
public override ReadOnlyCollection <Move> GetValidMoves(Position from, bool returnIfAny, ChessGame game, Func <Move, bool> gameMoveValidator) { ChessUtilities.ThrowIfNull(from, nameof(from)); ReadOnlyCollection <Move> horizontalVerticalMoves = new Rook(Owner).GetValidMoves(from, returnIfAny, game, gameMoveValidator); if (returnIfAny && horizontalVerticalMoves.Count > 0) { return(horizontalVerticalMoves); } ReadOnlyCollection <Move> diagonalMoves = new Bishop(Owner).GetValidMoves(from, returnIfAny, game, gameMoveValidator); return(new ReadOnlyCollection <Move>(horizontalVerticalMoves.Concat(diagonalMoves).ToList())); }
public override ReadOnlyCollection <Move> GetValidMoves(Square from, bool returnIfAny, ChessGame game) { ChessUtilities.ThrowIfNull(from, nameof(from)); var horizontalVerticalMoves = new Rook(Owner).GetValidMoves(from, returnIfAny, game); if (returnIfAny && horizontalVerticalMoves.Count > 0) { return(horizontalVerticalMoves); } var diagonalMoves = new Bishop(Owner).GetValidMoves(from, returnIfAny, game); return(new ReadOnlyCollection <Move>(horizontalVerticalMoves.Concat(diagonalMoves).ToList())); }