From 20bb7e56df4fb3e269cd504e9f0bd5f3341bc42f Mon Sep 17 00:00:00 2001 From: ondra Date: Mon, 19 May 2014 17:22:01 +0200 Subject: [PATCH] Remembers fullscreen on exit; fixed bug PropertyManager --- src/mightypork/gamecore/Config.java | 4 ++ .../gamecore/gui/screens/ScreenRegistry.java | 4 +- .../gamecore/render/DisplaySystem.java | 2 +- .../events/ViewportChangeEvent.java | 2 +- .../events/ViewportChangeListener.java | 2 +- .../util/files/config/PropertyManager.java | 46 +++++++++---------- src/mightypork/rogue/RogueApp.java | 11 ++++- src/mightypork/rogue/RogueConfig.java | 2 +- 8 files changed, 42 insertions(+), 31 deletions(-) rename src/mightypork/gamecore/{gui => render}/events/ViewportChangeEvent.java (94%) rename src/mightypork/gamecore/{gui => render}/events/ViewportChangeListener.java (83%) diff --git a/src/mightypork/gamecore/Config.java b/src/mightypork/gamecore/Config.java index 6d84ce3..863f588 100644 --- a/src/mightypork/gamecore/Config.java +++ b/src/mightypork/gamecore/Config.java @@ -7,6 +7,7 @@ import java.util.Map; import mightypork.gamecore.input.KeyStroke; import mightypork.gamecore.input.Keys; +import mightypork.gamecore.logging.Log; import mightypork.gamecore.util.files.config.Property; import mightypork.gamecore.util.files.config.PropertyManager; @@ -160,6 +161,7 @@ public class Config { */ public static void save() { + Log.f3("Saving config."); cfg.save(); } @@ -193,6 +195,8 @@ public class Config { } cfg.setValue(key, value); + + Log.f3("Setting option: " + key + " = " + value); } diff --git a/src/mightypork/gamecore/gui/screens/ScreenRegistry.java b/src/mightypork/gamecore/gui/screens/ScreenRegistry.java index fb68d29..cf998cc 100644 --- a/src/mightypork/gamecore/gui/screens/ScreenRegistry.java +++ b/src/mightypork/gamecore/gui/screens/ScreenRegistry.java @@ -10,10 +10,10 @@ import mightypork.gamecore.core.AppAccess; import mightypork.gamecore.core.AppModule; import mightypork.gamecore.gui.events.LayoutChangeEvent; import mightypork.gamecore.gui.events.ScreenRequestListener; -import mightypork.gamecore.gui.events.ViewportChangeEvent; -import mightypork.gamecore.gui.events.ViewportChangeListener; import mightypork.gamecore.logging.Log; import mightypork.gamecore.render.Renderable; +import mightypork.gamecore.render.events.ViewportChangeEvent; +import mightypork.gamecore.render.events.ViewportChangeListener; import mightypork.gamecore.util.annot.DefaultImpl; diff --git a/src/mightypork/gamecore/render/DisplaySystem.java b/src/mightypork/gamecore/render/DisplaySystem.java index 828a21a..9a385ad 100644 --- a/src/mightypork/gamecore/render/DisplaySystem.java +++ b/src/mightypork/gamecore/render/DisplaySystem.java @@ -7,9 +7,9 @@ import java.nio.ByteBuffer; import mightypork.gamecore.core.AppAccess; import mightypork.gamecore.core.AppModule; -import mightypork.gamecore.gui.events.ViewportChangeEvent; import mightypork.gamecore.logging.Log; import mightypork.gamecore.render.events.DisplayReadyEvent; +import mightypork.gamecore.render.events.ViewportChangeEvent; import mightypork.gamecore.util.math.constraints.rect.Rect; import mightypork.gamecore.util.math.constraints.rect.proxy.RectBound; import mightypork.gamecore.util.math.constraints.vect.Vect; diff --git a/src/mightypork/gamecore/gui/events/ViewportChangeEvent.java b/src/mightypork/gamecore/render/events/ViewportChangeEvent.java similarity index 94% rename from src/mightypork/gamecore/gui/events/ViewportChangeEvent.java rename to src/mightypork/gamecore/render/events/ViewportChangeEvent.java index dfcee18..01420c9 100644 --- a/src/mightypork/gamecore/gui/events/ViewportChangeEvent.java +++ b/src/mightypork/gamecore/render/events/ViewportChangeEvent.java @@ -1,4 +1,4 @@ -package mightypork.gamecore.gui.events; +package mightypork.gamecore.render.events; import mightypork.gamecore.eventbus.BusEvent; diff --git a/src/mightypork/gamecore/gui/events/ViewportChangeListener.java b/src/mightypork/gamecore/render/events/ViewportChangeListener.java similarity index 83% rename from src/mightypork/gamecore/gui/events/ViewportChangeListener.java rename to src/mightypork/gamecore/render/events/ViewportChangeListener.java index 0d92427..a50cd08 100644 --- a/src/mightypork/gamecore/gui/events/ViewportChangeListener.java +++ b/src/mightypork/gamecore/render/events/ViewportChangeListener.java @@ -1,4 +1,4 @@ -package mightypork.gamecore.gui.events; +package mightypork.gamecore.render.events; /** diff --git a/src/mightypork/gamecore/util/files/config/PropertyManager.java b/src/mightypork/gamecore/util/files/config/PropertyManager.java index aecf686..52a9709 100644 --- a/src/mightypork/gamecore/util/files/config/PropertyManager.java +++ b/src/mightypork/gamecore/util/files/config/PropertyManager.java @@ -128,8 +128,6 @@ public class PropertyManager { props.cfgBlankRowBetweenSections = cfgSeparateSections; props.cfgBlankRowBeforeComment = cfgNewlineBeforeComments; - final ArrayList keyList = new ArrayList<>(); - // rename keys for (final Entry entry : renameTable.entrySet()) { @@ -141,28 +139,8 @@ public class PropertyManager { props.setProperty(entry.getValue(), pr); } - // validate entries one by one, replace with default when needed - for (final Property entry : entries.values()) { - keyList.add(entry.getKey()); - - final String propOrig = props.getProperty(entry.getKey()); - - entry.parse(propOrig); - - if (entry.getComment() != null) { - props.setKeyComment(entry.getKey(), entry.getComment()); - } - - if (propOrig == null || !entry.toString().equals(propOrig)) { - props.setProperty(entry.getKey(), entry.toString()); - } - } - - // removed unused props - for (final String propname : props.keySet().toArray(new String[props.size()])) { - if (!keyList.contains(propname)) { - props.remove(propname); - } + for (final Property entry : entries.values()) { + entry.parse(props.getProperty(entry.getKey())); } renameTable.clear(); @@ -172,6 +150,26 @@ public class PropertyManager { public void save() { try { + final ArrayList keyList = new ArrayList<>(); + + // validate entries one by one, replace with default when needed + for (final Property entry : entries.values()) { + keyList.add(entry.getKey()); + + if (entry.getComment() != null) { + props.setKeyComment(entry.getKey(), entry.getComment()); + } + + props.setProperty(entry.getKey(), entry.toString()); + } + + // removed unused props + for (final String propname : props.keySet().toArray(new String[props.size()])) { + if (!keyList.contains(propname)) { + props.remove(propname); + } + } + props.store(new FileOutputStream(file), fileComment); } catch (final IOException ioe) { ioe.printStackTrace(); diff --git a/src/mightypork/rogue/RogueApp.java b/src/mightypork/rogue/RogueApp.java index aea5dd7..97d2864 100644 --- a/src/mightypork/rogue/RogueApp.java +++ b/src/mightypork/rogue/RogueApp.java @@ -14,6 +14,8 @@ import mightypork.gamecore.input.KeyStroke.Edge; import mightypork.gamecore.render.DisplaySystem; import mightypork.gamecore.render.events.FullscreenToggleRequest; import mightypork.gamecore.render.events.ScreenshotRequest; +import mightypork.gamecore.render.events.ViewportChangeEvent; +import mightypork.gamecore.render.events.ViewportChangeListener; import mightypork.gamecore.util.ion.Ion; import mightypork.rogue.RogueStateManager.RogueState; import mightypork.rogue.events.RogueStateRequest; @@ -32,7 +34,7 @@ import mightypork.rogue.world.level.Level; * * @author MightyPork */ -public final class RogueApp extends BaseApp { +public final class RogueApp extends BaseApp implements ViewportChangeListener { public RogueApp(File workdir, boolean singleInstance) { @@ -122,4 +124,11 @@ public final class RogueApp extends BaseApp { } })); } + + + @Override + public void onViewportChanged(ViewportChangeEvent event) + { + Config.setOption("opt.fullscreen", DisplaySystem.isFullscreen()); + } } diff --git a/src/mightypork/rogue/RogueConfig.java b/src/mightypork/rogue/RogueConfig.java index b2a553e..a008602 100644 --- a/src/mightypork/rogue/RogueConfig.java +++ b/src/mightypork/rogue/RogueConfig.java @@ -10,7 +10,7 @@ public class RogueConfig implements ConfigSetup { @Override public void addOptions(PropertyManager prop) { - prop.putBoolean("opt.fullscreen", false, "Start in fullscreen"); + prop.putBoolean("opt.fullscreen", false, "Start in fullscreen (remembers state at exit)"); } }