summaryrefslogtreecommitdiff
path: root/objects.js
diff options
context:
space:
mode:
authorjmoenig <jens@moenig.org>2014-01-09 15:34:12 +0100
committerjmoenig <jens@moenig.org>2014-01-09 15:36:16 +0100
commit8a1ca3116b834625e6f71c6376c115975d4f9d75 (patch)
treee827c2f916f1f7bde9c6f038282bd909a6916617 /objects.js
parent4139efc35f2d36ca9088351f8ac32de9c2d6d4d1 (diff)
downloadsnap-byow-8a1ca3116b834625e6f71c6376c115975d4f9d75.tar.gz
snap-byow-8a1ca3116b834625e6f71c6376c115975d4f9d75.zip
Collapse STOP primitives into a single block with a dropdown of options
Diffstat (limited to 'objects.js')
-rw-r--r--objects.js55
1 files changed, 46 insertions, 9 deletions
diff --git a/objects.js b/objects.js
index 9f892d4..3f3df76 100644
--- a/objects.js
+++ b/objects.js
@@ -124,7 +124,7 @@ PrototypeHatBlockMorph*/
// Global stuff ////////////////////////////////////////////////////////
-modules.objects = '2014-January-08';
+modules.objects = '2014-January-09';
var SpriteMorph;
var StageMorph;
@@ -581,6 +581,9 @@ SpriteMorph.prototype.initBlocks = function () {
category: 'control',
spec: 'if %b %c else %c'
},
+
+ /* migrated to a newer block version:
+
doStop: {
type: 'command',
category: 'control',
@@ -591,6 +594,13 @@ SpriteMorph.prototype.initBlocks = function () {
category: 'control',
spec: 'stop all %stop'
},
+ */
+
+ doStopThis: {
+ type: 'command',
+ category: 'control',
+ spec: 'stop %stopChoices'
+ },
doStopOthers: {
type: 'command',
category: 'control',
@@ -635,11 +645,13 @@ SpriteMorph.prototype.initBlocks = function () {
category: 'control',
spec: 'report %s'
},
- doStopBlock: {
+ /*
+ doStopBlock: { // migrated to a newer block version
type: 'command',
category: 'control',
spec: 'stop block'
},
+ */
doCallCC: {
type: 'command',
category: 'control',
@@ -1084,6 +1096,25 @@ SpriteMorph.prototype.initBlocks = function () {
SpriteMorph.prototype.initBlocks();
+SpriteMorph.prototype.initBlockMigrations = function () {
+ SpriteMorph.prototype.blockMigrations = {
+ doStopAll: {
+ selector: 'doStopThis',
+ inputs: [['all']]
+ },
+ doStop: {
+ selector: 'doStopThis',
+ inputs: [['this script']]
+ },
+ doStopBlock: {
+ selector: 'doStopThis',
+ inputs: [['this block']]
+ }
+ };
+};
+
+SpriteMorph.prototype.initBlockMigrations();
+
SpriteMorph.prototype.blockAlternatives = {
// motion:
turn: ['turnLeft'],
@@ -1130,9 +1161,6 @@ SpriteMorph.prototype.blockAlternatives = {
receiveClick: ['receiveGo'],
doBroadcast: ['doBroadcastAndWait'],
doBroadcastAndWait: ['doBroadcast'],
- doStopBlock: ['doStop', 'doStopAll'],
- doStop: ['doStopBlock', 'doStopAll'],
- doStopAll: ['doStopBlock', 'doStop'],
// sensing:
getLastAnswer: ['getTimer'],
@@ -1412,8 +1440,9 @@ SpriteMorph.prototype.colorFiltered = function (aColor) {
// SpriteMorph block instantiation
SpriteMorph.prototype.blockForSelector = function (selector, setDefaults) {
- var info, block, defaults, inputs, i;
- info = this.blocks[selector];
+ var migration, info, block, defaults, inputs, i;
+ migration = this.blockMigrations[selector];
+ info = this.blocks[migration ? migration.selector : selector];
if (!info) {return null; }
block = info.type === 'command' ? new CommandBlockMorph()
: info.type === 'hat' ? new HatBlockMorph()
@@ -1426,8 +1455,8 @@ SpriteMorph.prototype.blockForSelector = function (selector, setDefaults) {
block.isStatic = true;
}
block.setSpec(localize(info.spec));
- if (setDefaults && info.defaults) {
- defaults = info.defaults;
+ if ((setDefaults && info.defaults) || (migration && migration.inputs)) {
+ defaults = migration ? migration.inputs : info.defaults;
block.defaults = defaults;
inputs = block.inputs();
if (inputs[0] instanceof MultiArgMorph) {
@@ -1651,9 +1680,13 @@ SpriteMorph.prototype.blockTemplates = function (category) {
blocks.push('-');
blocks.push(block('doReport'));
blocks.push('-');
+ /*
+ // old STOP variants, migrated to a newer version, now redundant
blocks.push(block('doStopBlock'));
blocks.push(block('doStop'));
blocks.push(block('doStopAll'));
+ */
+ blocks.push(block('doStopThis'));
blocks.push(block('doStopOthers'));
blocks.push('-');
blocks.push(block('doRun'));
@@ -4358,9 +4391,13 @@ StageMorph.prototype.blockTemplates = function (category) {
blocks.push('-');
blocks.push(block('doReport'));
blocks.push('-');
+ /*
+ // old STOP variants, migrated to a newer version, now redundant
blocks.push(block('doStopBlock'));
blocks.push(block('doStop'));
blocks.push(block('doStopAll'));
+ */
+ blocks.push(block('doStopThis'));
blocks.push(block('doStopOthers'));
blocks.push('-');
blocks.push(block('doRun'));