aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-06-01 11:38:04 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-06-01 11:38:04 -0400
commit48bfed142f7175809a43037fb695b6fcdc4146b1 (patch)
treee489132ad42bd7049b9854f6d6ed74673c796f43
parent6c216a309838bf1cbeb19070ce180c0170ccd3c9 (diff)
downloadNPEhero-48bfed142f7175809a43037fb695b6fcdc4146b1.tar.gz
NPEhero-48bfed142f7175809a43037fb695b6fcdc4146b1.tar.bz2
NPEhero-48bfed142f7175809a43037fb695b6fcdc4146b1.zip
finish gui level editor
-rw-r--r--src/devmenu/DiffEditor.java1
-rw-r--r--src/devmenu/LevelEditor.java10
-rw-r--r--src/devmenu/LevelList.java5
-rw-r--r--src/main/Difficulty.java28
-rw-r--r--src/main/Level.java35
-rw-r--r--src/main/LevelController.java14
6 files changed, 55 insertions, 38 deletions
diff --git a/src/devmenu/DiffEditor.java b/src/devmenu/DiffEditor.java
index 278e3de..fbc0d8a 100644
--- a/src/devmenu/DiffEditor.java
+++ b/src/devmenu/DiffEditor.java
@@ -14,6 +14,7 @@ public class DiffEditor
{
Text folderNameLabel = new Text("Folder name (ordered alphabetically)");
TextField folderName = new TextField(diff.thisDir.getName());
+ folderName.setDisable(true);
Text titleLabel = new Text("Title");
TextField title = new TextField(diff.title);
diff --git a/src/devmenu/LevelEditor.java b/src/devmenu/LevelEditor.java
index 00a21a3..5e9a818 100644
--- a/src/devmenu/LevelEditor.java
+++ b/src/devmenu/LevelEditor.java
@@ -22,6 +22,7 @@ public class LevelEditor
{
Text folderNameLabel = new Text("Folder name");
TextField folderName = new TextField(level.thisDir.getName());
+ folderName.setDisable(true);
Text titleLabel = new Text("Title");
TextField title = new TextField(level.getTitle());
@@ -47,6 +48,13 @@ public class LevelEditor
Text diffLabel = new Text("Difficulties");
+ Button refresh = new Button("Refresh");
+ refresh.setOnAction(e -> {
+ diffList2.clear();
+ diffList2.addAll(level.getDiffList());
+ diffList.setItems(diffList2);
+ });
+
TextField newDiff = new TextField("new");
Button newDiffButton = new Button("add");
newDiffButton.setOnAction(e -> level.addDiff(newDiff.getText()));
@@ -67,7 +75,7 @@ public class LevelEditor
});
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);
+ main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,artistLabel,artist,descLabel,desc,colorsLabel,c1,c2,c3,c4,c5,diffLabel,diffList,refresh,newDiffBox,save);
Stage primaryStage = new Stage();
Scene scene = new Scene(main);
diff --git a/src/devmenu/LevelList.java b/src/devmenu/LevelList.java
index e3dec7f..66ff797 100644
--- a/src/devmenu/LevelList.java
+++ b/src/devmenu/LevelList.java
@@ -39,6 +39,9 @@ public class LevelList
levels.setItems(Driver.levelController.levelList);
levels.setOnMouseClicked(e -> new LevelEditor(levels.getSelectionModel().getSelectedItem()));
+ Button refresh = new Button("Refresh");
+ refresh.setOnAction(e -> levels.setItems(Driver.levelController.levelList));
+
TextField newLevel = new TextField("new");
Button newLevelButton = new Button("add");
newLevelButton.setOnAction(e -> Driver.levelController.addLevel(newLevel.getText()));
@@ -46,7 +49,7 @@ public class LevelList
newLevelBox.getChildren().addAll(newLevel,newLevelButton);
VBox main = new VBox();
- main.getChildren().addAll(levels,newLevelBox);
+ main.getChildren().addAll(levels,refresh,newLevelBox);
Scene scene = new Scene(main);
primaryStage.setScene(scene);
primaryStage.show();
diff --git a/src/main/Difficulty.java b/src/main/Difficulty.java
index 2c74956..c5dfca3 100644
--- a/src/main/Difficulty.java
+++ b/src/main/Difficulty.java
@@ -17,7 +17,7 @@ import javafx.collections.ObservableList;
public class Difficulty
{
public File thisDir;
- public String title;
+ public String title = "Unnamed";
private ObservableList<LeaderboardEntry> leaderboard = FXCollections.observableArrayList();
public File notes;
public int bpm;
@@ -28,7 +28,6 @@ public class Difficulty
public Difficulty(File file)
{
thisDir = file;
- readData();
}
public void readData()
@@ -37,7 +36,7 @@ public class Difficulty
{
if (cur.getName().equals("metadata.json"))
{
- parseMetadata(cur);
+ parseMetadata();
}
if (cur.getName().equals("leaderboard.json"))
{
@@ -55,8 +54,9 @@ public class Difficulty
}
- public void parseMetadata(File file)
+ public void parseMetadata()
{
+ File file = new File(thisDir, "metadata.json");
JSONParser jsonParser = new JSONParser(); //parser to read the file
try(FileReader reader = new FileReader(file))
@@ -139,7 +139,23 @@ public class Difficulty
return title;
}
- public void writeMetadata() {
-
+ public void writeMetadata()
+ {
+ FileWriter fileWriter;
+ try
+ {
+ File file = new File(thisDir, "metadata.json");
+ fileWriter = new FileWriter(file);
+ JSONObject obj = new JSONObject();
+ obj.put("title", title);
+ obj.put("bpm", bpm);
+ obj.put("numBeats", numBeats);
+ obj.writeJSONString(fileWriter);
+ fileWriter.flush();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
}
}
diff --git a/src/main/Level.java b/src/main/Level.java
index 95d6b5d..56433f3 100644
--- a/src/main/Level.java
+++ b/src/main/Level.java
@@ -12,24 +12,24 @@ import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
+import devmenu.LevelList;
import gui.Driver;
public class Level
{
public File thisDir;
- private String title;
- private String artist;
+ private String title = "Unnamed";
+ private String artist = "Unknown";
private ArrayList<Difficulty> diffList;
public Image preview; //optional
- public String desc;
+ public String desc = "No description";
public Image background; //optional
- public Color[] colors;//optional, have default colors
+ public Color[] colors = {Color.RED,Color.BLUE,Color.GREEN,Color.PURPLE,Color.YELLOW};//optional, have default colors
public Level(File dir)
{
thisDir = dir;
- readData();
}
public void readData()
@@ -40,6 +40,7 @@ public class Level
if (cur.isDirectory()) //all subfolders within a level folder are difficulties
{
Difficulty diff = new Difficulty(cur);
+ diff.readData();
diffList.add(diff);
}
@@ -105,12 +106,13 @@ public class Level
obj.put("title", title);
obj.put("artist", artist);
obj.put("desc", desc);
- obj.put("color1",colors[0]);
- obj.put("color2",colors[1]);
- obj.put("color3",colors[2]);
- obj.put("color4",colors[3]);
- obj.put("color5",colors[4]);
+ obj.put("color1",colors[0].toString());
+ obj.put("color2",colors[1].toString());
+ obj.put("color3",colors[2].toString());
+ obj.put("color4",colors[3].toString());
+ obj.put("color5",colors[4].toString());
obj.writeJSONString(fileWriter);
+ fileWriter.flush();
}
catch (IOException e) {
e.printStackTrace();
@@ -132,19 +134,12 @@ public class Level
} catch (IOException e) {
e.printStackTrace();
}
+ Difficulty temp = new Difficulty(diffDir);
+ temp.title = text;
+ temp.writeMetadata();
readData();
}
- public void removeDiff(Difficulty diff)
- {
- //soon
- }
-
- public void renameDiff(Difficulty diff, String newName)
- {
- //soon
- }
-
public String getTitle()
{
return title;
diff --git a/src/main/LevelController.java b/src/main/LevelController.java
index eff512d..9a94838 100644
--- a/src/main/LevelController.java
+++ b/src/main/LevelController.java
@@ -22,6 +22,7 @@ public class LevelController
for (File cur: thisDir.listFiles()) //iterates through all files/folders in levels
{
Level level = new Level(cur);
+ level.readData();
levelList.add(level);
}
}
@@ -39,16 +40,9 @@ public class LevelController
{
e.printStackTrace();
}
+ Level temp = new Level(levelDir);
+ temp.setTitle(text);
+ temp.writeMetadata();
readData();
}
-
- public void removeLevel(Level level)
- {
- //soon
- }
-
- public void renameLevel(Level level, String newName)
- {
- //soon
- }
} \ No newline at end of file