private boolean placeUnit(Map map, Building building) { int minX = building.getX() - 1; int maxX = building.getX() + building.getType().getWidth(); int minY = building.getY() - 1; int maxY = building.getY() + building.getType().getHeight(); Tile freeTile = map.getNearestFreeTileForUnitPlacement(minX, maxX, minY, maxY); if (freeTile == null) { return false; } Unit unit = new Unit(); unit.setOwnerId(building.getOwnerId()); unit.setX(freeTile.getX()); unit.setY(freeTile.getY()); unit.setUnitType(unitType); ViewDirection unitDirection = ViewDirection.getDirection(unit.getPoint(), map.getClosestPoint(building, unit)); unit.setViewDirection(ViewDirection.getDirectionByAngle(unitDirection.getAngle() + 180)); if (unit.getUnitType() == UnitType.HARVESTER) { unit.setGoal(new Harvest()); } else { unit.addDefaultGoal(); } map.addUnit(unit); return true; }