@Override protected boolean computeValue() { ITransportTrader trader = (ITransportTrader) currentPerson.get(); return tavernDialogUtil.noShipWithEnoughCapacityAvailable(city, trader.getNeededCapacity()); } };
@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); }
@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); } }; }