@Subscribe public void handleShipLeavesPort(ShipLeavingPort event) { if (getCity().equals(event.getCity())) { leave(event.getShip()); } } @Subscribe
@Subscribe public void handleShipDeparture(ShipLeavingPort event) { INavigableVessel vessel = event.getShip(); ICity city = event.getCity(); city.getCityState().getPopUpdateStatistic().depart(vessel); }
@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