@Subscribe public void handleShipBreaksBlockade(ShipNearingPortEvent event) { ICity city = event.getCity(); for (Entry<ICity, IBlockade> entry : blockadeState.entrySet()) { if (entry.getKey().equals(city)) { IConvoy blocadingConvoy = entry.getValue().getBlockadeConvoy(); INavigableVessel blockadeBreaker = event.getShip(); BlockadeSeafightContext context = new BlockadeSeafightContext(entry.getValue()); IPlayer owner = (IPlayer) blockadeBreaker.getOwner(); owner.updateCrimialDrive(1); seafightService.calculateOutcome(blocadingConvoy, blockadeBreaker, context); entry.getValue().getShipsToAuction().addAll(context.getCapturedShips()); } } } @Subscribe
@Subscribe public void handleShipNearsPort(ShipNearingPortEvent event) { INavigableVessel vessel = event.getShip(); TravellingVessel ship = vessels.getTravellingVessel(vessel); if (ship != null) { if (vessels.getTravellingVessel(vessel) != null) { threadExecution.execute(() -> removeVesselFromView(vessel)); if (isPlayersVessel(vessel)) { Set<INavigableVessel> noLongerVisible = removeVisibleVessel(vessel); for (INavigableVessel v : noLongerVisible) { logger.debug("The ship {} is no longer visible", v.getName()); } Platform.runLater(() -> removeNoLongerVisibleVessels(noLongerVisible)); } } } else { logger.debug("Ship ship nearing port for {} as ship is not a traveling vessel", vessel.getName()); } }
clientServerEventBus.post(new ShipNearingPortEvent(vessel, city.get())); } else { logger.error("Failed to find city at {}", destination);
@Subscribe public void handleShipNearingPort(ShipNearingPortEvent event) { ICity city = event.getCity(); INavigableVessel ship = event.getShip(); if (ship.getPirateFlag()) { Optional<ICityHall> optCityHall = cityHalls.findCityHall(city); if (optCityHall.isPresent()) { Optional<IOutriggerContract> optContract = optCityHall.get().getOutriggerContract(); //noinspection OptionalIsPresent if (optContract.isPresent()) { IShip outrigger = optContract.get().getOutrigger(); SeaFightContext context = new SeaFightContext(ESeaFightType.OUTRIGGER); IPlayer owner = (IPlayer) ship.getOwner(); owner.updateCrimialDrive(1); seaFightService.calculateOutcome(outrigger, ship, context); } } else { logger.warn("No CityHall found for city "+city.getName()); } } }