diff --git a/src/engine/monitor-record.js b/src/engine/monitor-record.js index daa6f9db1..1259d5252 100644 --- a/src/engine/monitor-record.js +++ b/src/engine/monitor-record.js @@ -12,6 +12,7 @@ const MonitorRecord = Record({ mode: 'default', sliderMin: 0, sliderMax: 100, + isDiscrete: true, x: null, // (x: null, y: null) Indicates that the monitor should be auto-positioned y: null, width: 0, diff --git a/src/serialization/sb2.js b/src/serialization/sb2.js index e925929fd..9f3417183 100644 --- a/src/serialization/sb2.js +++ b/src/serialization/sb2.js @@ -381,6 +381,7 @@ const parseMonitorObject = (object, runtime, targets, extensions) => { mode: object.mode, sliderMin: object.sliderMin, sliderMax: object.sliderMax, + isDiscrete: object.isDiscrete, x: object.x, y: object.y, width: object.width, diff --git a/src/serialization/sb3.js b/src/serialization/sb3.js index 6c4a9ba8d..f4d254b25 100644 --- a/src/serialization/sb3.js +++ b/src/serialization/sb3.js @@ -504,6 +504,7 @@ const serializeMonitors = function (monitors) { if (monitorData.mode !== 'list') { serializedMonitor.sliderMin = monitorData.sliderMin; serializedMonitor.sliderMax = monitorData.sliderMax; + serializedMonitor.isDiscrete = monitorData.isDiscrete; } return serializedMonitor; }); diff --git a/test/fixtures/monitors.sb2 b/test/fixtures/monitors.sb2 index 850b1decf..587488905 100644 Binary files a/test/fixtures/monitors.sb2 and b/test/fixtures/monitors.sb2 differ diff --git a/test/integration/monitors_sb2.js b/test/integration/monitors_sb2.js index 628c10d58..12ab92a83 100644 --- a/test/integration/monitors_sb2.js +++ b/test/integration/monitors_sb2.js @@ -37,6 +37,7 @@ test('importing sb2 project with monitors', t => { t.equal(monitorRecord.mode, 'slider'); t.equal(monitorRecord.sliderMin, -200); // Make sure these are imported for sliders. t.equal(monitorRecord.sliderMax, 30); + t.equal(monitorRecord.isDiscrete, false); t.equal(monitorRecord.x, 5); // These are imported for all monitors, just check once. t.equal(monitorRecord.y, 59); t.equal(monitorRecord.visible, true); diff --git a/test/integration/monitors_sb2_to_sb3.js b/test/integration/monitors_sb2_to_sb3.js index 64a4818c9..ec881c2d3 100644 --- a/test/integration/monitors_sb2_to_sb3.js +++ b/test/integration/monitors_sb2_to_sb3.js @@ -54,6 +54,7 @@ test('saving and loading sb2 project with monitors preserves sliderMin and slide t.equal(monitorRecord.mode, 'slider'); t.equal(monitorRecord.sliderMin, -200); // Make sure these are imported for sliders. t.equal(monitorRecord.sliderMax, 30); + t.equal(monitorRecord.isDiscrete, false); t.equal(monitorRecord.x, 5); // These are imported for all monitors, just check once. t.equal(monitorRecord.y, 59); t.equal(monitorRecord.visible, true); diff --git a/test/integration/monitors_sb3.js b/test/integration/monitors_sb3.js index 3c5c08f9e..f55edb864 100644 --- a/test/integration/monitors_sb3.js +++ b/test/integration/monitors_sb3.js @@ -39,10 +39,9 @@ test('importing sb3 project with monitors', t => { t.equal(monitorRecord.opcode, 'data_variable'); t.equal(monitorRecord.mode, 'default'); // The following few properties are imported for all monitors, just check once. - // sliderMin and sliderMax are currently not implemented, - // but should still get default values serialized and deserialized correctly t.equal(monitorRecord.sliderMin, 0); t.equal(monitorRecord.sliderMax, 100); + t.equal(monitorRecord.isDiscrete, true); // The default if not present t.equal(monitorRecord.x, 10); t.equal(monitorRecord.y, 62); // Height and width are only used for list monitors and should default to 0