From d04c277edff957d14b6261dd38da43c18b7ba189 Mon Sep 17 00:00:00 2001 From: sowgro Date: Tue, 23 Jul 2024 17:03:40 -0400 Subject: Improve level API and error handling --- src/main/java/net/sowgro/npehero/Driver.java | 32 +++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'src/main/java/net/sowgro/npehero/Driver.java') diff --git a/src/main/java/net/sowgro/npehero/Driver.java b/src/main/java/net/sowgro/npehero/Driver.java index 4c737f7..3e1bd6e 100755 --- a/src/main/java/net/sowgro/npehero/Driver.java +++ b/src/main/java/net/sowgro/npehero/Driver.java @@ -12,10 +12,14 @@ import javafx.scene.input.KeyEvent; import javafx.scene.layout.*; import javafx.stage.Stage; import javafx.util.Duration; +import net.sowgro.npehero.editor.ErrorDisplay; import net.sowgro.npehero.main.*; import net.sowgro.npehero.gui.MainMenu; +import java.io.FileNotFoundException; import java.net.URL; +import java.util.List; +import java.util.Stack; public class Driver extends Application @@ -42,9 +46,6 @@ public class Driver extends Application */ @Override public void start(Stage newPrimaryStage) { - Settings.read(); - Levels.readData(); - Control.readFromFile(); primaryStage = newPrimaryStage; @@ -65,8 +66,7 @@ public class Driver extends Application primaryStage.setTitle("NPE Hero"); primaryPane.getStyleClass().remove("scroll-pane"); - - setMenu(new MainMenu()); + setMenuBackground(); Sound.playSong(Sound.MENU_SONG); @@ -79,6 +79,28 @@ public class Driver extends Application primaryStage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH); primaryStage.setFullScreenExitHint(""); primaryStage.show(); + + Stack errors = new Stack<>(); + try { + Settings.read(); + } catch (Exception e) { + errors.push("Failed to load settings from file\n"+e); + } + try { + Levels.readData(); + } catch (FileNotFoundException e) { + errors.push("Failed to load levels: Level folder is missing\n"); + } + try { + Control.readFromFile(); + } catch (Exception e) { + errors.push("Failed to load controls from file\n"+e); + } + Page last = new MainMenu(); + while (!errors.empty()) { + last = new ErrorDisplay(errors.pop(), last); + } + Driver.setMenu(last); } /** -- cgit v1.2.3