*/
BlockadeWallList checkAddWallsForDirection(BlockadeBoardPosition pos, PathList paths,
Direction direction) {
BlockadeBoard b = board;
BlockadeWallList wallsToCheck = new BlockadeWallList();
BlockadeBoardPosition westPos = pos.getNeighbor(Direction.WEST, b);
BlockadeBoardPosition eastPos = pos.getNeighbor(Direction.EAST, b);
BlockadeBoardPosition northPos = pos.getNeighbor(Direction.NORTH, b);
BlockadeBoardPosition southPos = pos.getNeighbor(Direction.SOUTH, b);
StraightWallChecker straightChecker = new StraightWallChecker(b);
DiagonalWallChecker diagonalChecker = new DiagonalWallChecker(b);
switch (direction) {
case EAST :
wallsToCheck = straightChecker.checkWallsForEast(eastPos, pos);
break;
case WEST :
wallsToCheck = straightChecker.checkWallsForWest(westPos, pos);
break;
case NORTH :
wallsToCheck = straightChecker.checkWallsForNorth(northPos, pos);
break;
case SOUTH :
wallsToCheck = straightChecker.checkWallsForSouth(southPos, pos);
break;
// There are 4 basic cases for all the diagonals.
case NORTH_WEST :
BlockadeBoardPosition northWestPos = pos.getNeighbor(Direction.NORTH_WEST, b);
wallsToCheck = diagonalChecker.checkWalls(northWestPos, northPos, westPos);
break;
case NORTH_EAST :
BlockadeBoardPosition northEastPos = pos.getNeighbor(Direction.NORTH_EAST, b);
wallsToCheck = diagonalChecker.checkWalls(northPos, northEastPos, pos);
break;
case SOUTH_WEST :
BlockadeBoardPosition southWestPos = pos.getNeighbor(Direction.SOUTH_WEST, b);
wallsToCheck = diagonalChecker.checkWalls(westPos, pos, southWestPos);
break;
case SOUTH_EAST :
wallsToCheck = diagonalChecker.checkWalls(pos, eastPos, southPos);
break;