public CityIcons(CityState cityState, IDataImageLoader imageLoader) { super(2); this.cityState = cityState; this.imageLoader = imageLoader; threadExecution = new JavaFXApplicationThreadExecution(); updateMissingWare(); updateCityEvent(); cityState.longestMissingWaresBinding().addListener((observable, oldValue, newValue) -> updateMissingWare()); cityState.cityEventProperty().addListener((observable, oldValue, newValue) -> updateCityEvent()); }
private void drawCityInfo(Image mapImage, double scale, double x) { for (ICity city : map.getCities()) { if (city.getCoordinates().getX() >= x && city.getCoordinates().getX() <= x + mapImage.getWidth()) { CityIcons cityIcons = new CityIcons(city.getCityState(), imageLoader); // draw below city double xPos = (city.getCoordinates().getX() - ImageUtil.CITY_RADIUS) * scale; double yPos = (city.getCoordinates().getY() + ImageUtil.CITY_RADIUS + 5) * scale; cityIcons.setScaleX(scale); cityIcons.setScaleY(scale); cityIcons.setLayoutX(xPos); cityIcons.setLayoutY(yPos); shipCanvas.getChildren().add(0, cityIcons); } } }
private void updateCityEvent() { threadExecution.execute(() -> { ObjectProperty<ECityState> cityEvent = cityState.cityEventProperty(); for (Iterator<Node> iterator = getChildren().iterator(); iterator.hasNext(); ) { Node child = iterator.next(); if (child.getId().equals(CITY_EVENT_ID)) { iterator.remove(); break; } } if (cityEvent.get() != null) { // display event icon Image iconImg = imageLoader.getImage("icons/32/" + getEventIconName(cityEvent.get())); ImageView imgView = new ImageView(iconImg); getChildren().add(imgView); } }); }
private void updateMissingWare() { threadExecution.execute(() -> { ObjectBinding<IWare> missingWareeBinding = cityState.longestMissingWaresBinding(); for (Iterator<Node> iterator = getChildren().iterator(); iterator.hasNext(); ) { Node child = iterator.next(); if (child.getId().equals(MISSING_WARE_ID)) { iterator.remove(); break; } } if (missingWareeBinding.get() != null) { if (cityState.famineBinding().get()) { // display famine icon Image famine = imageLoader.getImage("icons/32/icon_famine"); ImageView famineView = new ImageView(famine); famineView.setId(MISSING_WARE_ID); getChildren().add(0, famineView); } else { // display missing ware icon String wareIconName = "icons/32/" + getIconName(missingWareeBinding.get()); Image missingWare = imageLoader.getImage(wareIconName); ImageView missingWareView = new ImageView(missingWare); missingWareView.setId(MISSING_WARE_ID); getChildren().add(0, missingWareView); } } }); }