diff --git a/src/de/miaurizius/jgame2d/core/Config.java b/src/de/miaurizius/jgame2d/core/Config.java index 67c8c79..d5e4be1 100644 --- a/src/de/miaurizius/jgame2d/core/Config.java +++ b/src/de/miaurizius/jgame2d/core/Config.java @@ -3,23 +3,19 @@ package de.miaurizius.jgame2d.core; import java.io.*; import java.util.HashMap; import java.util.List; +import java.util.Map; public class Config { private final GamePanel panel; private final HashMap settings = new HashMap<>(); - private final String[] options = new String[]{ - "fullscreen", //0 - "music-vol", //1 - "sfx-vol" //2 - }; public Config(GamePanel panel) { this.panel = panel; - for (String option : options) settings.put(option, null); + for (SETTING option : SETTING.values()) settings.put(option.name, null); } - // + // GENERAL public final void save() { try { insertToHash(); @@ -38,16 +34,25 @@ public class Config { } } public final void load() { - try { - BufferedReader reader = new BufferedReader(new FileReader("gamedata/config")); + try (BufferedReader reader = new BufferedReader(new FileReader("gamedata/config"))) { List lines = reader.lines().toList(); - if(lines.isEmpty()) return; //No config found, use default values - for (int i = 0; i < options.length; i++) { - String value = lines.get(i).split(": ")[1]; - switch (options[i]) { - case "fullscreen" -> panel.fullscreen = Boolean.parseBoolean(value); - case "music-vol" -> panel.music.volumeScale = Integer.parseInt(value); - case "sfx-vol" -> panel.sfx.volumeScale = Integer.parseInt(value); + if (lines.isEmpty()) return; + Map configMap = new HashMap<>(); + for (String line : lines) { + String[] parts = line.split(":\\s*", 2); + if (parts.length == 2) { + configMap.put(parts[0].trim(), parts[1].trim()); + } + } + + for (SETTING setting : SETTING.values()) { + String value = configMap.get(setting.name); + if (value != null) { + switch (setting) { + case FULLSCREEN -> panel.fullscreen = Boolean.parseBoolean(value); + case MUSICVOLUME -> panel.music.volumeScale = Integer.parseInt(value); + case SFXVOLUME -> panel.sfx.volumeScale = Integer.parseInt(value); + } } } insertToHash(); @@ -58,8 +63,21 @@ public class Config { // HELP FUNCTIONS private void insertToHash() { - settings.put(options[0], String.valueOf(panel.fullscreen)); - settings.put(options[1], String.valueOf(panel.music.volumeScale)); - settings.put(options[2], String.valueOf(panel.sfx.volumeScale)); + settings.put(SETTING.FULLSCREEN.name, String.valueOf(panel.fullscreen)); + settings.put(SETTING.MUSICVOLUME.name, String.valueOf(panel.music.volumeScale)); + settings.put(SETTING.SFXVOLUME.name, String.valueOf(panel.sfx.volumeScale)); } + + private enum SETTING { + FULLSCREEN("fullscreen"), + MUSICVOLUME("music-vol"), + SFXVOLUME("sfx-vol"); + + private final String name; + + SETTING(String name) { + this.name = name; + } + } + }