summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/serialize/VSSerialize.java47
-rw-r--r--src/test/java/simulator/VSSimulatorFrameStartupTest.java24
2 files changed, 65 insertions, 6 deletions
diff --git a/src/main/java/serialize/VSSerialize.java b/src/main/java/serialize/VSSerialize.java
index e8470e3..3ae1455 100644
--- a/src/main/java/serialize/VSSerialize.java
+++ b/src/main/java/serialize/VSSerialize.java
@@ -219,32 +219,32 @@ public final class VSSerialize {
// Copy non-string values from serialized prefs
for (String key : serializedPrefs.getIntegerKeySet()) {
if (!key.startsWith("lang.")) {
- prefs.initInteger(key, serializedPrefs.getInteger(key));
+ prefs.setInteger(key, serializedPrefs.getInteger(key));
}
}
for (String key : serializedPrefs.getBooleanKeySet()) {
if (!key.startsWith("lang.")) {
- prefs.initBoolean(key, serializedPrefs.getBoolean(key));
+ prefs.setBoolean(key, serializedPrefs.getBoolean(key));
}
}
for (String key : serializedPrefs.getFloatKeySet()) {
if (!key.startsWith("lang.")) {
- prefs.initFloat(key, serializedPrefs.getFloat(key));
+ prefs.setFloat(key, serializedPrefs.getFloat(key));
}
}
for (String key : serializedPrefs.getColorKeySet()) {
if (!key.startsWith("lang.")) {
- prefs.initColor(key, serializedPrefs.getColor(key));
+ prefs.setColor(key, serializedPrefs.getColor(key));
}
}
for (String key : serializedPrefs.getVectorKeySet()) {
if (!key.startsWith("lang.")) {
- prefs.initVector(key, serializedPrefs.getVector(key));
+ prefs.setVector(key, serializedPrefs.getVector(key));
}
}
for (String key : serializedPrefs.getLongKeySet()) {
if (!key.startsWith("lang.")) {
- prefs.initLong(key, serializedPrefs.getLong(key));
+ prefs.setLong(key, serializedPrefs.getLong(key));
}
}
@@ -257,6 +257,41 @@ public final class VSSerialize {
this.setObject("current_prefs", prefs);
simulator.deserialize(this, objectInputStream);
+ // Reapply saved non-localized values after deserialization so any
+ // simulator-side resets do not leave defaults like sim.seconds=15.
+ VSPrefs simulatorPrefs = simulator.getPrefs();
+ for (String key : serializedPrefs.getIntegerKeySet()) {
+ if (!key.startsWith("lang.")) {
+ simulatorPrefs.setInteger(key, serializedPrefs.getInteger(key));
+ }
+ }
+ for (String key : serializedPrefs.getBooleanKeySet()) {
+ if (!key.startsWith("lang.")) {
+ simulatorPrefs.setBoolean(key, serializedPrefs.getBoolean(key));
+ }
+ }
+ for (String key : serializedPrefs.getFloatKeySet()) {
+ if (!key.startsWith("lang.")) {
+ simulatorPrefs.setFloat(key, serializedPrefs.getFloat(key));
+ }
+ }
+ for (String key : serializedPrefs.getColorKeySet()) {
+ if (!key.startsWith("lang.")) {
+ simulatorPrefs.setColor(key, serializedPrefs.getColor(key));
+ }
+ }
+ for (String key : serializedPrefs.getVectorKeySet()) {
+ if (!key.startsWith("lang.")) {
+ simulatorPrefs.setVector(key, serializedPrefs.getVector(key));
+ }
+ }
+ for (String key : serializedPrefs.getLongKeySet()) {
+ if (!key.startsWith("lang.")) {
+ simulatorPrefs.setLong(key, serializedPrefs.getLong(key));
+ }
+ }
+ simulator.updateFromPrefs();
+
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/test/java/simulator/VSSimulatorFrameStartupTest.java b/src/test/java/simulator/VSSimulatorFrameStartupTest.java
index ecd64a3..f540033 100644
--- a/src/test/java/simulator/VSSimulatorFrameStartupTest.java
+++ b/src/test/java/simulator/VSSimulatorFrameStartupTest.java
@@ -13,6 +13,7 @@ import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.Test;
import prefs.VSDefaultPrefs;
+import serialize.VSSerialize;
public class VSSimulatorFrameStartupTest {
private static final String RAFT_FILE = "saved-simulations/raft.dat";
@@ -78,4 +79,27 @@ public class VSSimulatorFrameStartupTest {
SwingUtilities.invokeAndWait(frame::dispose);
}
}
+
+ @Test
+ void openSimulatorPreservesSavedReplayDuration() throws Exception {
+ Assumptions.assumeFalse(GraphicsEnvironment.isHeadless(),
+ "requires a display");
+
+ TrackingSimulatorFrame frame = new TrackingSimulatorFrame();
+ try {
+ frame.resetTracking();
+
+ VSSerialize serialize = new VSSerialize();
+ VSSimulator simulator = serialize.openSimulator(RAFT_FILE, frame);
+ assertNotNull(simulator);
+
+ SwingUtilities.invokeAndWait(() -> { });
+
+ assertEquals(simulator, frame.getCurrentSimulator());
+ assertEquals(60, simulator.getPrefs().getInteger("sim.seconds"));
+ assertEquals(60000L, simulator.getSimulatorCanvas().getUntilTime());
+ } finally {
+ SwingUtilities.invokeAndWait(frame::dispose);
+ }
+ }
}