diff --git a/src/de/miaurizius/jgame2d/core/Config.java b/src/de/miaurizius/jgame2d/core/Config.java deleted file mode 100644 index a9ddea8..0000000 --- a/src/de/miaurizius/jgame2d/core/Config.java +++ /dev/null @@ -1,85 +0,0 @@ -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<>(); - - public Config(GamePanel panel) throws IOException { - this.panel = panel; - for (Setting option : Setting.values()) settings.put(option.name, null); - new File("gamedata").mkdirs(); - new File("gamedata/config").createNewFile(); - } - - // GENERAL - public final void save() { - try { - insertToHash(); - BufferedWriter writer = new BufferedWriter(new FileWriter("gamedata/config")); - settings.forEach((invoke, value) -> { - try { - writer.write(invoke + ": " + value); - writer.newLine(); - } catch (IOException e) { - throw new RuntimeException(e); - } - }); - writer.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - public final void load() { - try (BufferedReader reader = new BufferedReader(new FileReader("gamedata/config"))) { - List lines = reader.lines().toList(); - 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(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - // HELP FUNCTIONS - private void insertToHash() { - 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; - } - } - -} diff --git a/src/de/miaurizius/jgame2d/core/GamePanel.java b/src/de/miaurizius/jgame2d/core/GamePanel.java index 0ce2f21..8dec8cf 100644 --- a/src/de/miaurizius/jgame2d/core/GamePanel.java +++ b/src/de/miaurizius/jgame2d/core/GamePanel.java @@ -4,6 +4,8 @@ import de.miaurizius.jgame2d.aStar.PathFinder; import de.miaurizius.jgame2d.core.enums.GameState; import de.miaurizius.jgame2d.core.enums.Map; import de.miaurizius.jgame2d.core.handlers.*; +import de.miaurizius.jgame2d.data.Config; +import de.miaurizius.jgame2d.data.SaveLoad; import de.miaurizius.jgame2d.entity.Entity; import de.miaurizius.jgame2d.entity.Player; import de.miaurizius.jgame2d.environment.EnvironmentManager; @@ -61,6 +63,7 @@ public class GamePanel extends JPanel implements Runnable { public PathFinder pFinder = new PathFinder(this); public EnvironmentManager eManager = new EnvironmentManager(this); public MiniMap mapMan = new MiniMap(this); + public SaveLoad saveLoad = new SaveLoad(this); Thread gameThread; // ENTITY AND OBJECT diff --git a/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java b/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java index 12dbf85..ea350da 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java +++ b/src/de/miaurizius/jgame2d/core/handlers/EventHandler.java @@ -1,5 +1,6 @@ package de.miaurizius.jgame2d.core.handlers; +import de.miaurizius.jgame2d.core.Boot; import de.miaurizius.jgame2d.core.GamePanel; import de.miaurizius.jgame2d.core.enums.Direction; import de.miaurizius.jgame2d.core.enums.GameState; @@ -7,6 +8,7 @@ import de.miaurizius.jgame2d.core.enums.Map; import de.miaurizius.jgame2d.entity.Entity; import java.awt.*; +import java.util.logging.Level; public class EventHandler { @@ -104,10 +106,15 @@ public class EventHandler { panel.gameState = GameState.DIALOGUE; panel.player.attackCancel = true; panel.playSE(2); - panel.ui.currentDialogue = "You drank the holy water.\nYour life has been recovered!\nBut all monsters respawned... \nGood luck!"; + panel.ui.currentDialogue = "You drank the holy water.\nYour life has been recovered!\nYou progress has been saved."; panel.player.life = panel.player.maxLife; canTouchEvent = false; panel.assetSetter.setMonster(); + try { + panel.saveLoad.save(); + } catch (Exception e) { + Boot.logger.log(Level.SEVERE, "Saving game failed!", e); + } } private void changeMap(Map map, int col, int row) { panel.gameState = GameState.TRANSITION; diff --git a/src/de/miaurizius/jgame2d/core/handlers/KeyHandler.java b/src/de/miaurizius/jgame2d/core/handlers/KeyHandler.java index a8f8c7f..959ce91 100644 --- a/src/de/miaurizius/jgame2d/core/handlers/KeyHandler.java +++ b/src/de/miaurizius/jgame2d/core/handlers/KeyHandler.java @@ -1,5 +1,6 @@ package de.miaurizius.jgame2d.core.handlers; +import de.miaurizius.jgame2d.core.Boot; import de.miaurizius.jgame2d.core.GamePanel; import de.miaurizius.jgame2d.core.UI; import de.miaurizius.jgame2d.core.enums.GameState; @@ -7,6 +8,7 @@ import de.miaurizius.jgame2d.core.enums.Map; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; +import java.util.logging.Level; public class KeyHandler implements KeyListener { @@ -34,7 +36,14 @@ public class KeyHandler implements KeyListener { panel.playMusic(0); break; case 1: - // add later + System.out.printf("Loading config...%n"); + try { + panel.config.load(); + panel.gameState = GameState.PLAY; + panel.playMusic(0); + } catch (Exception e) { + Boot.logger.log(Level.SEVERE, "Failed to load config", e); + } break; case 2: System.exit(0);