@Override protected boolean computeValue() { Optional<ITradingOffice> optOffice = city.getPlayer().findTradingOffice(city.getCity()); IShip ship = null; if (city.getActiveShip() instanceof IShip) { ship = (IShip) city.getActiveShip(); } int barrelAmountFactor = 1; if (!trader.getWare().isBarrelSizedWare()) { barrelAmountFactor = 10; } return optOffice.isPresent() && ship == null && ship.getCapacity() < trader.getAmount() * barrelAmountFactor; } };
@PostConstruct private void initializeDialog() { setTitle(messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.TavernTraderDialog.title", new Object[]{}, locale.getCurrentLocal())); final IWare ware = trader.getWare(); String loadedText; if (ware.isBarrelSizedWare()) { parameters.put("amount", trader.getAmount()); parameters.put("price", trader.getAvgPricePerItem()); DecoratedText dt = decoratedTextFactory.createDecoratedText(loadedText, parameters); try { IHumanPlayer player = city.getPlayer(); int price = trader.getAmount() * trader.getAvgPricePerItem(); Optional<ITradingOffice> optOffice = city.getPlayer().findTradingOffice(city.getCity()); if (optOffice.isPresent()) { optOffice.get().move(trader.getWare(), trader.getAmount(), trader.getAvgPricePerItem()); } else { IShip ship = null; if (ship.getCapacity() >= trader.getAmount()) { ship.load(trader.getWare(), trader.getAmount(), trader.getAvgPricePerItem()); } else { acceptButton.setDisable(true); trader.leave(); executeOnCloseButtonClicked(); } catch (RuntimeException e) {
trader.setAmount(amount); double variance = rnd.nextDouble() * 0.25 - 0.125; int newPrice = (int) Math.abs(Math.rint(variance * computablePrice.sellPrice(ware, new SimpleIntegerProperty(availableAmount), new StaticIntegerBinding(amount)))); trader.setAvgPricePerItem(newPrice); trader.setWare(ware); } else if (person instanceof ISmuggler) { ISmuggler smuggler = (ISmuggler) person;