diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2024-07-20 02:12:42 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2024-07-20 02:12:42 -0400 |
commit | a2b9e7822ccb32061a97de0bcbf400ea28e94d45 (patch) | |
tree | c66b692d2ad4deabd7aa469adf46f67387817659 /src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java | |
parent | aa261bf9490582033bef55afec92673ea36d87cd (diff) | |
download | NPEhero-a2b9e7822ccb32061a97de0bcbf400ea28e94d45.tar.gz NPEhero-a2b9e7822ccb32061a97de0bcbf400ea28e94d45.tar.bz2 NPEhero-a2b9e7822ccb32061a97de0bcbf400ea28e94d45.zip |
Begin level validation and more refactoring
Diffstat (limited to 'src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java')
-rwxr-xr-x | src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java | 68 |
1 files changed, 43 insertions, 25 deletions
diff --git a/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java b/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java index 3a7561e..eef42f5 100755 --- a/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java +++ b/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java @@ -2,13 +2,10 @@ package net.sowgro.npehero.devmenu; import java.io.File; -import javafx.beans.property.ReadOnlyBooleanWrapper; import javafx.beans.property.ReadOnlyStringWrapper; import javafx.geometry.Pos; import javafx.scene.control.*; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Pane; -import javafx.scene.layout.VBox; +import javafx.scene.layout.*; import javafx.scene.text.Text; import javafx.stage.FileChooser; import javafx.stage.FileChooser.ExtensionFilter; @@ -16,6 +13,7 @@ import net.sowgro.npehero.Driver; import net.sowgro.npehero.main.Difficulty; import net.sowgro.npehero.main.Level; import net.sowgro.npehero.main.Sound; +import net.sowgro.npehero.main.ValidIndicator; public class LevelEditor extends Pane { @@ -23,11 +21,6 @@ public class LevelEditor extends Pane private File selectedPreview = null; private File selectedBackground = null; - /* - * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes. - * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature. - * style classes are defined in the style.css file. - */ public LevelEditor(Level level, Pane prev) { Text folderNameLabel = new Text("Folder name"); @@ -63,35 +56,53 @@ public class LevelEditor extends Pane HBox colorPickerBox = new HBox(); colorPickerBox.getChildren().addAll(colorsPickers); - Text filesLabel = new Text("Files"); + ValidIndicator songValid = new ValidIndicator(); + if (level.song == null) { + songValid.setInvalid("Missing file song.wav!"); + } + HBox filesLabel = new HBox(new Text("Files"), songValid); FileChooser backgroundChooser = new FileChooser(); backgroundChooser.getExtensionFilters().add(new ExtensionFilter("PNG", "*.png")); - Button backgroundButton = new Button("Import background PNG"); + Button backgroundButton = new Button("Background Image"); backgroundButton.setOnAction(e -> {selectedBackground = backgroundChooser.showOpenDialog(Driver.primaryStage);}); FileChooser previewChooser = new FileChooser(); previewChooser.getExtensionFilters().add(new ExtensionFilter("PNG", "*.png")); - Button previewButton = new Button("Import preview PNG"); + Button previewButton = new Button("Preview Image"); previewButton.setOnAction(e -> {selectedPreview = previewChooser.showOpenDialog(Driver.primaryStage);}); FileChooser songChooser = new FileChooser(); songChooser.getExtensionFilters().add(new ExtensionFilter("WAV", "*.wav")); - Button songButton = new Button("Import song WAV"); + Button songButton = new Button("Song file"); songButton.setOnAction(e -> selectedSong = songChooser.showOpenDialog(Driver.primaryStage)); - Text diffLabel = new Text("Difficulties"); + + ValidIndicator diffsInvalid = new ValidIndicator(); + if (level.difficulties.validList.isEmpty()) { + diffsInvalid.setInvalid("This level contains no valid difficulties!"); + } + HBox diffLabel = new HBox(new Text("Difficulties"), diffsInvalid); + diffLabel.setSpacing(5); + TableView<Difficulty> diffList = new TableView<>(); TableColumn<Difficulty,String> diffCol = new TableColumn<>("Difficulty"); - TableColumn<Difficulty,Boolean> validCol = new TableColumn<>("Valid?"); + TableColumn<Difficulty,String> validCol = new TableColumn<>("Valid?"); diffList.getColumns().add(diffCol); diffList.getColumns().add(validCol); diffCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().title)); - validCol.setCellValueFactory(data -> new ReadOnlyBooleanWrapper(data.getValue().isValid)); + validCol.setCellValueFactory(data -> { + if (data.getValue().isValid) { + return new ReadOnlyStringWrapper("Yes"); + } + else { + return new ReadOnlyStringWrapper("No"); + } + }); diffList.setItems(level.difficulties.list); @@ -136,17 +147,20 @@ public class LevelEditor extends Pane level.writeMetadata(); }); - VBox options = new VBox(); - options.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,artistLabel,artist,descLabel,desc,colorsLabel, - colorPickerBox,filesLabel,previewButton,backgroundButton,songButton,save); - options.setSpacing(10); + VBox left = new VBox(filesLabel, songButton, previewButton, backgroundButton, colorsLabel, colorPickerBox); + left.setSpacing(10); + left.setPrefWidth(300); - VBox diffBox = new VBox(); - diffBox.getChildren().addAll(diffLabel,diffList,/*buttons,newDiffBox,*/ newDiffs); - diffBox.setSpacing(10); + VBox center = new VBox(folderNameLabel,folderName,titleLabel,title,artistLabel,artist,descLabel,desc); + center.setSpacing(10); + center.setPrefWidth(300); + + VBox right = new VBox(diffLabel,diffList,newDiffs); + right.setSpacing(10); + center.setPrefWidth(300); HBox mainBox = new HBox(); - mainBox.getChildren().addAll(options,diffBox); + mainBox.getChildren().addAll(left, center, right); mainBox.setSpacing(30); Button exit = new Button(); @@ -156,10 +170,14 @@ public class LevelEditor extends Pane Driver.setMenu(prev); }); + HBox bottom = new HBox(save, exit); + bottom.setAlignment(Pos.CENTER); + bottom.setSpacing(10); + VBox centerBox = new VBox(); centerBox.setAlignment(Pos.CENTER); centerBox.setSpacing(10); - centerBox.getChildren().addAll(mainBox,exit); + centerBox.getChildren().addAll(mainBox,bottom); centerBox.setMinWidth(400); HBox rootBox = new HBox(); |