aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/editor
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-07-23 17:03:40 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-07-23 17:03:40 -0400
commitd04c277edff957d14b6261dd38da43c18b7ba189 (patch)
tree09ccedfb21efc49485a33c5daaa121fd4a01ef78 /src/main/java/net/sowgro/npehero/editor
parentaae98b8bfca1578c14d6dde3a2f3180c7c580131 (diff)
downloadNPEhero-d04c277edff957d14b6261dd38da43c18b7ba189.tar.gz
NPEhero-d04c277edff957d14b6261dd38da43c18b7ba189.tar.bz2
NPEhero-d04c277edff957d14b6261dd38da43c18b7ba189.zip
Improve level API and error handling
Diffstat (limited to 'src/main/java/net/sowgro/npehero/editor')
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffEditor.java2
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffList.java17
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/LevelEditor.java27
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/LevelList.java25
-rw-r--r--src/main/java/net/sowgro/npehero/editor/NotesEditor2.java2
5 files changed, 53 insertions, 20 deletions
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java
index f98ff46..6940485 100755
--- a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java
+++ b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java
@@ -61,7 +61,7 @@ public class DiffEditor extends Page
Button playLevel = new Button("Play level");
playLevel.setOnAction(_ -> {
- if (diff.isValid && diff.level.isValid) {
+ if (diff.isValid() && diff.level.isValid()) {
Driver.setMenu(new LevelSurround(diff.level, diff, this));
}
else {
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffList.java b/src/main/java/net/sowgro/npehero/editor/DiffList.java
index 13e4795..7017c32 100755
--- a/src/main/java/net/sowgro/npehero/editor/DiffList.java
+++ b/src/main/java/net/sowgro/npehero/editor/DiffList.java
@@ -14,6 +14,7 @@ import net.sowgro.npehero.main.Level;
import net.sowgro.npehero.main.Page;
import net.sowgro.npehero.main.Sound;
+import java.io.IOException;
import java.util.Collections;
public class DiffList extends Page
@@ -33,7 +34,7 @@ public class DiffList extends Page
titleCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().title));
validCol.setCellValueFactory(data -> {
- if (data.getValue().isValid) {
+ if (data.getValue().isValid()) {
return new ReadOnlyStringWrapper("Yes");
}
else {
@@ -63,7 +64,13 @@ public class DiffList extends Page
edit.disableProperty().bind(diffs.getSelectionModel().selectedItemProperty().isNull());
Button remove = new Button("Delete");
- remove.setOnAction(e -> level.difficulties.remove(diffs.getSelectionModel().getSelectedItem()));
+ remove.setOnAction(e -> {
+ try {
+ level.difficulties.remove(diffs.getSelectionModel().getSelectedItem());
+ } catch (IOException ex) {
+ Driver.setMenu(new ErrorDisplay("Failed to remove difficulty\n"+e, this));
+ }
+ });
remove.setDisable(true);
remove.disableProperty().bind(diffs.getSelectionModel().selectedItemProperty().isNull());
@@ -139,7 +146,11 @@ public class DiffList extends Page
});
newLevelButton.setOnAction(_ -> {
- level.difficulties.add(newLevelEntry.getText());
+ try {
+ level.difficulties.add(newLevelEntry.getText());
+ } catch (IOException e) {
+ Driver.setMenu(new ErrorDisplay("Failed to add level\n"+e, this));
+ }
newLevelEntry.clear();
refresh.fire();
sidebar.getChildren().clear();
diff --git a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java
index 56a2924..b3ae2b8 100755
--- a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java
+++ b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java
@@ -78,7 +78,7 @@ public class LevelEditor extends Page
ValidIndicator diffsInvalid = new ValidIndicator();
- if (level.difficulties.validList.isEmpty()) {
+ if (level.difficulties.getValidList().isEmpty()) {
diffsInvalid.setInvalid("This level contains no valid difficulties!");
}
HBox diffLabel = new HBox(new Text("Difficulties"), diffsInvalid);
@@ -95,7 +95,7 @@ public class LevelEditor extends Page
diffCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().title));
validCol.setCellValueFactory(data -> {
- if (data.getValue().isValid) {
+ if (data.getValue().isValid()) {
return new ReadOnlyStringWrapper("Yes");
}
else {
@@ -131,14 +131,19 @@ public class LevelEditor extends Page
level.colors[2] = colorsPickers[2].getValue();
level.colors[3] = colorsPickers[3].getValue();
level.colors[4] = colorsPickers[4].getValue();
- if (selectedBackground != null && selectedBackground.exists()) {
- level.addFile(selectedBackground,"background." + getFileExtension(selectedBackground));
- }
- if (selectedPreview != null && selectedPreview.exists()) {
- level.addFile(selectedPreview,"preview." + getFileExtension(selectedPreview));
- }
- if (selectedSong != null) {
- level.addFile(selectedSong,"song." + getFileExtension(selectedSong));
+
+ try {
+ if (selectedBackground != null && selectedBackground.exists()) {
+ level.addFile(selectedBackground, "background." + getFileExtension(selectedBackground));
+ }
+ if (selectedPreview != null && selectedPreview.exists()) {
+ level.addFile(selectedPreview, "preview." + getFileExtension(selectedPreview));
+ }
+ if (selectedSong != null) {
+ level.addFile(selectedSong, "song." + getFileExtension(selectedSong));
+ }
+ } catch (Exception _) {
+ // TODO
}
level.writeMetadata();
});
@@ -166,7 +171,7 @@ public class LevelEditor extends Page
Driver.setMenu(prev);
});
- HBox bottom = new HBox(save, exit);
+ HBox bottom = new HBox(exit, save);
bottom.setAlignment(Pos.CENTER);
bottom.setSpacing(10);
diff --git a/src/main/java/net/sowgro/npehero/editor/LevelList.java b/src/main/java/net/sowgro/npehero/editor/LevelList.java
index b479f49..1bc85dd 100755
--- a/src/main/java/net/sowgro/npehero/editor/LevelList.java
+++ b/src/main/java/net/sowgro/npehero/editor/LevelList.java
@@ -14,6 +14,9 @@ import net.sowgro.npehero.main.Levels;
import net.sowgro.npehero.main.Page;
import net.sowgro.npehero.main.Sound;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
public class LevelList extends Page
{
private HBox content = new HBox();
@@ -34,7 +37,7 @@ public class LevelList extends Page
titleCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().title));
artistCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().artist));
validCol.setCellValueFactory(data -> {
- if (data.getValue().isValid) {
+ if (data.getValue().isValid()) {
return new ReadOnlyStringWrapper("Yes");
}
else {
@@ -63,13 +66,23 @@ public class LevelList extends Page
edit.disableProperty().bind(levels.getSelectionModel().selectedItemProperty().isNull());
Button remove = new Button("Delete");
- remove.setOnAction(e -> Levels.remove(levels.getSelectionModel().getSelectedItem()));
+ remove.setOnAction(e -> {
+ try {
+ Levels.remove(levels.getSelectionModel().getSelectedItem());
+ } catch (IOException ex) {
+ Driver.setMenu(new ErrorDisplay("Failed to remove this level\n"+e.toString(), this));
+ }
+ });
remove.setDisable(true);
remove.disableProperty().bind(levels.getSelectionModel().selectedItemProperty().isNull());
Button refresh = new Button("Refresh");
refresh.setOnAction(e -> {
- Levels.readData();
+ try {
+ Levels.readData();
+ } catch (FileNotFoundException ex) {
+ Driver.setMenu(new ErrorDisplay("Failed to load levels: Level folder is missing\n"+e.toString(), this));
+ }
levels.setItems(Levels.list);
});
@@ -120,7 +133,11 @@ public class LevelList extends Page
});
newLevelButton.setOnAction(_ -> {
- Levels.add(newLevelEntry.getText());
+ try {
+ Levels.add(newLevelEntry.getText());
+ } catch (IOException e) {
+ Driver.setMenu(new ErrorDisplay("Failed to create this level\n"+e.toString(), this));
+ }
newLevelEntry.clear();
refresh.fire();
sidebar.getChildren().clear();
diff --git a/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java b/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java
index 38ad234..8d17900 100644
--- a/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java
+++ b/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java
@@ -175,7 +175,7 @@ public class NotesEditor2 extends Page {
buttons.setAlignment(Pos.CENTER);
Runnable updateEndLine = () -> {
- System.out.println("LISTENER CALLED");
+// System.out.println("LISTENER CALLED");
if (newEndTime.get() != 0) {
endLine.layoutYProperty().bind(secondToScreenPos(newEndTime.get()));
}