aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xREADME.md19
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/Driver.java5
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffEditor.java2
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffList.java13
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/LevelEditor.java2
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/LevelList.java13
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gameplay/SongPlayer.java1
-rw-r--r--src/main/java/net/sowgro/npehero/gui/ControlEditor.java5
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/GameOver.java5
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/SettingsEditor.java5
-rw-r--r--src/main/java/net/sowgro/npehero/levelapi/Difficulties.java3
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/levelapi/Levels.java3
-rw-r--r--src/main/java/net/sowgro/npehero/main/ErrorDisplay.java (renamed from src/main/java/net/sowgro/npehero/editor/ErrorDisplay.java)65
-rw-r--r--src/main/java/net/sowgro/npehero/main/ErrorList.java (renamed from src/main/java/net/sowgro/npehero/editor/ErrorList.java)12
14 files changed, 95 insertions, 58 deletions
diff --git a/README.md b/README.md
index c6beccc..263ab49 100755
--- a/README.md
+++ b/README.md
@@ -9,15 +9,16 @@ Goals:
- [ ] Code cleanup
- [ ] Installer / Linux package
-Todo:
-- [ ] Tweak design of songPlayer
-- [ ] Redesign level editor menus
-- [ ] fix reliance on local font
-- [ ] Improve errorList and controlEditor
-- [ ] Click sounds on all buttons in editor
-- [ ] Fix notesEditor note preview being too small with no notes
-- [ ] Properly center background image
-- [ ] NotesEditor2: Clicking with the playhead requires pressing play first
+Todo - needs design:
+- Tweak design of songPlayer
+- Redesign level editor menus
+- Improve errorList and error handling
+
+Todo - bugs:
+- fix reliance on local font
+- Fix notesEditor note preview being too small with no notes
+- Properly center background image
+- NotesEditor2: Clicking with the playhead requires pressing play first
# Installation
diff --git a/src/main/java/net/sowgro/npehero/Driver.java b/src/main/java/net/sowgro/npehero/Driver.java
index 5a2aa73..411bf87 100755
--- a/src/main/java/net/sowgro/npehero/Driver.java
+++ b/src/main/java/net/sowgro/npehero/Driver.java
@@ -12,7 +12,7 @@ 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.ErrorDisplay;
import net.sowgro.npehero.levelapi.Levels;
import net.sowgro.npehero.main.*;
import net.sowgro.npehero.gui.MainMenu;
@@ -86,7 +86,6 @@ public class Driver extends Application
Settings.read();
System.out.println("Settings loaded");
} catch (Exception e) {
- e.printStackTrace();
errors.push("Failed to load settings from file\n"+e);
}
System.out.println("Loading controls...");
@@ -94,7 +93,6 @@ public class Driver extends Application
Control.readFromFile();
System.out.println("Controls loaded");
} catch (Exception e) {
- e.printStackTrace();
errors.push("Failed to load controls from file\n"+e);
}
System.out.println("Loading levels...");
@@ -102,7 +100,6 @@ public class Driver extends Application
Levels.readData();
System.out.println("Loaded " + Levels.list.size() + " levels (" + Levels.getValidList().size() + " valid)");
} catch (IOException e) {
- e.printStackTrace();
errors.push("Failed to load levels\n");
}
Page last = new MainMenu();
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java
index 77e5fa9..6485a4d 100755
--- a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java
+++ b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java
@@ -72,7 +72,6 @@ public class DiffEditor extends Page
try {
diff.leaderboard.save();
} catch (IOException e) {
- e.printStackTrace();
Driver.setMenu(new ErrorDisplay("Failed to clear the leaderboard:\n"+e, this));
}
});
@@ -97,7 +96,6 @@ public class DiffEditor extends Page
try {
diff.writeMetadata();
} catch (IOException e) {
- e.printStackTrace();
//TODO
throw new RuntimeException(e);
}
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffList.java b/src/main/java/net/sowgro/npehero/editor/DiffList.java
index e435b22..7106609 100755
--- a/src/main/java/net/sowgro/npehero/editor/DiffList.java
+++ b/src/main/java/net/sowgro/npehero/editor/DiffList.java
@@ -11,6 +11,8 @@ import javafx.scene.layout.VBox;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.levelapi.Difficulty;
import net.sowgro.npehero.levelapi.Level;
+import net.sowgro.npehero.main.ErrorDisplay;
+import net.sowgro.npehero.main.ErrorList;
import net.sowgro.npehero.main.Page;
import net.sowgro.npehero.main.Sound;
@@ -84,8 +86,7 @@ public class DiffList extends Page
try {
level.difficulties.remove(diffs.getSelectionModel().getSelectedItem());
} catch (IOException ex) {
- ex.printStackTrace();
- Driver.setMenu(new ErrorDisplay("Failed to remove difficulty\n"+e, this));
+ Driver.setMenu(new ErrorDisplay("Failed to remove difficulty", ex, this));
}
});
remove.setDisable(true);
@@ -120,8 +121,7 @@ public class DiffList extends Page
try {
level.difficulties.saveOrder();
} catch (IOException e) {
- e.printStackTrace();
- Driver.setMenu(new ErrorDisplay("Failed to move difficulty\n"+e,this));
+ Driver.setMenu(new ErrorDisplay("Failed to move difficulty", e,this));
}
});
@@ -139,8 +139,7 @@ public class DiffList extends Page
try {
level.difficulties.saveOrder();
} catch (IOException e) {
- e.printStackTrace();
- Driver.setMenu(new ErrorDisplay("Failed to move difficulty\n"+e,this));
+ Driver.setMenu(new ErrorDisplay("Failed to move difficulty", e,this));
}
});
@@ -168,7 +167,7 @@ public class DiffList extends Page
} catch (FileAlreadyExistsException e) {
Driver.setMenu(new ErrorDisplay("Failed to add difficulty\nA difficulty already exists with the folder name " + e.getFile(), this));
} catch (IOException e) {
- Driver.setMenu(new ErrorDisplay("Failed to add difficulty\n" + e, this));
+ Driver.setMenu(new ErrorDisplay("Failed to add difficulty", e, this));
}
};
Driver.setMenu(new FolderNameEntry("difficulty", this, next));
diff --git a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java
index e02da0f..8e49180 100755
--- a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java
+++ b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java
@@ -152,13 +152,11 @@ public class LevelEditor extends Page
}
} catch (Exception ex) {
// TODO
- ex.printStackTrace();
}
try {
level.writeMetadata();
} catch (IOException ex) {
// TODO
- ex.printStackTrace();
}
validate();
});
diff --git a/src/main/java/net/sowgro/npehero/editor/LevelList.java b/src/main/java/net/sowgro/npehero/editor/LevelList.java
index 6bd725f..492683f 100755
--- a/src/main/java/net/sowgro/npehero/editor/LevelList.java
+++ b/src/main/java/net/sowgro/npehero/editor/LevelList.java
@@ -6,7 +6,6 @@ import javafx.geometry.Pos;
import javafx.scene.control.*;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
-import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;
import net.sowgro.npehero.Driver;
import javafx.scene.layout.HBox;
@@ -14,6 +13,8 @@ import javafx.scene.layout.VBox;
import net.sowgro.npehero.gui.MainMenu;
import net.sowgro.npehero.levelapi.Level;
import net.sowgro.npehero.levelapi.Levels;
+import net.sowgro.npehero.main.ErrorDisplay;
+import net.sowgro.npehero.main.ErrorList;
import net.sowgro.npehero.main.Page;
import net.sowgro.npehero.main.Sound;
@@ -97,8 +98,7 @@ public class LevelList extends Page
try {
Levels.remove(levels.getSelectionModel().getSelectedItem());
} catch (IOException ex) {
- Driver.setMenu(new ErrorDisplay("Failed to remove this level\n"+e.toString(), this));
- ex.printStackTrace();
+ Driver.setMenu(new ErrorDisplay("Failed to remove this level", ex, this));
}
});
remove.setDisable(true);
@@ -110,8 +110,7 @@ public class LevelList extends Page
try {
Levels.readData();
} catch (IOException ex) {
- Driver.setMenu(new ErrorDisplay("Failed to load levels: Level folder is missing\n"+e.toString(), this));
- ex.printStackTrace();
+ Driver.setMenu(new ErrorDisplay("Failed to load levels: Level folder is missing", ex, this));
}
levels.setItems(Levels.list);
});
@@ -124,7 +123,7 @@ public class LevelList extends Page
try {
Desktop.getDesktop().open(Levels.dir);
} catch (IOException ex) {
- Driver.setMenu(new ErrorDisplay("Failed to open folder\n"+ex, this));
+ Driver.setMenu(new ErrorDisplay("Failed to open folder", ex, this));
}
}).start());
@@ -163,7 +162,7 @@ public class LevelList extends Page
} catch (FileAlreadyExistsException e) {
Driver.setMenu(new ErrorDisplay("Failed to add level\nA level already exists with the folder name '" + e.getFile() + "'", this));
} catch (IOException e) {
- Driver.setMenu(new ErrorDisplay("Failed to create level\n"+e, this));
+ Driver.setMenu(new ErrorDisplay("Failed to create level", e, this));
}
};
Driver.setMenu(new FolderNameEntry("level", this, next));
diff --git a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java
index 33f9a51..e51faa9 100755
--- a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java
+++ b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java
@@ -125,7 +125,6 @@ public class SongPlayer extends Pane {
try {
loadSong(); //Calls the file loading from the song's notes.txt file
} catch (FileNotFoundException e) {
- e.printStackTrace();
}
dButton.setColor(lvl.colors[0]); //sets the color of the five buttons to be
diff --git a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java
index 8e4d1d5..8298aa5 100644
--- a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java
+++ b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java
@@ -8,7 +8,7 @@ import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.*;
import net.sowgro.npehero.Driver;
-import net.sowgro.npehero.editor.ErrorDisplay;
+import net.sowgro.npehero.main.ErrorDisplay;
import net.sowgro.npehero.main.Control;
import net.sowgro.npehero.main.Page;
import net.sowgro.npehero.main.Sound;
@@ -78,8 +78,7 @@ public class ControlEditor extends Page {
try {
Control.writeToFile();
} catch (IOException e) {
- Driver.setMenu(new ErrorDisplay("An error occured while saving your controls\n"+e, this));
- e.printStackTrace();
+ Driver.setMenu(new ErrorDisplay("An error occurred while saving your controls", e, this));
}
});
controlButton.setOnAction(_ -> {
diff --git a/src/main/java/net/sowgro/npehero/gui/GameOver.java b/src/main/java/net/sowgro/npehero/gui/GameOver.java
index b66d0c6..0ae3daf 100755
--- a/src/main/java/net/sowgro/npehero/gui/GameOver.java
+++ b/src/main/java/net/sowgro/npehero/gui/GameOver.java
@@ -10,7 +10,7 @@ import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import net.sowgro.npehero.Driver;
-import net.sowgro.npehero.editor.ErrorDisplay;
+import net.sowgro.npehero.main.ErrorDisplay;
import net.sowgro.npehero.levelapi.Difficulty;
import net.sowgro.npehero.levelapi.Level;
import net.sowgro.npehero.main.Page;
@@ -73,8 +73,7 @@ public class GameOver extends Page
try {
diff.leaderboard.add(name.getText(), score2);
} catch (IOException e) {
- e.printStackTrace();
- Driver.setMenu(new ErrorDisplay("Failed to save score to leaderboard:\n"+e, this));
+ Driver.setMenu(new ErrorDisplay("Failed to save score to leaderboard", e, this));
}
});
diff --git a/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java
index efd136a..f83a8a4 100755
--- a/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java
+++ b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java
@@ -11,7 +11,7 @@ import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import net.sowgro.npehero.Driver;
-import net.sowgro.npehero.editor.ErrorDisplay;
+import net.sowgro.npehero.main.ErrorDisplay;
import net.sowgro.npehero.main.Page;
import net.sowgro.npehero.main.Settings;
import net.sowgro.npehero.main.Sound;
@@ -95,8 +95,7 @@ public class SettingsEditor extends Page
try {
Settings.save();
} catch (IOException ex) {
- ex.printStackTrace();
- Driver.setMenu(new ErrorDisplay("Failed to save settings"+ex, this));
+ Driver.setMenu(new ErrorDisplay("Failed to save settings", ex, this));
}
Sound.playSfx(Sound.BACKWARD);
Driver.setMenu(new MainMenu());
diff --git a/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java b/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java
index cfb3673..d5483a8 100644
--- a/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java
+++ b/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java
@@ -51,8 +51,7 @@ public class Difficulties {
Difficulty diff = new Difficulty(cur, level);
list.add(diff);
} catch (IOException e) {
- problems.put(cur.getName(), e);
- e.printStackTrace();
+ problems.put("Failed to load difficulty in folder '" + cur.getName() + "'", e);
}
}
}
diff --git a/src/main/java/net/sowgro/npehero/levelapi/Levels.java b/src/main/java/net/sowgro/npehero/levelapi/Levels.java
index 37878d8..84d169c 100755
--- a/src/main/java/net/sowgro/npehero/levelapi/Levels.java
+++ b/src/main/java/net/sowgro/npehero/levelapi/Levels.java
@@ -40,8 +40,7 @@ public class Levels {
Level level = new Level(file);
list.add(level);
} catch (Exception e) {
- problems.put(file.getName(), e);
- e.printStackTrace();
+ problems.put("Failed to load load level in folder '" + file.getName() + "'", e);
}
}
list.sort(Comparator.naturalOrder());
diff --git a/src/main/java/net/sowgro/npehero/editor/ErrorDisplay.java b/src/main/java/net/sowgro/npehero/main/ErrorDisplay.java
index c07d12f..cd43937 100644
--- a/src/main/java/net/sowgro/npehero/editor/ErrorDisplay.java
+++ b/src/main/java/net/sowgro/npehero/main/ErrorDisplay.java
@@ -1,4 +1,4 @@
-package net.sowgro.npehero.editor;
+package net.sowgro.npehero.main;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
@@ -8,8 +8,9 @@ import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import net.sowgro.npehero.Driver;
-import net.sowgro.npehero.main.Page;
-import net.sowgro.npehero.main.Sound;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
public class ErrorDisplay extends Page {
@@ -43,6 +44,64 @@ public class ErrorDisplay extends Page {
}
/**
+ * Error display with a message, exception and Back button
+ * @param message The message to display
+ * @param e The exception that occurred
+ * @param prev The destination of the close button
+ */
+ public ErrorDisplay(String message, Exception e, Page prev) {
+ Label title = new Label(message);
+ title.setPadding(new Insets(10));
+ title.setWrapText(true);
+
+ Label exView = new Label(e.toString());
+ exView.getStyleClass().add("red");
+
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ e.printStackTrace(pw);
+ String sStackTrace = sw.toString(); // stack trace as a string
+
+ Label stackTrace = new Label(sStackTrace);
+ stackTrace.getStyleClass().add("red");
+ stackTrace.setVisible(false);
+ stackTrace.setManaged(false);
+
+ Button exit = new Button();
+ exit.setText("Ok");
+ exit.setOnAction(_ -> {
+ Sound.playSfx(Sound.BACKWARD);
+ Driver.setMenu(prev);
+ });
+
+ Button printStack = new Button("Print to console");
+ printStack.setOnAction(_ -> {
+ Sound.playSfx(Sound.FORWARD);
+ e.printStackTrace();
+ });
+
+ Button showStack = new Button("Show Stack Trace");
+ showStack.setOnAction(_ -> {
+ stackTrace.setVisible(true);
+ stackTrace.setManaged(true);
+ });
+
+ HBox buttonBox = new HBox(exit, showStack);
+ buttonBox.setSpacing(10);
+
+ VBox main = new VBox(title, exView);
+ main.getStyleClass().add("box");
+
+ VBox centerBox = new VBox();
+ centerBox.getChildren().addAll(main, buttonBox, stackTrace);
+ centerBox.setSpacing(10);
+ centerBox.setAlignment(Pos.CENTER);
+
+ content.getChildren().add(centerBox);
+ content.setAlignment(Pos.CENTER);
+ }
+
+ /**
* Error display with a message and Cancel and Proceed buttons
* @param message The message to display
* @param prev The destination of the Cancel button
diff --git a/src/main/java/net/sowgro/npehero/editor/ErrorList.java b/src/main/java/net/sowgro/npehero/main/ErrorList.java
index 92a9455..a875502 100644
--- a/src/main/java/net/sowgro/npehero/editor/ErrorList.java
+++ b/src/main/java/net/sowgro/npehero/main/ErrorList.java
@@ -1,19 +1,11 @@
-package net.sowgro.npehero.editor;
+package net.sowgro.npehero.main;
-import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.*;
-import javafx.scene.input.KeyEvent;
import javafx.scene.layout.*;
import net.sowgro.npehero.Driver;
-import net.sowgro.npehero.gui.SettingsEditor;
-import net.sowgro.npehero.main.Control;
-import net.sowgro.npehero.main.Page;
-import net.sowgro.npehero.main.Sound;
-import java.io.IOException;
-import java.util.List;
import java.util.Map;
public class ErrorList extends Page {
@@ -57,7 +49,7 @@ public class ErrorList extends Page {
// reset button
Button resetButton = new Button("View Error");
- resetButton.setOnAction(_ -> Driver.setMenu(new ErrorDisplay("E: \n"+error.getValue(), this)));
+ resetButton.setOnAction(_ -> Driver.setMenu(new ErrorDisplay(error.getKey(), error.getValue(), this)));
controls.add(resetButton, 1, i);
i++;
}