From a3ceed42a0241eb9f301d5bc6ea8497ca51705e6 Mon Sep 17 00:00:00 2001 From: Siphalor Date: Fri, 10 Jul 2020 18:00:37 +0200 Subject: [PATCH] Small fixes and improvements * Tweaked random quest generator * Improved chart performance when it's not visible * Set a minimum height for the stage --- .../java/de/siphalor/was/WhatAStorage.java | 1 - .../content/quest/RandomQuestGenerator.java | 6 +++-- .../de/siphalor/was/visual/JFXVisual.java | 16 ++++++++----- .../was/visual/jfx/MainController.java | 24 +++++++++++++++++++ src/main/resources/assets/jfx/game.fxml | 12 +++++----- 5 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/main/java/de/siphalor/was/WhatAStorage.java b/src/main/java/de/siphalor/was/WhatAStorage.java index e312d68..c40d3f7 100644 --- a/src/main/java/de/siphalor/was/WhatAStorage.java +++ b/src/main/java/de/siphalor/was/WhatAStorage.java @@ -19,7 +19,6 @@ import org.jetbrains.annotations.Nullable; import java.io.File; import java.nio.file.Path; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; public class WhatAStorage { diff --git a/src/main/java/de/siphalor/was/content/quest/RandomQuestGenerator.java b/src/main/java/de/siphalor/was/content/quest/RandomQuestGenerator.java index 59afab3..e3e0e25 100644 --- a/src/main/java/de/siphalor/was/content/quest/RandomQuestGenerator.java +++ b/src/main/java/de/siphalor/was/content/quest/RandomQuestGenerator.java @@ -1,6 +1,7 @@ package de.siphalor.was.content.quest; import de.siphalor.was.WhatAStorage; +import de.siphalor.was.content.product.Product; import java.util.Random; @@ -18,10 +19,11 @@ public class RandomQuestGenerator implements QuestGenerator { @Override public Quest nextElement() { + Product product = WhatAStorage.getInstance().getProductManager().randomProduct(RANDOM); return new Quest( RANDOM.nextBoolean() ? Quest.Type.IN : Quest.Type.OUT, - RANDOM.nextInt(15) * 100, - WhatAStorage.getInstance().getProductManager().randomProduct(RANDOM) + RANDOM.nextInt(15) * 100 * product.getDepth(), + product ); } } diff --git a/src/main/java/de/siphalor/was/visual/JFXVisual.java b/src/main/java/de/siphalor/was/visual/JFXVisual.java index 127e422..3fcc78f 100644 --- a/src/main/java/de/siphalor/was/visual/JFXVisual.java +++ b/src/main/java/de/siphalor/was/visual/JFXVisual.java @@ -31,9 +31,7 @@ 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; +import java.util.*; public class JFXVisual extends Application implements Visual { private static Stage primaryStage; @@ -86,11 +84,16 @@ public class JFXVisual extends Application implements Visual { controller.totalLossLabel.setText(i18n.format("game.balance.total-loss", totalLoss)); ObservableList> data = controller.budgetChartSeries.getData(); - int i = data.size(); - data.add(new XYChart.Data<>(data.size(), budget)); + + controller.chartQueue.add(budget); + + if (controller.chartTab.isSelected()) { + controller.updateChart(); + } if (transaction != Balance.Transaction.NOOP) { - controller.balanceHistoryTable.getItems().add(new BalanceEntry(i, change, i18n.getString(transaction.getTranslationKey()))); + ObservableList items = controller.balanceHistoryTable.getItems(); + items.add(new BalanceEntry(items.size(), change, i18n.getString(transaction.getTranslationKey()))); controller.balanceHistoryTable.sort(); } } @@ -113,6 +116,7 @@ public class JFXVisual extends Application implements Visual { public void start(Stage primaryStage) throws Exception { JFXVisual.primaryStage = primaryStage; primaryStage.setMinWidth(850); + primaryStage.setMinHeight(500); primaryStage.setTitle(WhatAStorage.TITLE); loader.setResources(I18n.getInstance()); diff --git a/src/main/java/de/siphalor/was/visual/jfx/MainController.java b/src/main/java/de/siphalor/was/visual/jfx/MainController.java index 5fec3d1..1c09c22 100644 --- a/src/main/java/de/siphalor/was/visual/jfx/MainController.java +++ b/src/main/java/de/siphalor/was/visual/jfx/MainController.java @@ -2,12 +2,14 @@ package de.siphalor.was.visual.jfx; import de.siphalor.was.WhatAStorage; import de.siphalor.was.assets.AssetsManager; +import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; import javafx.scene.control.Button; import javafx.scene.control.Label; +import javafx.scene.control.Tab; import javafx.scene.control.TableView; import javafx.scene.image.Image; import javafx.scene.image.ImageView; @@ -16,16 +18,21 @@ import javafx.scene.input.TransferMode; import javafx.scene.layout.GridPane; import javafx.scene.layout.VBox; +import java.util.LinkedList; +import java.util.Queue; + @SuppressWarnings("unused") public class MainController { private final WhatAStorage was; + public Tab chartTab; public Label budgetLabel; public Label totalIncomeLabel; public Label totalLossLabel; public TableView balanceHistoryTable; public LineChart budgetChart; public XYChart.Series budgetChartSeries = new XYChart.Series<>(); + public Queue chartQueue = new LinkedList<>(); public ImageView trash; @@ -94,4 +101,21 @@ public class MainController { } dragEvent.setDropCompleted(false); } + + @FXML + private void onChartTabSelected() { + updateChart(); + } + + public void updateChart() { + if (!chartQueue.isEmpty()) { + ObservableList> data = budgetChartSeries.getData(); + + for (Integer integer : chartQueue) { + data.add(new XYChart.Data<>(data.size(), integer)); + } + + chartQueue.clear(); + } + } } diff --git a/src/main/resources/assets/jfx/game.fxml b/src/main/resources/assets/jfx/game.fxml index 5fda9b3..8933f3a 100644 --- a/src/main/resources/assets/jfx/game.fxml +++ b/src/main/resources/assets/jfx/game.fxml @@ -21,7 +21,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -114,9 +114,9 @@ - - - + + + - +