@Override public boolean shouldOrderCelebration(IAIPlayer player, ICity city) { long cash = player.getCompany().getCash(); return cash > 100000; } }
@Override public boolean shouldTakeLoan(IAIPlayer player) { long cash = player.getCompany().getCash(); return cash < 5000; }
@Override public boolean acceptMarriagBrokereOffer(IAIPlayer player) { if (!player.getSpouseData().isPresent()) { long cash = player.getCompany().getCash(); return cash > 100000; } return false; }
/** * Create a standalone game * @param player identifing the human player UI */ public void startStandaloneGame(IPlayer player) { Preconditions.checkState(this.game != null, "The game has to be initialized first through startGame(IGame, int)"); // the client should be updated through communication channel. // Do we still need the client instance, as the model is created in the server and then replicated on the client? // create the player instances // initilaize the client // run this in the same thread as the user /* engine that handles the city events based on clock ticks */ CityEngine cityEngine = context.getBean(CityEngine.class); cityEngine.start(game); addEngine(cityEngine); createAndInitAIPlayers(numberOfPlayers - 1, player.getCompany().getCash()); AIPlayerEngine aiPlayerEngine = context.getBean(AIPlayerEngine.class); addEngine(aiPlayerEngine); addEngine(context.getBean(EventEngine.class)); logger.debug("Standalone Server created"); } /**
/** * {@inheritDoc} * Base requirements are: there has to be a guild, not yet a member and enough money to join. * @param player who should decide on joining * @param city where to join * @param vessel possible vessel in the city * @return */ @Override public boolean shouldJoin(IAIPlayer player, ICity city, Optional<INavigableVessel> vessel) { Optional<IGuild> maybeGuild = guildList.findGuild(city); if (maybeGuild.isPresent()) { IGuild guild = maybeGuild.get(); if (guild.getMembers().contains(player)) { return false; } else { ICompany company = player.getCompany(); int fee = guildService.getEntryFee(player); return fee * ENTRY_FEE_FACTOR < company.getCash() && additionalJoinRequirementsMet(player, city, vessel); } } return false; }
@Override public void run() { int bounty = (int)(Math.abs(opponent.getCompany().getCash()/2000*rnd.nextDouble())); if (opponent instanceof IHumanPlayer) { opponent.getCompany().updateCash(-bounty); } else { opponent.getCompany().updateCashDirectly(-bounty); } DisplayMessage msg = new DisplayMessage("ch.sahits.game.graphic.event.task.BreakInAction.message", bounty, opponent.getLastName()); clientEventBus.post(msg); }
@Override public boolean execute() { ICompany company = player.getCompany(); if (company.getCash() > cashLimit) { ILoaner loaner = loanerService.findLoaner(city); List<IDebt> debts = loanerService.findDebts(loaner, player); for (IDebt debt : debts) { // payback int debtTotal = loanerService.calculatePaybacksum(debt); debt.getCreditor().receiveSum(debtTotal); company.updateCashDirectly(-debtTotal); loaner.getDebts().remove(debt); if (company.getCash() < cashLimit) { break; } } } return true; } }
IAIPlayer player = iterator.next(); ICompany company = player.getCompany(); if (company.getCash() < auction.getStartingBid() * 3) { iterator.remove();
public boolean shouldOrderNewConstruction(IAIPlayer player) { ICompany company = player.getCompany(); if (company.getCash() < minCash) { return false;
/** * Check weather the vessel should return to the hometown * @param player for whom to check the returnal to the hometown * @param vessel which should return to the hometown * @return true if the vessle should return to the hometown */ @VisibleForTesting boolean shouldReturnToHometown(IAIPlayer player, INavigableVessel vessel) { if (player.getCompany().getCash() < lowMoney) { return true; } else { List<IWare> waresOfInterest = ((SupplyCityMissionData) player.getTradeMission(vessel)).getRequiredWares(); if (vessel.getCapacity() == 0) { for (EWare ware : EWare.values()) { if (vessel.getWare(ware).getAmount() > 0 && !waresOfInterest.contains(ware)) { return false; } } return true; } else { return false; } } }
long cash = player.getCompany().getCash(); int numberOfFreeSlots = getNumberOfEmptyWeaponSlots(ship); // also number of free small slots int numberOfFreeLargeSlots = getNumberOfEmptyLargeWeaponSlots(ship);
private EventHandler<MouseEvent> createAcceptHandler() { return mouseEvent -> { try { final ICompany company = city.getPlayer().getCompany(); long cash = company.getCash(); final IDebt debt = selectedDebt.get(); int debtTotal = loanerService.calculatePaybacksum(debt); if (cash < debtTotal) { clearContent(); addDecoratedText("ch.sahits.game.openpatrician.display.dialog.LoanerPaybackDialog.noRepay", "noRepay"); } else { debt.getCreditor().receiveSum(debtTotal); company.updateCash(-debtTotal); loaner.getDebts().remove(debt); executeOnCloseButtonClicked(); } } catch (RuntimeException e) { logger.error("Failed to pay back loan", e); } }; } /**
@Override public boolean execute() { int availableAmount = city.getWare(ware).getAmount(); int sellAmount = vessel.getWare(ware).getAmount(); if (sellAmount > 0) { int sellPrice = computablePrice.sellPrice(getWare(), new SimpleIntegerProperty(availableAmount), new ConstantIntegerBinding(sellAmount)); IAIPlayer player = (IAIPlayer) vessel.getOwner(); ICompany company = player.getCompany(); LOGGER.trace("Before: cash={}, in city={}, on ship={}", company.getCash(), city.getWare(ware).getAmount(), vessel.getWare(ware).getAmount()); company.updateCashDirectly(sellPrice * sellAmount); city.move(getWare(), sellAmount, player); vessel.load(getWare(), sellAmount, sellPrice); LOGGER.trace("Sold {} of {} for a total of: {} ", sellAmount, ware.name(), sellPrice * sellAmount); LOGGER.trace("After: cash={}, in city={}, on ship={}", company.getCash(), city.getWare(ware).getAmount(), vessel.getWare(ware).getAmount()); // TODO ahotz 20.05.2016: handle case where there are ships owned by other players in the convoy } return true; } }
@Override protected int computeValue() { int availableAmount = weaponsDealer.amountAvailableProperty(weapon).get(); int buyAmount = transferUtil.calculateAvailableAmount(amount, availableAmount); int affordableAmount = computablePrice.calculateAffordableAmount(weapon, availableAmount, buyAmount, city.getPlayer().getCompany().getCash()); if (affordableAmount>0) { return computablePrice.buyPrice(weapon, new SimpleIntegerProperty(availableAmount), new StaticIntegerBinding(affordableAmount)); } else { return 0; } } };
@Override public void run() { int penalty = (int)(Math.abs(player.getCompany().getCash()/(200*rnd.nextDouble()))); DisplayMessage msg = new DisplayMessage("ch.sahits.game.graphic.event.task.DelayedCaughtAction.message", penalty); clientEventBus.post(msg); ILoaner loaner = loaners.getLoaner(city); IDebt debt = Debt.builder() .amount(penalty) .dueDate(date.getCurrentDate().plusMonths(1)) .interest(0) .loanTakeOut(date.getCurrentDate()) .debitor(player) .creditor(new CityCreditor()) .build(); loaner.addDebt(debt); } }
@Override public boolean execute(ICity city) { ((IShip)getShip()).setOccupiedSpace(((IShip)getShip()).getOccupiedSpace() - amount); IPlayer owner = (IPlayer) getShip().getOwner(); if (rnd.nextBoolean()) { int penalty = (int)(Math.abs(owner.getCompany().getCash()/200*rnd.nextDouble())); DisplayMessage msg = new DisplayMessage("ch.sahits.game.event.handler.impl.DeliverPackages.messageCaught", penalty); clientEventBus.post(msg); if (owner instanceof IHumanPlayer) { owner.getCompany().updateCash(-penalty); } else { owner.getCompany().updateCashDirectly(-penalty); } } else { if (owner instanceof IHumanPlayer) { owner.getCompany().updateCash(premium); } else { owner.getCompany().updateCashDirectly(premium); } DisplayMessage msg = new DisplayMessage("ch.sahits.game.event.handler.impl.DeliverPackages.messageSuccess"); clientEventBus.post(msg); } unregisterEventBus(); return false; } @Override
for (IPlayer player : players) { ICompany company = player.getCompany(); long newCompanyValue = company.getCash();
@Override public void run() { IHumanPlayer debitor = (IHumanPlayer) debt.getDebitor(); ICompany company = debitor.getCompany(); int requiredAmount = debt.getAmount(); int amount = (int) Math.min(requiredAmount, company.getCash()); company.updateCash(-amount); if (debt.getCreditor() instanceof IPlayer) { if (debt.getCreditor() instanceof IHumanPlayer) { ((IPlayer) debt.getCreditor()).getCompany().updateCash(amount); } else { ((IPlayer) debt.getCreditor()).getCompany().updateCashDirectly(amount); } if (debt.getCreditor() instanceof IHumanPlayer) { DisplayMessage msg = new DisplayMessage("ch.sahits.game.openpatrician.engine.land.city.LoanerEngine.paybackAfterShipAuction", new Object[]{debitor.getName(), debitor.getLastName(), amount}); TargetedEvent message = new TargetedEvent((IHumanPlayer) debt.getCreditor(), msg); clientServerEventBus.post(message); } } } }
@Override public void run() { ICompany company = debitor.getCompany(); int requiredAmount = debt.getAmount(); int amount = (int) Math.min(requiredAmount, company.getCash()); if (debitor instanceof IHumanPlayer) { company.updateCash(-amount); } else { company.updateCashDirectly(-amount); } if (debt.getCreditor() instanceof IPlayer) { if (debt.getCreditor() instanceof IHumanPlayer) { ((IPlayer) debt.getCreditor()).getCompany().updateCash(amount); } else { ((IPlayer) debt.getCreditor()).getCompany().updateCashDirectly(amount); } if (debt.getCreditor() instanceof IHumanPlayer) { DisplayMessage msg = new DisplayMessage("ch.sahits.game.openpatrician.engine.land.city.LoanerEngine.paybackAfterWithoutAuction", new Object[]{debitor.getName(), debitor.getLastName(), amount}); TargetedEvent message = new TargetedEvent((IHumanPlayer) debt.getCreditor(), msg); clientServerEventBus.post(message); } } } }