public Optional<IBuildLandPassage> createNewLandBridgeAldermanTask(IAldermanOffice office) {
List<IAcceptedAldermanTask> workedOnTasks = office.getWorkedOnTasks();
List<Pair<ICity, ICity>> tasks = new ArrayList<>();
for (IAcceptedAldermanTask workedOnTask : workedOnTasks) {
if (workedOnTask.getTask() instanceof IBuildLandPassage) {
final IBuildLandPassage concreteTask = (IBuildLandPassage) workedOnTask.getTask();
Pair<ICity, ICity> pair = new Pair<>(concreteTask.getFromCity(), concreteTask.getToCity());
tasks.add(pair);
}
}
ArrayList<ILandBridge> landBridges = new ArrayList<>(map.getLandbridges());
Collections.shuffle(landBridges);
for (ILandBridge landBridge : landBridges) {
Pair<ICity, ICity> pair = new Pair<>(landBridge.getFrom(), landBridge.getTo());
if (tasks.contains(pair)) {
continue;
}
int duration = 360;
IBuildLandPassage newPassage = (IBuildLandPassage) context.getBean("buildLandPassage", duration, landBridge.getFrom(), landBridge.getTo());
return Optional.of(newPassage);
}
return Optional.empty();
}