diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-06-01 00:53:04 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-06-01 00:53:04 -0400 |
commit | 6c216a309838bf1cbeb19070ce180c0170ccd3c9 (patch) | |
tree | 461f877b9417621cb0a19b1bbc735c8455a570ba /src/devmenu | |
parent | 99584f39f8e8f3b69255135665040c2a947d4021 (diff) | |
download | NPEhero-6c216a309838bf1cbeb19070ce180c0170ccd3c9.tar.gz NPEhero-6c216a309838bf1cbeb19070ce180c0170ccd3c9.tar.bz2 NPEhero-6c216a309838bf1cbeb19070ce180c0170ccd3c9.zip |
early code for level editor gui
Diffstat (limited to 'src/devmenu')
-rw-r--r-- | src/devmenu/DebugMenu.java | 58 | ||||
-rw-r--r-- | src/devmenu/DiffEditor.java | 51 | ||||
-rw-r--r-- | src/devmenu/LevelEditor.java | 77 | ||||
-rw-r--r-- | src/devmenu/LevelList.java | 54 | ||||
-rw-r--r-- | src/devmenu/NotesEditor.java | 50 |
5 files changed, 290 insertions, 0 deletions
diff --git a/src/devmenu/DebugMenu.java b/src/devmenu/DebugMenu.java new file mode 100644 index 0000000..9b68423 --- /dev/null +++ b/src/devmenu/DebugMenu.java @@ -0,0 +1,58 @@ +package devmenu; + +import gui.Driver; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +public class DebugMenu +{ + public Stage primaryStage = new Stage(); + + /* + * 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. + */ + VBox primaryPane = new VBox(); + public DebugMenu() + { + Button levelCreator = new Button(); + levelCreator.setText("LEVEL CREATOR"); + levelCreator.setOnAction(e -> new LevelList()); + + Button wallpaperTest = new Button(); + wallpaperTest.setText("wallpaper trees"); + wallpaperTest.setOnAction(e -> Driver.setBackground("assets/trees.png")); + + Button wallpaperTest2 = new Button(); + wallpaperTest2.setText("wallpaper water"); + wallpaperTest2.setOnAction(e -> Driver.setBackground("assets/water.png")); + + Button wallpaperTest3 = new Button(); + wallpaperTest3.setText("wallpaper pico"); + wallpaperTest3.setOnAction(e -> Driver.setBackground("assets/pico.png")); + + Button testVol = new Button(); + testVol.setText("print volumes"); + testVol.setOnAction(e -> System.out.println("sfx:"+Driver.settingsController.effectsVol+" msc:"+Driver.settingsController.musicVol)); + + primaryPane.getChildren().addAll(levelCreator,wallpaperTest,wallpaperTest2,wallpaperTest3,testVol); + + Scene primaryScene = new Scene(primaryPane); + primaryStage.setScene(primaryScene); + primaryStage.setTitle("debug"); + } + + public void show() + { + primaryStage.show(); + } + + public void addButton(Button b) + { + primaryPane.getChildren().add(b); + } +} diff --git a/src/devmenu/DiffEditor.java b/src/devmenu/DiffEditor.java new file mode 100644 index 0000000..278e3de --- /dev/null +++ b/src/devmenu/DiffEditor.java @@ -0,0 +1,51 @@ +package devmenu; + +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.scene.layout.VBox; +import javafx.scene.text.Text; +import javafx.stage.Stage; +import main.Difficulty; + +public class DiffEditor +{ + public DiffEditor(Difficulty diff) + { + Text folderNameLabel = new Text("Folder name (ordered alphabetically)"); + TextField folderName = new TextField(diff.thisDir.getName()); + + Text titleLabel = new Text("Title"); + TextField title = new TextField(diff.title); + + Text bpmLabel = new Text("BPM"); + TextField bpm = new TextField(diff.bpm+""); + + Text numBeatsLabel = new Text("Number of beats"); + TextField numBeats = new TextField(diff.numBeats+""); + + Button editNotes = new Button("Edit notes"); + editNotes.setOnAction(e -> new NotesEditor(diff)); + + Button editScores = new Button("Edit leaderboard"); + + Button save = new Button("Save"); + save.setOnAction(e -> { + diff.title = title.getText(); + diff.bpm = Integer.parseInt(bpm.getText()); + diff.numBeats = Integer.parseInt(numBeats.getText()); + if(! diff.thisDir.getName().equals(folderName.getText())); + { + //will rename + } + diff.writeMetadata(); + }); + + VBox main = new VBox(); + main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,bpmLabel,bpm,numBeatsLabel,numBeats,editNotes,editScores,save); + Scene scene = new Scene(main); + Stage primaryStage = new Stage(); + primaryStage.setScene(scene); + primaryStage.show(); + } +}
\ No newline at end of file diff --git a/src/devmenu/LevelEditor.java b/src/devmenu/LevelEditor.java new file mode 100644 index 0000000..00a21a3 --- /dev/null +++ b/src/devmenu/LevelEditor.java @@ -0,0 +1,77 @@ +package devmenu; + +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.ColorPicker; +import javafx.scene.control.ListView; +import javafx.scene.control.TextField; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.scene.text.Text; +import javafx.stage.Stage; +import main.Difficulty; +import main.Level; + +public class LevelEditor +{ + public LevelEditor(Level level) + { + Text folderNameLabel = new Text("Folder name"); + TextField folderName = new TextField(level.thisDir.getName()); + + Text titleLabel = new Text("Title"); + TextField title = new TextField(level.getTitle()); + + Text artistLabel = new Text("Artist"); + TextField artist = new TextField(level.getArtist()); + + Text descLabel = new Text("Description"); + TextField desc = new TextField(level.desc); + + Text colorsLabel = new Text("Colors (Left to right)"); + ColorPicker c1 = new ColorPicker(level.colors[0]); + ColorPicker c2 = new ColorPicker(level.colors[1]); + ColorPicker c3 = new ColorPicker(level.colors[2]); + ColorPicker c4 = new ColorPicker(level.colors[3]); + ColorPicker c5 = new ColorPicker(level.colors[4]); + + ObservableList diffList2 = FXCollections.observableArrayList(); + diffList2.addAll(level.getDiffList()); + ListView<Difficulty> diffList = new ListView(); + diffList.setItems(diffList2); + diffList.setOnMouseClicked(e -> new DiffEditor(diffList.getSelectionModel().getSelectedItem())); + + Text diffLabel = new Text("Difficulties"); + + TextField newDiff = new TextField("new"); + Button newDiffButton = new Button("add"); + newDiffButton.setOnAction(e -> level.addDiff(newDiff.getText())); + HBox newDiffBox = new HBox(); + newDiffBox.getChildren().addAll(newDiff,newDiffButton); + + Button save = new Button("Save"); + save.setOnAction(e -> { + level.setTitle(title.getText()); + level.setArtist(artist.getText()); + level.desc = desc.getText(); + level.colors[0] = c1.getValue(); + level.colors[1] = c2.getValue(); + level.colors[2] = c3.getValue(); + level.colors[3] = c4.getValue(); + level.colors[4] = c5.getValue(); + level.writeMetadata(); + }); + + VBox main = new VBox(); + main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,artistLabel,artist,descLabel,desc,colorsLabel,c1,c2,c3,c4,c5,diffLabel,diffList,newDiffBox,save); + + Stage primaryStage = new Stage(); + Scene scene = new Scene(main); + primaryStage.setScene(scene); + primaryStage.show(); + } +}
\ No newline at end of file diff --git a/src/devmenu/LevelList.java b/src/devmenu/LevelList.java new file mode 100644 index 0000000..e3dec7f --- /dev/null +++ b/src/devmenu/LevelList.java @@ -0,0 +1,54 @@ +package devmenu; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; + +import gui.Driver; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; +import main.Level; + +public class LevelList +{ + Stage primaryStage = new Stage(); + public LevelList() + { + //sets up table view: requires special getters, setters and constructors to work + TableView<Level> levels = new TableView<Level>(); + + TableColumn<Level,String> titleCol = new TableColumn<Level,String>("Title"); + TableColumn<Level,String> artistCol = new TableColumn<Level,String>("Artist"); + + levels.getColumns().add(titleCol); + levels.getColumns().add(artistCol); + + titleCol.setCellValueFactory(new PropertyValueFactory<Level, String>("title")); + artistCol.setCellValueFactory(new PropertyValueFactory<Level, String>("artist")); + + levels.setItems(Driver.levelController.levelList); + levels.setOnMouseClicked(e -> new LevelEditor(levels.getSelectionModel().getSelectedItem())); + + TextField newLevel = new TextField("new"); + Button newLevelButton = new Button("add"); + newLevelButton.setOnAction(e -> Driver.levelController.addLevel(newLevel.getText())); + HBox newLevelBox = new HBox(); + newLevelBox.getChildren().addAll(newLevel,newLevelButton); + + VBox main = new VBox(); + main.getChildren().addAll(levels,newLevelBox); + Scene scene = new Scene(main); + primaryStage.setScene(scene); + primaryStage.show(); + } +}
\ No newline at end of file diff --git a/src/devmenu/NotesEditor.java b/src/devmenu/NotesEditor.java new file mode 100644 index 0000000..5f26890 --- /dev/null +++ b/src/devmenu/NotesEditor.java @@ -0,0 +1,50 @@ +package devmenu; + +import java.io.File; + +import gameplay.Timer; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.layout.HBox; +import javafx.scene.text.Text; +import javafx.stage.Stage; +import main.Difficulty; +import sound.AudioFilePlayer; + +public class NotesEditor +{ + Difficulty diff; + AudioFilePlayer music; + Timer timer; + public NotesEditor(Difficulty diff) + { + this.diff = diff; + + Text timerDisplay = new Text("TIMER"); + + Button start = new Button("Start"); + start.setOnAction(e -> start()); + + Button stop = new Button("Stop"); + stop.setOnAction(e -> stop()); + + HBox main = new HBox(); + main.getChildren().addAll(timerDisplay,start,stop); + + Scene scene = new Scene(main); + Stage primaryStage = new Stage(); + primaryStage.setScene(scene); + primaryStage.show(); + } + + private void start() + { + music = new AudioFilePlayer(new File(diff.thisDir, "song.wav").toPath().toString()); + timer = new Timer(diff.bpm); + } + + private void stop() + { + + } +}
\ No newline at end of file |