Class CentralStorageDeliveryTradeStrategy
- java.lang.Object
-
- ch.sahits.game.openpatrician.engine.player.strategy.BasePlayerTradeStrategy
-
- ch.sahits.game.openpatrician.engine.player.strategy.CentralStorageDeliveryTradeStrategy
-
- All Implemented Interfaces:
IAITradeStrategy
public class CentralStorageDeliveryTradeStrategy extends BasePlayerTradeStrategy
Strategy to deliver the required wares out of a central storage.- Author:
- Andi Hotz, (c) Sahits GmbH, 2017 Created on Oct 23, 2017
-
-
Field Summary
Fields Modifier and Type Field Description private Date
date
private MapProxy
map
private ShipService
shipService
-
Fields inherited from class ch.sahits.game.openpatrician.engine.player.strategy.BasePlayerTradeStrategy
tradeStrategyType
-
-
Constructor Summary
Constructors Constructor Description CentralStorageDeliveryTradeStrategy()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) java.util.Map<IWare,java.lang.Integer>
calculateAmountsToSell(INavigableVessel vessel, ICity city, CentralStorageHintContext context, IProductionConsumptionKnowledge globalKnowledge, java.util.List<ICity> cities)
(package private) java.util.Map<IWare,java.lang.Integer>
calculateBuyAmounts(java.util.Set<IWare> buyWares)
private java.util.List<ICity>
calculateForwardCities(ICity city, CentralStorageHintContext context)
(package private) java.util.Set<IWare>
calculateWaresToBuy(ICity city, CentralStorageHintContext context, IProductionConsumptionKnowledge globalKnowledge)
(package private) void
fillRequiredWaresAvailableBased(java.util.Map<IWare,java.lang.Integer> requiredWares, CentralStorageHintContext context, ITradingOffice office)
(package private) void
fillRequiredWaresConsumptionBased(java.util.Map<IWare,java.lang.Integer> requiredWares, CentralStorageHintContext context, CentralStorageDeliverMissionData missionData, IProductionConsumptionKnowledge globalKnowledge)
private ICity
getNextStop(ICity city, CentralStorageDeliverMissionData missionData)
void
handleShipArrivesInPort(IShipEntersPortEvent event)
Event handler for a ship entering port.(package private) void
handleTradeInCentralStorage(IAIPlayer player, INavigableVessel vessel, ICity centralStorageCity, CentralStorageHintContext context)
(package private) void
handleTradeInSuppliedCity(IAIPlayer player, INavigableVessel vessel, ICity city, CentralStorageDeliverMissionData missionData)
void
initializeTradeCycle(IAIPlayer player, INavigableVessel vessel)
Initialize the trade cycle.boolean
isSelectable(IAIPlayer player, INavigableVessel vessel)
Check if this strategy can be selected in the current setup.-
Methods inherited from class ch.sahits.game.openpatrician.engine.player.strategy.BasePlayerTradeStrategy
addDefaultTradeSteps, append, createAggregatedBuyTradeStep, createAggregatedCheckedBuyTradeStep, createAggregatedCheckedSellStep, createAggregatedDumpStep, createAggregatedSellStep, createCheckAndTakeLoanStep, createCheckedTransferToOfficeTradeStep, createCheckRepairStep, createConditionalAggregatedDumpStep, createHireCaptain, createHireDismissTradeManagerTradeStep, createHireSailorStep, createJoinGuildTradeStep, createPaybackLoanStep, createTransferToOfficeTradeStep, createTransferToShipTradeStep, createTravelToStep, createUpgradeShipTradeStep, createWeaponBuyTradeStep, executeTradeSteps, findCitySupplyingWare, findCityWithAllRequiredWares, findDestinationToBuyRequiredProductionWares, findNextStopForBuying, findNextStopForSelling, findProvidingWares, findWaresOfInterest, getCityToRestartTradeCycle, getLoadedWares, getMostNeededWares, getMostNeededWares, getNextStep, getWaresNeedIn, handleHireSailors, handleRefitFinished, handleRepairFinished, hasBlockingMission, hasMoreTradeSteps, inject, isMatchingTradeStrategy, isNeeded
-
-
-
-
Field Detail
-
map
@Autowired private MapProxy map
-
shipService
@Autowired private ShipService shipService
-
date
@Autowired private Date date
-
-
Method Detail
-
initializeTradeCycle
public void initializeTradeCycle(IAIPlayer player, INavigableVessel vessel)
Description copied from interface:IAITradeStrategy
Initialize the trade cycle. Based on the strategy the cycle may be closed, meaning at some point this method can be called again or it may be open with destination defining the next one.- Parameters:
player
- for whom to initialize the trade cyclevessel
- for which to initialize the trade cycle
-
handleTradeInCentralStorage
void handleTradeInCentralStorage(IAIPlayer player, INavigableVessel vessel, ICity centralStorageCity, CentralStorageHintContext context)
-
getNextStop
private ICity getNextStop(ICity city, CentralStorageDeliverMissionData missionData)
-
fillRequiredWaresAvailableBased
void fillRequiredWaresAvailableBased(java.util.Map<IWare,java.lang.Integer> requiredWares, CentralStorageHintContext context, ITradingOffice office)
-
fillRequiredWaresConsumptionBased
void fillRequiredWaresConsumptionBased(java.util.Map<IWare,java.lang.Integer> requiredWares, CentralStorageHintContext context, CentralStorageDeliverMissionData missionData, IProductionConsumptionKnowledge globalKnowledge)
-
handleShipArrivesInPort
public void handleShipArrivesInPort(IShipEntersPortEvent event)
Description copied from interface:IAITradeStrategy
Event handler for a ship entering port. This method is not called by subscription from the event bus, but through direct call from tha AIPlayerEngine.- Parameters:
event
- ship entering port
-
handleTradeInSuppliedCity
void handleTradeInSuppliedCity(IAIPlayer player, INavigableVessel vessel, ICity city, CentralStorageDeliverMissionData missionData)
-
calculateBuyAmounts
java.util.Map<IWare,java.lang.Integer> calculateBuyAmounts(java.util.Set<IWare> buyWares)
-
calculateWaresToBuy
java.util.Set<IWare> calculateWaresToBuy(ICity city, CentralStorageHintContext context, IProductionConsumptionKnowledge globalKnowledge)
-
calculateAmountsToSell
java.util.Map<IWare,java.lang.Integer> calculateAmountsToSell(INavigableVessel vessel, ICity city, CentralStorageHintContext context, IProductionConsumptionKnowledge globalKnowledge, java.util.List<ICity> cities)
-
calculateForwardCities
private java.util.List<ICity> calculateForwardCities(ICity city, CentralStorageHintContext context)
-
isSelectable
public boolean isSelectable(IAIPlayer player, INavigableVessel vessel)
Description copied from interface:IAITradeStrategy
Check if this strategy can be selected in the current setup. This method is called when choosing a new strategy for thevessel
.- Parameters:
player
- for which the strategy is chosen.vessel
- for which the strategy is chose.- Returns:
- true if the strategy can be chosen for the
player
andvessel
. The default implementation will always return true.
-
-