diff --git a/src/main/java/de/siphalor/was/visual/JFXVisual.java b/src/main/java/de/siphalor/was/visual/JFXVisual.java index 000fac4..557d797 100644 --- a/src/main/java/de/siphalor/was/visual/JFXVisual.java +++ b/src/main/java/de/siphalor/was/visual/JFXVisual.java @@ -13,6 +13,8 @@ import de.siphalor.was.visual.jfx.BalanceEntry; import de.siphalor.was.visual.jfx.MainController; import de.siphalor.was.visual.jfx.QuestController; import de.siphalor.was.visual.jfx.StorageSlotController; +import javafx.animation.FadeTransition; +import javafx.animation.Interpolator; import javafx.application.Application; import javafx.collections.ObservableList; import javafx.fxml.FXMLLoader; @@ -26,10 +28,13 @@ import javafx.scene.image.Image; import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; import javafx.stage.Stage; +import javafx.util.Duration; import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; import java.util.Optional; public class JFXVisual extends Application implements Visual { @@ -40,9 +45,13 @@ public class JFXVisual extends Application implements Visual { private static MainController controller; + private static final Map PRODUCT_IMAGES = new HashMap<>(); @NotNull public static Image getProductImage(@NotNull Product product, @NotNull ContentManager contentManager) { - return loadImage(product.getTextureLocation(), contentManager).orElseGet(() -> loadImage(Product.getPlaceholderTextureLocation(), contentManager).orElseThrow()); + return PRODUCT_IMAGES.computeIfAbsent( + product.getTextureLocation(), + loc -> loadImage(loc, contentManager).orElseGet(() -> loadImage(Product.getPlaceholderTextureLocation(), contentManager).orElseThrow()) + ); } @NotNull public static Optional loadImage(@NotNull String location, @NotNull ContentManager contentManager) { @@ -116,7 +125,7 @@ public class JFXVisual extends Application implements Visual { controller = new MainController(WhatAStorage.getInstance()); loader.setController(controller); - Pane pane = loader.load(AssetsManager.getStream("jfx/test.fxml").get()); + Pane pane = loader.load(AssetsManager.getStream("jfx/game.fxml").get()); mainScene = new Scene(pane); mainScene.getStylesheets().add("assets/jfx/main.css"); @@ -153,7 +162,13 @@ public class JFXVisual extends Application implements Visual { loader.setController(questController); Parent parent = loader.load(is); + FadeTransition transition = new FadeTransition(Duration.millis(250), parent); + transition.setFromValue(0D); + transition.setByValue(1D); + transition.setInterpolator(Interpolator.EASE_OUT); + controller.questBox.getChildren().add(parent); + transition.play(); Product product = quest.getProduct();