public void initializeNewBlockade(ICity city) {
LocalDateTime assemblyDate = date.getCurrentDate().plusDays(21);
int variance = rnd.nextInt(120) - 60;
LocalDateTime endBlockage = assemblyDate.plusDays(120 + variance);
Blockade blockade = (Blockade) context.getBean("blockade", assemblyDate, endBlockage);
ICity assemblyPoint = mapService.getAldermanCity();
boolean anyShipRequested = false;
for (IPlayer player : players) {
int fleetSize = player.getFleet().size();
int nbShips = Math.min(fleetSize/10, 3);
if (nbShips > 0) {
anyShipRequested = true;
blockade.requestShip(player, nbShips);
if (player instanceof IHumanPlayer) {
String dateAsString = modelTranslationService.toDisplayString(assemblyDate);
DisplayMessage msg = new DisplayMessage("ch.sahits.game.openpatrician.engine.sea.BlockadeEngine.blockadeRequest", new Object[]{city.getName(), nbShips, dateAsString, assemblyPoint.getName()});
TargetedEvent targetMsg = new TargetedEvent((IHumanPlayer) player, msg);
clientServerEventBus.post(targetMsg);
} else {
BlockadeShipRequestEvent event = new BlockadeShipRequestEvent(assemblyPoint, nbShips, (IAIPlayer) player);
clientServerEventBus.post(event);
}
}
}
if (anyShipRequested) {
blockadeState.addBlockade(city, blockade);
}
}