/** * {@inheritDoc} * The build location is always the players hometown. * @param player * @return */ @Override public ICity getBuildLocation(IAIPlayer player) { return player.getHometown(); }
/** * {@inheritDoc} * The build location is always the players hometown. * @param player * @return */ @Override public ICity getBuildLocation(IAIPlayer player) { return player.getHometown(); }
@Override protected ICity getConstructionCity(IAIPlayer player) { return player.getHometown(); } }
/** * {@inheritDoc} * The build location is always the players hometown. * @param player * @return */ @Override public ICity getBuildLocation(IAIPlayer player) { return player.getHometown(); }
/** * {@inheritDoc} * The build location is always the players hometown. * @param player * @return */ @Override public ICity getBuildLocation(IAIPlayer player) { return player.getHometown(); }
/** * {@inheritDoc} * The build location is always the players hometown. * @param player * @return */ @Override public ICity getBuildLocation(IAIPlayer player) { return player.getHometown(); }
/** * {@inheritDoc} * The build location is always the players hometown. * @param player * @return */ @Override public ICity getBuildLocation(IAIPlayer player) { return player.getHometown(); }
@Override protected boolean additionalJoinRequirementsMet(IAIPlayer player, ICity city, Optional<INavigableVessel> vessel) { return player.getHometown().equals(city); } }
@Override public boolean acceptMarriagBrokereOffer(IAIPlayer player) { return enoughStored(player, player.getHometown()); }
@Override public boolean acceptMarriageOffer(IAIPlayer player) { return enoughStored(player, player.getHometown()); }
@Override public boolean hireOrFireTradeManager(ICity city, IAIPlayer player) { Optional<ITradingOffice> optOffice = player.findTradingOffice(city); if (optOffice.isPresent()) { ITradingOffice office = optOffice.get(); if (office.getSteward().isPresent()) { return false; // never dismiss } else { return player.getHometown().equals(city) || player.getPlayerContext().getHints(city).stream() .filter(hint -> hint instanceof CentralStorageStrategyHint).findFirst().isPresent() || !player.findBuildings(city, IWorkShop.class).isEmpty(); } } return false; }
@Override protected boolean additionalJoinRequirementsMet(IAIPlayer player, ICity city, Optional<INavigableVessel> vessel) { double distance = player.getHometown().getCoordinates().distance(city.getCoordinates()); return distance < maxDistanceInPixels; } }
/** * Only repair the ship in the hometown unless it is realy badly damaged. * @param vessel that should be checked for repair need. * @param city current possition of the vessel. * @return true if the vessel should be repaired in the city. */ @Override public boolean shouldRepair(INavigableVessel vessel, ICity city) { Preconditions.checkArgument(vessel.getLocation().equals(city.getCoordinates()), "The vessel is not in city "+city.getName()+" but at "+vessel.getLocation()); int damage = vessel.getDamage(); if (damage > 90) { return true; } IAIPlayer player = (IAIPlayer) vessel.getOwner(); return city.equals(player.getHometown()); } }
ICity hometown = player.getHometown(); IProductionConsumptionKnowledge knowlege = player.getProductionAndConsumptionKnowledge(); knowlege.updateKnowledge(hometown);
ICity hometown = player.getHometown(); Optional<ITradingOffice> optOffice = player.findTradingOffice(hometown); Preconditions.checkArgument(optOffice.isPresent(), "In the hometown a trading office is required");
@Override public void handleShipArrivesInPort(IShipEntersPortEvent event) { // no move steps defined INavigableVessel vessel = event.getShip(); if (isMatchingTradeStrategy(vessel)) { ICity city = event.getCity(); Preconditions.checkArgument(city.getCoordinates().equals(vessel.getLocation()), "The vessel " + vessel.getName() + " actually is not in city " + city.getName()); IAIPlayer player = (IAIPlayer) vessel.getOwner(); if (city.equals(player.getHometown())) { addTradeStepsSellingInHomeTown(player, vessel); } else { addTradeStepTradingNextTown(player, vessel); } executeTradeSteps(player, vessel); } }
/** * Add the tradesteps in the hometown to sell the wares and check for repairs * @param player for whom to add the trade steps * @param vessel for which to add the trade steps */ @VisibleForTesting void addTradeStepsSellingInHomeTown(IAIPlayer player, INavigableVessel vessel){ ICity hometown = player.getHometown(); // Sell wares logger.trace("Add sell steps of wares in hometown: {} for {}", hometown.getName(), vessel.getName()); TransferToOfficeTradeStep transferStep = createTransferToOfficeTradeStep(vessel, hometown); append(player, vessel, transferStep); List<IWare> loadedWares = new ArrayList<>(vessel.getLoadedWares()); AggregatesDumpTradeStep sellStep1 = createAggregatedDumpStep(vessel, hometown, loadedWares); append(player, vessel, sellStep1); // Check for repair UpgradeShipTradeStep upgradeShipStep = createUpgradeShipTradeStep(vessel, player); append(player, vessel, upgradeShipStep); CheckForRepairTradeStep repairStep = createCheckRepairStep(vessel, hometown); append(player, vessel, repairStep); AggregatesSellTradeStep sellStep2 = createAggregatedSellStep(vessel, hometown, loadedWares); append(player, vessel, sellStep2); addTradeStepsInHometownToTravelToNextCity(player, vessel); }
@Override public void initializeTradeCycle(IAIPlayer player, INavigableVessel vessel) { ICity hometown = player.getHometown(); IProductionConsumptionKnowledge knowledge = player.getProductionAndConsumptionKnowledge(); ICityProductionConsumptionKnowledge knowledgeHomeTown = knowledge.getKnowlege(hometown); List<Pair<IWare, Number>> sortedNeeds = getMostNeededWares(knowledgeHomeTown, vessel); ArrayList<IWare> waresOfInterest = findWaresOfInterest(sortedNeeds); SupplyCityMissionData missionData = new SupplyCityMissionData(); missionData.setRequiredWares(waresOfInterest); missionData.setTargetCity(hometown); player.setTradeMission(vessel, missionData); addTradeStepsInHometownToTravelToNextCity(player, vessel); }
logger.debug("The vessel {} is not in any city but {}", vessel.getName(), vessel.getLocation()); Preconditions.checkArgument(!optCity.get().equals(player.getHometown()), "The city must not be the players hometown"); ICity city = optCity.get(); ICity hometown = player.getHometown(); List<IWare> waresOfInterest = ((SupplyCityMissionData) player.getTradeMission(vessel)).getRequiredWares(); IProductionConsumptionKnowledge knowledge = player.getProductionAndConsumptionKnowledge();
ICity hometown = player.getHometown(); IProductionConsumptionKnowledge knowledge = player.getProductionAndConsumptionKnowledge(); ICityProductionConsumptionKnowledge knowledgeHomeTown = knowledge.getKnowlege(hometown);