}
if (m instanceof Barn) {
power[m.getPlayer().getIndex()] += 1;
}
}
Position pos = f.getTile().getPosition();
if (pos.x < x) {
if (x != Integer.MAX_VALUE) result.area.transform(AffineTransform.getTranslateInstance(FULL_SIZE * (x-pos.x), 0));
x = pos.x;
}
if (pos.y < y) {
if (y != Integer.MAX_VALUE) result.area.transform(AffineTransform.getTranslateInstance(0, FULL_SIZE * (y-pos.y)));
y = pos.y;
}
Map<Location, Area> tileAreas = areas.get(f.getTile());
if (tileAreas != null) { //sync issue, feature can be extended in other thread, so it is not registered in areas yet
Area featureArea = new Area(tileAreas.get(f.getLocation()));
featureArea.transform(AffineTransform.getTranslateInstance(FULL_SIZE * (pos.x-x), FULL_SIZE*(pos.y-y)));
result.area.add(featureArea);
}
return true;
}
@Override
public FarmHint getResult() {
result.position = new Position(x, y);
int bestPower = 0;
List<Integer> bestPlayerIndexes = new ArrayList<>();
for (int i = 0; i < power.length; i++) {
if (power[i] == bestPower) {