clientServerEventBus.post(new ShipLeavingPort(vessel, city.get())); } else { logger.error("Failed to find city at {}", source);
@Subscribe public void handleShipLeavesCity(ShipLeavingPort event) { ICity city = event.getCity(); final IShipOwner owner = event.getShip().getOwner(); if (owner instanceof IHumanPlayer && owner.equals(viewState.getPlayer())) { List<INavigableVessel> ships = ((IHumanPlayer)owner).findShips(city); if (ships.isEmpty()) { double cityX = (int) Math.rint(city.getCoordinates().getX()) * scale.doubleValue(); double cityY = (int) Math.rint(city.getCoordinates().getY()) * scale.doubleValue(); for (Iterator<Node> iterator = shipCanvas.getChildren().iterator(); iterator.hasNext(); ) { Node node = iterator.next(); if (node instanceof Circle) { Circle c = (Circle) node; if (c.getCenterX() == cityX && c.getCenterY() == cityY) { Platform.runLater(iterator::remove); break; } } } } } }
@Subscribe public void handleShipLeavesCity(ShipLeavingPort event) { ICity city = event.getCity(); final IShipOwner owner = event.getShip().getOwner(); if (owner instanceof IHumanPlayer && owner.equals(viewState.getPlayer())) { List<INavigableVessel> ships = ((IHumanPlayer)owner).findShips(city); if (ships.isEmpty()) { double cityX = (int) Math.rint(city.getCoordinates().getX()) * scale; double cityY = (int) Math.rint(city.getCoordinates().getY()) * scale; double viewportOffset = imgView.getViewport().getMinX() * scale; for (Iterator<Node> iterator = mapPane.getChildren().iterator(); iterator.hasNext(); ) { Node node = iterator.next(); if (node instanceof Circle) { Circle c = (Circle) node; if (c.getCenterX() + viewportOffset == cityX && c.getCenterY() == cityY) { Platform.runLater(iterator::remove); break; } } } } } } @Subscribe