diff options
Diffstat (limited to 'src/main/java/net/sowgro')
8 files changed, 166 insertions, 7 deletions
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java index 0eb4968..7671bc6 100755 --- a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java +++ b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java @@ -39,6 +39,7 @@ public class DiffEditor extends Page Button editNotes = new Button("Edit notes"); editNotes.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); if (diff.level.song == null) { Driver.setMenu(new ErrorDisplay("You must import a song file before editing the notes!", this)); return; @@ -55,15 +56,19 @@ public class DiffEditor extends Page }); Button oldEditNotes = new Button("Edit notes (legacy)"); - oldEditNotes.setOnAction(_ -> Driver.setMenu(new ErrorDisplay( + oldEditNotes.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); + Driver.setMenu(new ErrorDisplay( "Warning: \nThe legacy editor will overwrite all existing notes!", this, new NotesEditor(diff, this)) - )); + ); + }); Label scoresLable = new Label("Scores"); Button editScores = new Button("Clear leaderboard"); editScores.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); diff.leaderboard.entries.clear(); try { diff.leaderboard.save(); @@ -75,6 +80,7 @@ public class DiffEditor extends Page Button playLevel = new Button("Play level"); playLevel.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); if (diff.isValid() && diff.level.isValid()) { Driver.setMenu(new LevelSurround(diff.level, diff, this)); } @@ -85,6 +91,7 @@ public class DiffEditor extends Page Button save = new Button("Save"); save.setOnAction(_ -> { //assigns text fields to values + Sound.playSfx(Sound.FORWARD); diff.title = title.getText(); // diff.bpm = Double.parseDouble(bpm.getText()); // diff.numBeats = Integer.parseInt(numBeats.getText()); diff --git a/src/main/java/net/sowgro/npehero/editor/DiffList.java b/src/main/java/net/sowgro/npehero/editor/DiffList.java index 9e2df9b..f3769ab 100755 --- a/src/main/java/net/sowgro/npehero/editor/DiffList.java +++ b/src/main/java/net/sowgro/npehero/editor/DiffList.java @@ -8,11 +8,14 @@ import javafx.scene.control.*; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; +import javafx.scene.paint.Color; import net.sowgro.npehero.Driver; +import net.sowgro.npehero.gui.MainMenu; import net.sowgro.npehero.levelapi.Difficulty; import net.sowgro.npehero.levelapi.Level; import net.sowgro.npehero.main.Page; import net.sowgro.npehero.main.Sound; +import net.sowgro.npehero.main.ValidIndicator; import java.io.IOException; import java.nio.file.FileAlreadyExistsException; @@ -20,10 +23,14 @@ import java.util.Collections; public class DiffList extends Page { + private final Label error; + private final HBox errorBox; private HBox content = new HBox(); + private Level level; public DiffList(Level level, Page prev) { + this.level = level; //sets up table view: requires special getters, setters and constructors to work TableView<Difficulty> diffs = new TableView<>(); @@ -59,13 +66,28 @@ public class DiffList extends Page diffs.setPrefWidth(400); diffs.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.67)); + error = new Label(); + errorBox = new HBox(error); + errorBox.setSpacing(10); + errorBox.setPadding(new Insets(10)); + errorBox.getStyleClass().addAll("box", "red"); + errorBox.setOnMouseClicked(_ -> { + // TODO + Driver.setMenu(new ErrorList(level.difficulties.problems, this)); + }); + refresh(); + Button edit = new Button("Edit"); - edit.setOnAction(e -> Driver.setMenu(new DiffEditor(diffs.getSelectionModel().getSelectedItem(), this))); + edit.setOnAction(e -> { + Sound.playSfx(Sound.FORWARD); + Driver.setMenu(new DiffEditor(diffs.getSelectionModel().getSelectedItem(), this)); + }); edit.setDisable(true); edit.disableProperty().bind(diffs.getSelectionModel().selectedItemProperty().isNull()); Button remove = new Button("Delete"); remove.setOnAction(e -> { + Sound.playSfx(Sound.FORWARD); try { level.difficulties.remove(diffs.getSelectionModel().getSelectedItem()); } catch (IOException ex) { @@ -78,6 +100,7 @@ public class DiffList extends Page Button refresh = new Button("Refresh"); refresh.setOnAction(e -> { + Sound.playSfx(Sound.FORWARD); try { level.difficulties.read(); } catch (IOException ex) { @@ -85,6 +108,7 @@ public class DiffList extends Page } // diffs.setItems(level.difficulties.list.sorted()); diffs.refresh(); + refresh(); }); ToggleButton create = new ToggleButton("Create"); @@ -92,6 +116,7 @@ public class DiffList extends Page Button moveUp = new Button("Move Up"); moveUp.disableProperty().bind(diffs.getSelectionModel().selectedItemProperty().isNull()); moveUp.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); Difficulty diff = diffs.getSelectionModel().selectedItemProperty().get(); ObservableList<Difficulty> diffList = level.difficulties.list; int oldIndex = diffList.indexOf(diff); @@ -110,6 +135,7 @@ public class DiffList extends Page Button moveDown = new Button("Move Down"); moveDown.disableProperty().bind(diffs.getSelectionModel().selectedItemProperty().isNull()); moveDown.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); Difficulty diff = diffs.getSelectionModel().selectedItemProperty().get(); ObservableList<Difficulty> diffList = level.difficulties.list; int oldIndex = diffList.indexOf(diff); @@ -142,7 +168,7 @@ public class DiffList extends Page Pane sidebar = new Pane(); HBox main = new HBox(); - main.getChildren().addAll(diffs,buttons, sidebar); + main.getChildren().addAll(new VBox(diffs, errorBox),buttons, sidebar); main.setSpacing(10); Button exit = new Button(); @@ -153,6 +179,7 @@ public class DiffList extends Page }); create.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); if (create.isSelected()) { sidebar.getChildren().add(newLevelBox); } @@ -162,6 +189,7 @@ public class DiffList extends Page }); newLevelButton.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); try { level.difficulties.add(newLevelEntry.getText()); } catch (FileAlreadyExistsException e) { @@ -189,4 +217,15 @@ public class DiffList extends Page public Pane getContent() { return content; } + + public void refresh() { + error.setText("Failed to load " + level.difficulties.problems.size() + " difficulty(s)"); + if (level.difficulties.problems.isEmpty()) { + errorBox.setVisible(false); + errorBox.setManaged(false); + } else { + errorBox.setVisible(true); + errorBox.setManaged(true); + } + } }
\ No newline at end of file diff --git a/src/main/java/net/sowgro/npehero/editor/ErrorList.java b/src/main/java/net/sowgro/npehero/editor/ErrorList.java new file mode 100644 index 0000000..92a9455 --- /dev/null +++ b/src/main/java/net/sowgro/npehero/editor/ErrorList.java @@ -0,0 +1,70 @@ +package net.sowgro.npehero.editor; + +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 { + + private HBox content = new HBox(); + + public ErrorList(Map<String, Exception> list, Page prev) { + + GridPane controls = new GridPane(); + ScrollPane scrollPane = new ScrollPane(controls); + scrollPane.getStyleClass().remove("scroll-pane"); + scrollPane.getStyleClass().add("box"); + scrollPane.setPadding(new Insets(10)); + controls.setPadding(new Insets(10)); + controls.setVgap(20); + controls.setHgap(40); + + scrollPane.setPrefWidth(700); + scrollPane.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75)); + + Button exit = new Button(); + exit.setText("Back"); + exit.setOnAction(e -> { + Sound.playSfx(Sound.BACKWARD); + Driver.setMenu(prev); + }); + + VBox centerBox = new VBox(); + centerBox.getChildren().addAll(scrollPane, exit); + centerBox.setSpacing(10); + centerBox.setAlignment(Pos.CENTER); + + content.getChildren().add(centerBox); + content.setAlignment(Pos.CENTER); + + int i = 0; + for (Map.Entry<String, Exception> error : list.entrySet()) { + // label + Label label = new Label(error.getKey()); + controls.add(label, 0, i); + + // reset button + Button resetButton = new Button("View Error"); + resetButton.setOnAction(_ -> Driver.setMenu(new ErrorDisplay("E: \n"+error.getValue(), this))); + controls.add(resetButton, 1, i); + i++; + } + } + + @Override + public Pane getContent() { + return content; + } +} diff --git a/src/main/java/net/sowgro/npehero/editor/LevelList.java b/src/main/java/net/sowgro/npehero/editor/LevelList.java index 86c65b5..596f433 100755 --- a/src/main/java/net/sowgro/npehero/editor/LevelList.java +++ b/src/main/java/net/sowgro/npehero/editor/LevelList.java @@ -22,6 +22,9 @@ public class LevelList extends Page { private HBox content = new HBox(); + private final Label error; + private final HBox errorBox; + public LevelList() { //sets up table view: requires special getters, setters and constructors to work @@ -61,6 +64,18 @@ public class LevelList extends Page levels.setPrefWidth(600); levels.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75)); + error = new Label(); + errorBox = new HBox(error); + errorBox.setSpacing(10); + errorBox.setPadding(new Insets(10)); + errorBox.getStyleClass().addAll("box", "red"); + errorBox.setOnMouseClicked(_ -> { + // TODO + Driver.setMenu(new ErrorList(Levels.problems, this)); + }); + refresh(); + + Button edit = new Button("Edit"); edit.setOnAction(e -> Driver.setMenu(new LevelEditor(levels.getSelectionModel().getSelectedItem(), this))); edit.setDisable(true); @@ -108,7 +123,7 @@ public class LevelList extends Page Pane sidebar = new Pane(); HBox main = new HBox(); - main.getChildren().addAll(levels,buttons,sidebar); + main.getChildren().addAll(new VBox(levels, errorBox),buttons,sidebar); main.setSpacing(10); Button exit = new Button(); @@ -156,4 +171,15 @@ public class LevelList extends Page public Pane getContent() { return content; } + + public void refresh() { + error.setText("Failed to load " + Levels.problems.size() + " level(s)"); + if (Levels.problems.isEmpty()) { + errorBox.setVisible(false); + errorBox.setManaged(false); + } else { + errorBox.setVisible(true); + errorBox.setManaged(true); + } + } }
\ No newline at end of file diff --git a/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java b/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java index b6810d8..e3db0b1 100644 --- a/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java +++ b/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java @@ -173,6 +173,12 @@ public class NotesEditor2 extends Page { throw new RuntimeException(e); } diff.endTime = newEndTime.get(); + diff.bpm = 0.0; + try { + diff.readMetadata(); + } catch (IOException e) { + // TODO + } Sound.playSfx(Sound.BACKWARD); Driver.setMenu(new DiffEditor(diff, prev.prev)); }); @@ -333,6 +339,15 @@ public class NotesEditor2 extends Page { newEndTime.set(tmp); } }); + + activeNotes.addListener((_, _, _) -> { + if (activeNotes.isEmpty()) { + selectionLabel.setText("Selection"); + } + else { + selectionLabel.setText("Selection (" + activeNotes.size() + ")"); + } + }); } @Override diff --git a/src/main/java/net/sowgro/npehero/gui/LevelDetails.java b/src/main/java/net/sowgro/npehero/gui/LevelDetails.java index 55c45bd..1ab4ae4 100755 --- a/src/main/java/net/sowgro/npehero/gui/LevelDetails.java +++ b/src/main/java/net/sowgro/npehero/gui/LevelDetails.java @@ -35,6 +35,7 @@ public class LevelDetails extends VBox rightBox.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75)); rightBox.setMinWidth(350); rightBox.getStyleClass().add("box"); + rightBox.setPadding(new Insets(5)); Button play = new Button(); play.setDisable(true); @@ -59,6 +60,7 @@ public class LevelDetails extends VBox else { VBox details = new VBox(); + details.setPadding(new Insets(5)); ScrollPane detailsScroll = new ScrollPane(details); detailsScroll.prefHeightProperty().bind(rightBox.prefHeightProperty()); diff --git a/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java b/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java index cffd95e..ea17e21 100644 --- a/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java +++ b/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java @@ -51,7 +51,7 @@ public class Difficulties { Difficulty diff = new Difficulty(cur, level); list.add(diff); } catch (IOException e) { - problems.put("", e); + problems.put(cur.getName(), e); e.printStackTrace(); } } diff --git a/src/main/java/net/sowgro/npehero/levelapi/Levels.java b/src/main/java/net/sowgro/npehero/levelapi/Levels.java index 84ffe51..f6251e9 100755 --- a/src/main/java/net/sowgro/npehero/levelapi/Levels.java +++ b/src/main/java/net/sowgro/npehero/levelapi/Levels.java @@ -40,7 +40,7 @@ public class Levels { Level level = new Level(file); list.add(level); } catch (IOException e) { - problems.put("", e); + problems.put(file.getName(), e); e.printStackTrace(); } } |