@Override public void join(IAIPlayer player, ICity city) { ICompany company = player.getCompany(); Optional<IGuild> maybeGuild = guildList.findGuild(city); IGuild guild = maybeGuild.get(); int fee = guildService.getEntryFee(player); company.updateCashDirectly(-fee); guild.join(player); } }
/** * {@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; }
IPlayer player = proxy.getPlayer(); ICity city = proxy.getCity(); Optional<IGuild> guildOpt = guildList.findGuild(city);
private EventHandler<MouseEvent> joinGuild(final IHumanPlayer player,final ICity city, final int fee) { return mouseEvent -> { try { ICompany company = player.getCompany(); company.updateCash(-fee); IGuild guild = guildList.findGuild(city).get(); guild.join(player); ViewChangeCityPlayerProxyJFX proxy = new ViewChangeCityPlayerProxyJFX(this.city, EViewChangeEvent.MAIN_VIEW_GUILD); clientEventBus.post(new NoticeBoardUpdate(proxy)); executeOnCloseButtonClicked(); } catch (RuntimeException e) { logger.error("Failed to join the quild", e); } }; } }
private boolean isNextRankAchievable(IPlayer player){ ESocialRank rank = player.getRank(); if (rank==ESocialRank.PATRICIAN || rank==ESocialRank.MAYOR || rank==ESocialRank.ALDERMAN){ return false; } final ICompany company = player.getCompany(); ICity homeTown = player.getHometown(); long compValue = company.getCompanyValue(); ESocialRank nextRank = rank.getNextRank(); double remapedRep = repCalculator.remapReputation(homeTown, player); if (compValue>=nextRank.getCompanyValue() && remapedRep>=nextRank.getSocialRank()){ if (nextRank==ESocialRank.COUNCILMAN){ IGuild guild = guildList.findGuild(homeTown).get(); return guild.getMembers().contains(player); } return true; } return false; }
@Subscribe public void handleBlockadeConvoyReturns(ShipEntersPortEvent event) { // disolve the convoy and remove blockade from blockade state INavigableVessel vessel = event.getShip(); if (vessel instanceof IConvoy) { LocalDateTime now = date.getCurrentDate(); ICity aldermanCity = mapService.getAldermanCity(); for (Entry<ICity, IBlockade> blockadeEntry : blockadeState.entrySet()) { IBlockade blockade = blockadeEntry.getValue(); if (blockade.getEndBlockade().isBefore(now)) { IConvoy convoy = blockade.getBlockadeConvoy(); if (convoy.equals(vessel) && event.getCity().equals(aldermanCity)) { final ICity blockadedCity = blockadeEntry.getKey(); dissolveConvoy(blockade, aldermanCity, blockadedCity); blockadeState.finishBlockade(blockadedCity); IGuild guild = guildList.findGuild(aldermanCity).get(); for (IShip ship : blockade.getShipsToAuction()) { LocalDateTime auctionDate = now.plusDays(10); auctionDate = guildService.cleanUpAuctionAndDetermineAuctionDate(auctionDate, guild); IShipAuction auction = modelFactory.createAnonymousShipAuction(auctionDate, ship.getValue(), ship); guild.getAuctions().add(auction); } return; } } } } }
@PostConstruct private void initializeDialog() { setTitle(messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.guild.GuildMembersDialog.title", new Object[]{}, locale.getCurrentLocal())); ICity city = this.city.getCity(); IGuild guild = guildList.findGuild(city).get(); if (guild.getMembers().isEmpty()) { String template = messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.guild.GuildMembersDialog.noMembers", new Object[]{city.getName()}, locale.getCurrentLocal()); DecoratedText text = textFactory.createDecoratedText(template, new HashMap<>()); text.setId("noMembers"); box = new VBox(text); box.setLayoutY(CLOSE_BTN_Y_POS - 500); getContent().addAll(box); } else { List<IPlayer> members = guild.getMembers(); List<IItemNavigatorLabelWrapper<IPlayer>> wrappedList = itemWrapperFactory.createNonLabeledListForPlayer(members); ItemNavigator<IPlayer> itemNavigator = new ItemNavigator<>(wrappedList); initializeContent(itemNavigator); if (members.size() > 1) { Group centerPane = dialogHelper.center(itemNavigator); box.getChildren().addAll(dialogHelper.createVerticalSpacer(50), centerPane); } } }
@VisibleForTesting void pawnFromHumanDebitor(final IDebt debt, final ICity city) { // pawn a ship and auction it int sum = (int) (debt.getAmount() * debt.getInterest()); final IPlayer debitor = (IPlayer) debt.getDebitor(); IShip shipMatch = null; int maxDelta = Integer.MAX_VALUE; for (IShip ship : debitor.getFleet()) { int shipValue = ship.getValue(); if (Math.abs(shipValue - sum) < maxDelta) { maxDelta = Math.abs(shipValue - sum); shipMatch = ship; } } if (shipMatch != null) { LocalDateTime auctionDate = date.getCurrentDate().plusDays(10); // Add auction to guild IGuild guild = guildList.findGuild(city).get(); auctionDate = guildService.cleanUpAuctionAndDetermineAuctionDate(auctionDate, guild); IShipAuction auction = modelFactory.createShipAuction(auctionDate, shipMatch.getValue(), debitor, shipMatch); guild.getAuctions().add(auction); final LocalDateTime dateCollectMoney = auctionDate.plusDays(1); TimedTask collectMoney = taskFactory.getLoanerCollectMoneyAfterAuctionTask(debt, dateCollectMoney); taskList.add(collectMoney); } else { final LocalDateTime dateCollectMoney = date.getCurrentDate(); TimedTask collectMoney = taskFactory.getLoanerCollectMoneyTask(debt, debitor, dateCollectMoney); taskList.add(collectMoney); } }
setTitle(messageSource.getMessage("ch.sahits.game.openpatrician.display.dialog.guild.AuctionGuildDialog.title", new Object[]{}, locale.getCurrentLocal())); IGuild guild = guildList.findGuild(city.getCity()).get(); List<IAuction> auctions = guild.getAuctions();