@Override protected EventHandler<MouseEvent> createAcceptHandler() { return mouseEvent -> { try { List<IShip> ships = newArrayList(city.getPlayersShips()); // we need a copy Collections.shuffle(ships); ITransportTrader trader = (ITransportTrader) currentPerson.get(); for (IShip ship : ships) { final int neededCapacity = trader.getNeededCapacity(); if (ship.getCapacity() > neededCapacity * 10) { ship.setOccupiedSpace(neededCapacity); int minutes = rnd.nextInt(600); LocalDateTime postMessage = date.getCurrentDate().plusMinutes(minutes); taskFactory.getPostponedDisplayMessage(postMessage, "ch.sahits.game.openpatrician.display.dialog.TavernTransportTraderDialog.acceptMessage", trader.getDestination().getName(), ship.getName()); trader.leave(); eventHandlerFactory.getUnloadOnArrivalHandler(ship, trader.getDestination(), neededCapacity); break; } } executeOnCloseButtonClicked(); } catch (RuntimeException e) { logger.error("Failed to accept transportation offer", e); } }; }
@PostConstruct private void initializeDialog() { setTitle(messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.TavernTransportTraderDialog.title", new Object[]{}, locale.getCurrentLocal())); initializeButtons(); ITransportTrader trader = (ITransportTrader) currentPerson.get(); String loadedText = messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.TavernTransportTraderDialog.dialog", new Object[]{city.getCity().getName(), trader.getDestination().getName()}, locale.getCurrentLocal()); HashMap<String, Object> parameters = new HashMap<>(); parameters.put("amount", trader.getNeededCapacity()); DecoratedText dt = decoratedTextFactory.createDecoratedText(loadedText, parameters); getContent().addAll(dt); }
} else if (person instanceof ITransportTrader) { ITransportTrader transportTrader = (ITransportTrader) person; transportTrader.setName(firstNameLoader.getRandomName() + " " + lastNameLoader.getRandomName()); transportTrader.setPremium(rnd.nextInt(700) + 300); transportTrader.setNeededCapacity(rnd.nextInt(40) + 4); List<ICity> visited = new ArrayList<>(); visited.add(city); ICity next = cityUtils.findNearbyCityRepeated(city, 1, 1024, visited); transportTrader.setDestination(next); } else if (person instanceof ITrader) { ITrader trader = (ITrader) person;
@Override protected boolean computeValue() { ITransportTrader trader = (ITransportTrader) currentPerson.get(); return tavernDialogUtil.noShipWithEnoughCapacityAvailable(city, trader.getNeededCapacity()); } };