aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-06-02 00:48:13 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-06-02 00:48:13 -0400
commit4e43d6f020d908ccd9b8a6b77803cac943da00ed (patch)
treeae0eb103049a5838ebc7f1de35cc16988a4f07d8 /src/main
parent48bfed142f7175809a43037fb695b6fcdc4146b1 (diff)
downloadNPEhero-4e43d6f020d908ccd9b8a6b77803cac943da00ed.tar.gz
NPEhero-4e43d6f020d908ccd9b8a6b77803cac943da00ed.tar.bz2
NPEhero-4e43d6f020d908ccd9b8a6b77803cac943da00ed.zip
Finish levelUtility and project cleanup
Diffstat (limited to 'src/main')
-rw-r--r--src/main/Difficulty.java110
-rw-r--r--src/main/Level.java95
-rw-r--r--src/main/LevelController.java32
-rw-r--r--src/main/SettingsController.java36
4 files changed, 189 insertions, 84 deletions
diff --git a/src/main/Difficulty.java b/src/main/Difficulty.java
index c5dfca3..18dabb3 100644
--- a/src/main/Difficulty.java
+++ b/src/main/Difficulty.java
@@ -1,16 +1,13 @@
package main;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.time.LocalDate;
-
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
-
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
@@ -21,15 +18,20 @@ public class Difficulty
private ObservableList<LeaderboardEntry> leaderboard = FXCollections.observableArrayList();
public File notes;
public int bpm;
- public File song;
public int numBeats;
- private File leaderboardFile;
- public Difficulty(File file)
+ /**
+ * Creates a new Difficulty and gives it a file path
+ * @param newDir: The file path of the Difficulty
+ */
+ public Difficulty(File newDir)
{
- thisDir = file;
+ thisDir = newDir;
}
+ /**
+ * Checks for files in the difficulty folder and runs cooresponding actions
+ */
public void readData()
{
for(File cur: thisDir.listFiles()) //iterates through all files/folders in src/assets/levels/LEVEL/DIFFICULTY
@@ -40,20 +42,18 @@ public class Difficulty
}
if (cur.getName().equals("leaderboard.json"))
{
- parseLeaderboard(cur);
+ parseLeaderboard();
}
if (cur.getName().equals("notes.txt"))
{
notes = cur;
}
- if (cur.getName().equals("song.wav"))
- {
- song = cur;
- }
}
}
-
+ /**
+ * Reads in json metadata and assigns values to variables
+ */
public void parseMetadata()
{
File file = new File(thisDir, "metadata.json");
@@ -65,20 +65,44 @@ public class Difficulty
JSONObject diffStuff = (JSONObject)(obj); //converts read object to a JSONObject
title = (String) diffStuff.get("title");
- bpm = (int)(diffStuff.get("bpm"));
- numBeats = (int)(diffStuff.get("numBeats"));
-
+ bpm = Integer.parseInt(diffStuff.get("bpm")+"");
+ numBeats = Integer.parseInt(diffStuff.get("numBeats")+"");
}
catch (Exception e)
{
- System.out.println("Error in json file "+file);
- //e.printStackTrace();
+ e.printStackTrace();
}
}
- public void parseLeaderboard(File file)
+ /**
+ * Writes metadata to json file
+ */
+ public void writeMetadata()
{
- leaderboardFile = file;
+ 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();
+ }
+ }
+
+ /**
+ * Reads in json leaderboard and assigns populates list with leaderboardEntries
+ */
+ public void parseLeaderboard()
+ {
+ File file = new File(thisDir, "leaderboard.json");
JSONParser jsonParser = new JSONParser(); //parser to read the file
try(FileReader reader = new FileReader(file))
@@ -99,17 +123,20 @@ public class Difficulty
}
catch (Exception e)
{
- System.out.println("Error in json file "+leaderboardFile);
- //e.printStackTrace();
+ e.printStackTrace();
}
}
- public void addToLeaderboard(String name, int score)
+ /**
+ * Writes leaderboard to json file
+ */
+ public void writeLeaderboard()
{
- leaderboard.add(new LeaderboardEntry(name, score, ""+LocalDate.now())); //do not delete this tho its not a placeholder
-
- try (FileWriter fileWriter = new FileWriter(leaderboardFile))
+ FileWriter fileWriter;
+ try
{
+ File file = new File(thisDir, "leaderboard.json");
+ fileWriter = new FileWriter(file);
//write the settings JSONObject instance to the file
JSONArray jsonArray = new JSONArray();
for (LeaderboardEntry cur: leaderboard)
@@ -129,6 +156,17 @@ public class Difficulty
}
}
+ /**
+ * Adds new leaderboardEntry to list and updates json file
+ * @param name: the players name
+ * @param score the players score
+ */
+ public void addToLeaderboard(String name, int score)
+ {
+ leaderboard.add(new LeaderboardEntry(name, score, ""+LocalDate.now())); //do not delete this tho its not a placeholder
+ writeLeaderboard();
+ }
+
public ObservableList<LeaderboardEntry> getLeaderboard()
{
return leaderboard;
@@ -138,24 +176,4 @@ public class Difficulty
{
return title;
}
-
- 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 56433f3..591bd9a 100644
--- a/src/main/Level.java
+++ b/src/main/Level.java
@@ -2,18 +2,17 @@ package main;
import java.io.File;
import java.util.ArrayList;
+import java.util.Comparator;
import javafx.scene.image.Image;
import javafx.scene.paint.Color;
import java.io.FileWriter;
-import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
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
{
@@ -26,12 +25,20 @@ public class Level
public String desc = "No description";
public Image background; //optional
public Color[] colors = {Color.RED,Color.BLUE,Color.GREEN,Color.PURPLE,Color.YELLOW};//optional, have default colors
+ public File song;
- public Level(File dir)
+ /**
+ * Creates a new level and gives it a file path
+ * @param newDir: The path of the Level
+ */
+ public Level(File newDir)
{
- thisDir = dir;
+ thisDir = newDir;
}
+ /**
+ * Checks for files in the level folder and runs cooresponding actions
+ */
public void readData()
{
diffList = new ArrayList<Difficulty>();
@@ -43,24 +50,28 @@ public class Level
diff.readData();
diffList.add(diff);
}
-
- if (cur.getName().equals("preview.png"))
- {
- preview = new Image(cur.toURI().toString());
- }
-
if (cur.getName().equals("metadata.json"))
{
parseMetadata();
}
-
+ if (cur.getName().equals("preview.png"))
+ {
+ preview = new Image(cur.toURI().toString());
+ }
if (cur.getName().equals("background.png"))
{
background = new Image(cur.toURI().toString());
}
+ if (cur.getName().equals("song.wav"))
+ {
+ song = cur;
+ }
}
}
+ /**
+ * Reads in json metadata and assigns values to variables
+ */
public void parseMetadata()
{
JSONParser jsonParser = new JSONParser(); //parser to read the file
@@ -96,6 +107,9 @@ public class Level
}
}
+ /**
+ * Writes metadata to json file
+ */
public void writeMetadata()
{
FileWriter fileWriter;
@@ -119,27 +133,70 @@ public class Level
}
}
- public ArrayList<Difficulty> getDiffList()
- {
- return diffList;
- }
-
+ /**
+ * Adds a difficulty by creating a directory and required files
+ * @param text: the name of the directory and default title
+ */
public void addDiff(String text)
{
File diffDir = new File(thisDir, text);
diffDir.mkdirs();
File metadataDir = new File(diffDir, "metadata.json");
+ File leaderboardDir = new File(diffDir, "leaderboard.json");
+ File notesDir = new File(diffDir, "notes.txt");
try {
metadataDir.createNewFile();
+ leaderboardDir.createNewFile();
+ notesDir.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
Difficulty temp = new Difficulty(diffDir);
temp.title = text;
temp.writeMetadata();
+ temp.writeLeaderboard();
+ readData();
+ }
+
+ /**
+ * Removes the difficaulty from the filesystem then reloads the level
+ * @param diff: the difficulty to be removed
+ */
+ public void removeDiff(Difficulty diff)
+ {
+ File hold = diff.thisDir;
+ diffList.remove(diff);
+
+ try {
+ Files.walk(hold.toPath())
+ .sorted(Comparator.reverseOrder())
+ .map(Path::toFile)
+ .forEach(File::delete);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Copies a file into the level directory
+ * @param newFile: the file to be copied
+ * @param name: the new file name
+ */
+ public void addFile(File newFile, String name)
+ {
+ try {
+ Files.copy(newFile.toPath(), new File(thisDir, name).toPath(), StandardCopyOption.REPLACE_EXISTING);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
readData();
}
+ public ArrayList<Difficulty> getDiffList()
+ {
+ return diffList;
+ }
+
public String getTitle()
{
return title;
diff --git a/src/main/LevelController.java b/src/main/LevelController.java
index 9a94838..78d638a 100644
--- a/src/main/LevelController.java
+++ b/src/main/LevelController.java
@@ -2,6 +2,9 @@ package main;
import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Comparator;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
@@ -11,11 +14,17 @@ public class LevelController
File thisDir = new File("levels");
public static ObservableList<Level> levelList;
+ /**
+ * Creates a levelController, which holds all the levels
+ */
public LevelController()
{
readData();
}
+ /**
+ * Reads contents of folder and creates cooresponding levels
+ */
public void readData()
{
levelList = FXCollections.observableArrayList();
@@ -27,6 +36,10 @@ public class LevelController
}
}
+ /**
+ * Adds a level to the list by creating a directory and required files
+ * @param text: the name of the directory and default title
+ */
public void addLevel(String text)
{
File levelDir = new File(thisDir,text);
@@ -45,4 +58,23 @@ public class LevelController
temp.writeMetadata();
readData();
}
+
+ /**
+ * Removes level from the filesystem then reloads this levelController
+ * @param level: the level to be removed
+ */
+ public void removeLevel(Level level)
+ {
+ File hold = level.thisDir;
+ levelList.remove(level);
+
+ try {
+ Files.walk(hold.toPath())
+ .sorted(Comparator.reverseOrder())
+ .map(Path::toFile)
+ .forEach(File::delete);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
} \ No newline at end of file
diff --git a/src/main/SettingsController.java b/src/main/SettingsController.java
index f3bd671..4bd2b24 100644
--- a/src/main/SettingsController.java
+++ b/src/main/SettingsController.java
@@ -15,26 +15,9 @@ public class SettingsController
{
public SimpleIntegerProperty effectsVol = new SimpleIntegerProperty(0);
public SimpleIntegerProperty musicVol = new SimpleIntegerProperty(0);
- private boolean fullscreen;
private JSONObject settings;
- public void saveAndWrite(int newEffVol, int newMusVol)
- {
- settings.put("musicVol", newMusVol);
- settings.put("effectsVol", newEffVol);
- try (FileWriter file = new FileWriter("settings.json"))
- {
- //write the settings JSONObject instance to the file
- file.write(settings.toJSONString());
- file.flush();
-
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public void readFile() throws ParseException
+ public void read() throws ParseException
{
JSONParser jsonParser = new JSONParser(); //parser to read the file
@@ -57,5 +40,20 @@ public class SettingsController
}
}
-
+
+ public void write(int newEffVol, int newMusVol)
+ {
+ settings.put("musicVol", newMusVol);
+ settings.put("effectsVol", newEffVol);
+ try (FileWriter file = new FileWriter("settings.json"))
+ {
+ //write the settings JSONObject instance to the file
+ file.write(settings.toJSONString());
+ file.flush();
+
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}