Add block-by-block feedback to the VM playground

This commit is contained in:
Tim Mickel 2016-06-07 20:59:34 -04:00
parent f2734950d7
commit 5767e05d56
3 changed files with 20 additions and 2 deletions

View file

@ -49,13 +49,20 @@ window.onload = function() {
};
updateThreadExplorer();
// Feedback for stacks running.
// Feedback for stacks and blocks running.
vm.runtime.on('STACK_GLOW_ON', function(blockId) {
workspace.glowStack(blockId, true);
});
vm.runtime.on('STACK_GLOW_OFF', function(blockId) {
workspace.glowStack(blockId, false);
});
vm.runtime.on('BLOCK_GLOW_ON', function(blockId) {
workspace.glowBlock(blockId, true);
});
vm.runtime.on('BLOCK_GLOW_OFF', function(blockId) {
workspace.glowBlock(blockId, false);
});
// Run threads
vm.runtime.start();

View file

@ -199,7 +199,13 @@ Runtime.prototype.startDistanceSensors = function () {
Runtime.prototype.stopAll = function () {
var threadsCopy = this.threads.slice();
while (threadsCopy.length > 0) {
this._removeThread(threadsCopy.pop());
var poppedThread = threadsCopy.pop();
// Unglow any blocks on this thread's stack.
for (var i = 0; i < poppedThread.stack.length; i++) {
this.glowBlock(poppedThread.stack[i], false);
}
// Actually remove the thread.
this._removeThread(poppedThread);
}
// @todo call stop function in all extensions/packages/WeDo stub
if (window.native) {

View file

@ -134,6 +134,8 @@ Sequencer.prototype.stepThread = function (thread) {
// Pop the stack and stack frame
thread.stack.pop();
thread.stackFrames.pop();
// Stop showing run feedback in the editor.
instance.runtime.glowBlock(currentBlock, false);
};
/**
@ -199,6 +201,9 @@ Sequencer.prototype.stepThread = function (thread) {
}
}
// Start showing run feedback in the editor.
this.runtime.glowBlock(currentBlock, true);
if (!opcode) {
console.warn('Could not get opcode for block: ' + currentBlock);
}