private void checkScoutValidity(StrategyBoard gameBoard, PlayerColor currentTurn, PieceType movePiece, 
			Location moveFromLocation, Location moveToLocation) throws StrategyException
	{
		final int distance = moveFromLocation.distanceTo(moveToLocation);
		
		if (gameBoard.getPieceAt(moveToLocation) != null && distance > 1) {
			throw new StrategyException("Scout cannot move and strike on the same turn");
		}
		
		final boolean verticalMove = 
				moveFromLocation.getCoordinate(Coordinate.X_COORDINATE) == moveToLocation.getCoordinate(Coordinate.X_COORDINATE);
		final boolean forward = verticalMove ? moveFromLocation.getCoordinate(Coordinate.Y_COORDINATE) 
				< moveToLocation.getCoordinate(Coordinate.Y_COORDINATE) : 
					moveFromLocation.getCoordinate(Coordinate.X_COORDINATE) < moveToLocation.getCoordinate(Coordinate.X_COORDINATE);
		
		//Check every spot to the to location.
		Location2D nextCoordinate;
		final int startX = moveFromLocation.getCoordinate(Coordinate.X_COORDINATE);
		final int startY = moveFromLocation.getCoordinate(Coordinate.Y_COORDINATE);
		
		final int step = forward ? 1 : -1;
		final int start = verticalMove ? startY : startX; //start at the next spot
		final int stop = verticalMove ? startY + step * distance : startX + step * distance;
		for(int i = start + step; i != stop ; i += step)
		{
			
			nextCoordinate = verticalMove ? new Location2D(startX, i) : new Location2D(i, startY);
				
			if (gameBoard.getPieceAt(nextCoordinate) != null) {
				throw new StrategyException("Cannot move scout through another piece");
			}
		}
	}