diff --git a/src/blocks/scratch3_data.js b/src/blocks/scratch3_data.js index 9ebd3712c..78191c5dd 100644 --- a/src/blocks/scratch3_data.js +++ b/src/blocks/scratch3_data.js @@ -45,6 +45,10 @@ class Scratch3DataBlocks { const variable = util.target.lookupOrCreateVariable( args.VARIABLE.id, args.VARIABLE.name); variable.value = args.VALUE; + + if (variable.isCloud) { + util.ioQuery('cloud', 'requestUpdateVariable', [variable.name, args.VALUE]); + } } changeVariableBy (args, util) { @@ -52,7 +56,12 @@ class Scratch3DataBlocks { args.VARIABLE.id, args.VARIABLE.name); const castedValue = Cast.toNumber(variable.value); const dValue = Cast.toNumber(args.VALUE); - variable.value = castedValue + dValue; + const newValue = castedValue + dValue; + variable.value = newValue; + + if (variable.isCloud) { + util.ioQuery('cloud', 'requestUpdateVariable', [variable.name, newValue]); + } } changeMonitorVisibility (id, visible) { diff --git a/src/virtual-machine.js b/src/virtual-machine.js index 96ab30411..b5f16c654 100644 --- a/src/virtual-machine.js +++ b/src/virtual-machine.js @@ -218,6 +218,10 @@ class VirtualMachine extends EventEmitter { this.runtime.ioDevices.video.setProvider(videoProvider); } + setCloudProvider (cloudProvider) { + this.runtime.ioDevices.cloud.setProvider(cloudProvider); + } + /** * Tell the specified extension to scan for a peripheral. * @param {string} extensionId - the id of the extension. @@ -463,6 +467,7 @@ class VirtualMachine extends EventEmitter { this.emitTargetsUpdate(); this.emitWorkspaceUpdate(); this.runtime.setEditingTarget(this.editingTarget); + this.runtime.ioDevices.cloud.setStage(this.runtime.getTargetForStage()); }); }