public List<Position> getDestinations(Position start, Player.Orientation orientation, Board board) {
        List< Position> destinations = new ArrayList<Position>();

        int xDest = start.getX();
        int yDest = start.getY();

        int xShift, yShift;
        if (orientation == Player.Orientation.UP) {
            xShift = direction.getX();
            yShift = direction.getY();
        } else {
            xShift = - direction.getX();
            yShift = - direction.getY();
        }

        if (capture == false) {
            while (true) {
                xDest += xShift;
                yDest += yShift;

                Piece piece = board.getPiece(xDest, yDest);
                if (piece == null || piece.getPieceType() != null) {
                    break;
                } else {
                    destinations.add(new Position(xDest, yDest));
                }
            }
        } else {
            while (true) {
                xDest += xShift;
                yDest += yShift;

                Piece piece = board.getPiece(xDest, yDest);
                if (piece == null) {
                    break;
                } else if (piece.getPieceType() != null) {
                    if (!board.getPiece(start).getPlayer().equals(piece.getPlayer())) {
                        destinations.add(new Position(xDest, yDest));
                    }
                    break;
                } else {
                    continue;
                }
            }
        }

        return destinations;
    }