def get_free_movement_destinations(self, index):
    '\n        Get all allowed destinations for free movement for the piece at the specified square.\n        '
    own_color = self.owner[index]
    own_class = self.piece_class[index]
    visibility_range = (BoardConfig.board_dim if (own_class == PieceClass.KING) else 1)
    lines_of_sight = get_lines_of_sight(index, visibility_range)
    if ((own_class == PieceClass.MAN) and (own_color == Player.WHITE)):
        lines_of_sight = lines_of_sight[:2]
    if ((own_class == PieceClass.MAN) and (own_color == Player.BLACK)):
        lines_of_sight = lines_of_sight[(- 2):]
    result = []
    for line in lines_of_sight:
        for i in range(0, len(line)):
            if self.owner[line[i]]:
                break
            result.append(line[i])
    return result
Get all allowed destinations for free movement for the piece at the specified square.
def get_free_movement_destinations(self, index):
    '\n        \n        '
    own_color = self.owner[index]
    own_class = self.piece_class[index]
    visibility_range = (BoardConfig.board_dim if (own_class == PieceClass.KING) else 1)
    lines_of_sight = get_lines_of_sight(index, visibility_range)
    if ((own_class == PieceClass.MAN) and (own_color == Player.WHITE)):
        lines_of_sight = lines_of_sight[:2]
    if ((own_class == PieceClass.MAN) and (own_color == Player.BLACK)):
        lines_of_sight = lines_of_sight[(- 2):]
    result = []
    for line in lines_of_sight:
        for i in range(0, len(line)):
            if self.owner[line[i]]:
                break
            result.append(line[i])
    return result