diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-06-05 21:53:17 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-06-05 21:53:17 -0400 |
commit | 229bd77d401beb005edfca1b3ce387e150ddd21d (patch) | |
tree | 220d4de5d1921829089c6b8b32fa221fdfe9c2a0 /src/main | |
parent | 1709842a9ac8521f18296a79286a6361aa64bcc1 (diff) | |
download | NPEhero-229bd77d401beb005edfca1b3ce387e150ddd21d.tar.gz NPEhero-229bd77d401beb005edfca1b3ce387e150ddd21d.tar.bz2 NPEhero-229bd77d401beb005edfca1b3ce387e150ddd21d.zip |
add level priority, fix sfx volume, fix settings file reading
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/Difficulty.java | 52 | ||||
-rw-r--r-- | src/main/Level.java | 55 | ||||
-rw-r--r-- | src/main/ScoreController.java | 6 | ||||
-rw-r--r-- | src/main/SettingsController.java | 50 | ||||
-rw-r--r-- | src/main/SoundController.java | 28 |
5 files changed, 119 insertions, 72 deletions
diff --git a/src/main/Difficulty.java b/src/main/Difficulty.java index 7174c33..3dba47b 100644 --- a/src/main/Difficulty.java +++ b/src/main/Difficulty.java @@ -11,7 +11,7 @@ import org.json.simple.parser.JSONParser; import javafx.collections.FXCollections; import javafx.collections.ObservableList; -public class Difficulty +public class Difficulty implements Comparable<Difficulty> { public File thisDir; public String title = "Unnamed"; @@ -21,6 +21,7 @@ public class Difficulty public int numBeats; public Level level; public boolean isValid = false; + public int priority = 0; /** * Creates a new Difficulty and gives it a file path @@ -88,9 +89,46 @@ public class Difficulty Object obj = jsonParser.parse(reader); JSONObject diffStuff = (JSONObject)(obj); //converts read object to a JSONObject - title = (String) diffStuff.get("title"); - bpm = Double.parseDouble(diffStuff.get("bpm")+""); - numBeats = Integer.parseInt(diffStuff.get("numBeats")+""); + if (diffStuff.containsKey("title")) + { + title = (String) diffStuff.get("title"); + } + else + { + System.err.println(file+" is missing properety title"); + isValid = false; + } + + if (diffStuff.containsKey("bpm")) + { + bpm = Double.parseDouble(diffStuff.get("bpm")+""); + } + else + { + System.err.println(file+" is missing properety bpm"); + isValid = false; + } + + if (diffStuff.containsKey("numBeats")) + { + numBeats = Integer.parseInt(diffStuff.get("numBeats")+""); + } + else + { + System.err.println(file+" is missing properety numBeats"); + isValid = false; + } + + if (diffStuff.containsKey("priority")) + { + priority = Integer.parseInt(diffStuff.get("priority")+""); + + } + else + { + System.err.println(file+" is missing properety priority"); + isValid = false; + } } catch (Exception e) { @@ -114,6 +152,7 @@ public class Difficulty obj.put("title", title); obj.put("bpm", bpm); obj.put("numBeats", numBeats); + obj.put("priority", priority); obj.writeJSONString(fileWriter); fileWriter.flush(); } @@ -213,4 +252,9 @@ public class Difficulty public String getTitle() { return title; } + + @Override + public int compareTo(Difficulty d) { + return priority - d.priority; + } } diff --git a/src/main/Level.java b/src/main/Level.java index eb1d92c..79f70e1 100644 --- a/src/main/Level.java +++ b/src/main/Level.java @@ -1,6 +1,7 @@ package main; import java.io.File; +import java.util.Collections; import java.util.Comparator; import javafx.collections.FXCollections; @@ -26,7 +27,7 @@ public class Level private boolean isValid; public Image preview; //optional - public String desc = "No description"; + public String desc; public Image background; //optional public Color[] colors = {Color.RED,Color.BLUE,Color.GREEN,Color.PURPLE,Color.YELLOW};//optional, have default colors public File song; @@ -71,19 +72,11 @@ public class Level { background = new Image(new File(thisDir,"background.png").toURI().toString()); } - else - { - System.out.println(thisDir+" is missing background.png, though it is not required"); - } if (new File(thisDir, "preview.png").exists()) { preview = new Image(new File(thisDir,"preview.png").toURI().toString()); } - else - { - System.out.println(thisDir+" is missing preview.png, though it is not required"); - } diffList = FXCollections.observableArrayList(); validDiffList = FXCollections.observableArrayList(); @@ -110,6 +103,8 @@ public class Level isValid1 = false; } + Collections.sort(validDiffList); + Collections.sort(diffList); isValid = isValid1; } @@ -120,18 +115,39 @@ public class Level { boolean isValid = true; JSONParser jsonParser = new JSONParser(); //parser to read the file - - try(FileReader reader = new FileReader(new File(thisDir, "metadata.json"))) + File file = new File(thisDir, "metadata.json"); + try(FileReader reader = new FileReader(file)) { Object obj = jsonParser.parse(reader); JSONObject levelStuff = new JSONObject(); levelStuff = (JSONObject)(obj); //converts read object to a JSONObject - title = (String)(levelStuff.get("title")); - artist = (String)(levelStuff.get("artist")); - desc = (String)(levelStuff.get("desc")); + if (levelStuff.containsKey("title")) + { + title = (String) levelStuff.get("title"); + } + else + { + System.err.println(file+" is missing properety title"); + isValid = false; + } - if(( levelStuff).containsKey("color1")) //check for custom colors in a hexadecimal format + if (levelStuff.containsKey("artist")) + { + artist = (String)(levelStuff.get("artist")); + } + else + { + System.err.println(file+" is missing properety aritst"); + isValid = false; + } + + if (levelStuff.containsKey("desc")) + { + desc = (String) levelStuff.get("desc"); + } + + if(( levelStuff).containsKey("color1")) //check for custom colors in a hexadecimal format (zach was lazy for not checking all five colors but i will forgive him) { colors = new Color[5]; @@ -141,10 +157,6 @@ public class Level colors[3] = Color.web((String)(levelStuff.get("color4"))); colors[4] = Color.web((String)(levelStuff.get("color5"))); } - else - { - colors = new Color[]{Color.RED,Color.BLUE,Color.GREEN,Color.PURPLE,Color.YELLOW}; - } } catch (Exception e) { @@ -166,7 +178,10 @@ public class Level JSONObject obj = new JSONObject(); obj.put("title", title); obj.put("artist", artist); - obj.put("desc", desc); + if (desc != null) + { + obj.put("desc", desc); + } obj.put("color1",colors[0].toString()); obj.put("color2",colors[1].toString()); obj.put("color3",colors[2].toString()); diff --git a/src/main/ScoreController.java b/src/main/ScoreController.java index 54dd960..2b76217 100644 --- a/src/main/ScoreController.java +++ b/src/main/ScoreController.java @@ -20,7 +20,7 @@ public class ScoreController{ score += 300*comboMultiplier; scoreProperty.setValue(score+""); comboProperty.setValue(combo +""); - System.out.println("Perfect!"); + // System.out.println("Perfect!"); } /** @@ -31,7 +31,7 @@ public class ScoreController{ score += 100*comboMultiplier; scoreProperty.setValue(score+""); comboProperty.setValue(combo+""); - System.out.println("Good"); + // System.out.println("Good"); } /** @@ -43,7 +43,7 @@ public class ScoreController{ comboMultiplier = 1; scoreProperty.setValue(score+""); comboProperty.setValue(combo+""); - System.out.println("Miss"); + // System.out.println("Miss"); } /* diff --git a/src/main/SettingsController.java b/src/main/SettingsController.java index 36fda40..b7b2cb9 100644 --- a/src/main/SettingsController.java +++ b/src/main/SettingsController.java @@ -1,57 +1,53 @@ package main;
import java.io.FileWriter;
-import java.io.FileNotFoundException;
+import java.io.File;
import java.io.FileReader;
import java.io.IOException;
-
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
-
import javafx.beans.property.SimpleDoubleProperty;
-import javafx.beans.property.SimpleIntegerProperty;
public class SettingsController
{
public SimpleDoubleProperty effectsVol = new SimpleDoubleProperty(1);
public SimpleDoubleProperty musicVol = new SimpleDoubleProperty(1);
- private JSONObject settings;
+ private File file = new File("settings.json");
+
+ public SettingsController()
+ {
+ read();
+ }
- public void read() throws ParseException
+ public void read()
{
JSONParser jsonParser = new JSONParser(); //parser to read the file
-
- try(FileReader reader = new FileReader("settings.json"))
+ try(FileReader reader = new FileReader(file))
{
Object obj = jsonParser.parse(reader);
-
+ JSONObject settings = new JSONObject();
settings = (JSONObject)(obj); //converts read object to a JSONObject
- effectsVol.set((double) settings.get("effectsVol"));
- musicVol.set((double) settings.get("musicVol"));
+ effectsVol.set(Double.parseDouble(settings.get("effectsVol")+""));
+ musicVol.set(Double.parseDouble(settings.get("musicVol")+""));
}
- catch (FileNotFoundException e)
- {
- e.printStackTrace();
- }
- catch (IOException e)
+ catch (Exception e)
{
e.printStackTrace();
- }
-
+ }
}
- public void write(int newEffVol, int newMusVol)
+ public void write()
{
- settings.put("musicVol", newMusVol);
- settings.put("effectsVol", newEffVol);
- try (FileWriter file = new FileWriter("settings.json"))
+ FileWriter fileWriter;
+ try
{
- //write the settings JSONObject instance to the file
- file.write(settings.toJSONString());
- file.flush();
-
+ fileWriter = new FileWriter(file);
+ JSONObject obj = new JSONObject();
+ obj.put("musicVol", musicVol.getValue());
+ obj.put("effectsVol", effectsVol.getValue());
+ obj.writeJSONString(fileWriter);
+ fileWriter.flush();
}
catch (IOException e) {
e.printStackTrace();
diff --git a/src/main/SoundController.java b/src/main/SoundController.java index b3c6d23..c8e6c8a 100644 --- a/src/main/SoundController.java +++ b/src/main/SoundController.java @@ -11,15 +11,18 @@ public class SoundController { public MediaPlayer songMediaPlayer; public MediaPlayer sfxMediaPlayer; - private HashMap<String,File> presets = new HashMap<>(); + private HashMap<String,MediaPlayer> effects = new HashMap<>(); private File mainMenuSong = new File("src/assets/fairyfountain.wav"); public SoundController() { - presets.put("forward", new File("src/assets/MenuForward.wav")); - presets.put("backward", new File("src/assets/MenuBackward.wav")); - presets.put("hit", new File("src/assets/Hitsound.wav")); - presets.put("miss", new File("src/assets/Miss.wav")); + effects.put("hit", new MediaPlayer(new Media(new File("src/assets/hit.wav").toURI().toString()))); + effects.put("miss", new MediaPlayer(new Media(new File("src/assets/miss.wav").toURI().toString()))); + effects.put("forward", new MediaPlayer(new Media(new File("src/assets/forward.wav").toURI().toString()))); + effects.put("backward", new MediaPlayer(new Media(new File("src/assets/backward.wav").toURI().toString()))); + effects.forEach((key,value) -> { + value.volumeProperty().bind(Driver.settingsController.effectsVol); + }); playMenuSong(); } @@ -50,20 +53,9 @@ public class SoundController } } - public void playSfx(File sfxFile) - { - if (sfxMediaPlayer != null) - { - sfxMediaPlayer.stop(); - } - Media sound = new Media(sfxFile.toURI().toString()); - sfxMediaPlayer = new MediaPlayer(sound); - sfxMediaPlayer.volumeProperty().bind(Driver.settingsController.effectsVol); //not working yet - sfxMediaPlayer.play(); - } - public void playSfx(String preset) { - playSfx(presets.get(preset)); + effects.get(preset).stop(); + effects.get(preset).play(); } }
\ No newline at end of file |