/** * Travel between two locations, where neither is a city. * @param vessel travelling between two locations at sea * @param location destination location */ public void travelNotBetweenCities(INavigableVessel vessel, Point2D location) { List<Point2D> path = travelTo(vessel, location); Preconditions.checkNotNull(path); pathConverter.createPath(vessel, path, 1); VesselPositionUpdateData vesselPositionUpdateData = interpolators.get(vessel); vesselPositionUpdateData.setDestinationCity(false); vesselPositionUpdateData.setSourceCity(false); }
/** * Travel from a city to a place that is not a city. * @param vessel traveling from a city to a location at sea * @param location destination location */ public void travelFromCity(INavigableVessel vessel, Point2D location) { List<Point2D> path = travelTo(vessel, location); Preconditions.checkNotNull(path); pathConverter.createPath(vessel, path, 1); VesselPositionUpdateData vesselPositionUpdateData = interpolators.get(vessel); vesselPositionUpdateData.setDestinationCity(false); vesselPositionUpdateData.setSourceCity(true); } }
/** * Travel from one city to another. * @param vessel which travels between cities * @param toCity destination city */ public void travelBetweenCities(INavigableVessel vessel, ICity toCity) { List<Point2D> path = travelTo(vessel, toCity.getCoordinates()); Preconditions.checkNotNull(path); pathConverter.createPath(vessel, path, 1); VesselPositionUpdateData vesselPositionUpdateData = interpolators.get(vessel); vesselPositionUpdateData.setDestinationCity(true); vesselPositionUpdateData.setSourceCity(true); }
/** * Travel from a location that is not a city to a city. * @param vessel traveling to a city * @param toCity destination city */ public void travelToCity(INavigableVessel vessel, ICity toCity) { List<Point2D> path = travelTo(vessel, toCity.getCoordinates()); Preconditions.checkNotNull(path); pathConverter.createPath(vessel, path, 1); VesselPositionUpdateData vesselPositionUpdateData = interpolators.get(vessel); vesselPositionUpdateData.setDestinationCity(true); vesselPositionUpdateData.setSourceCity(false); }
/** * Calculate a new path for the <code>vessel</code> and draw it on the map. * @param vessel that travels along the path * @param path series of points defining the path. */ private void drawPath(INavigableVessel vessel, List<Point2D> path) { if (path != null) { clearLines(); Optional<Path> p = pathConverter.createPath(vessel, path, scale.doubleValue()); if (p.isPresent()) { drawPathOnMap(vessel, path, p.get()); } else { logger.warn("Path not available for {} of {} {}", vessel.getName(), vessel.getOwner().getName(), vessel.getOwner().getLastName()); } } }