Change logic compare block to eject mismatched blocks.

This commit is contained in:
Neil Fraser
2015-01-28 17:45:13 -08:00
parent 193c47420c
commit 69294d8344
2 changed files with 14 additions and 11 deletions

View File

@@ -312,15 +312,18 @@ Blockly.Blocks['logic_compare'] = {
}
var blockA = this.getInputTargetBlock('A');
var blockB = this.getInputTargetBlock('B');
if (blockA) {
this.getInput('B').setCheck(blockA.outputConnection.check_);
}
if (blockB) {
this.getInput('A').setCheck(blockB.outputConnection.check_);
}
if (!blockA && !blockB) {
this.getInput('A').setCheck(null);
this.getInput('B').setCheck(null);
// Keep track of which block was added second
// (so the first block may be ejected upon mismatch).
if (blockA && !blockB) {
this.blockAPriority_ = false;
} else if (!blockA && blockB) {
this.blockAPriority_ = true;
} else if (blockA && blockB &&
!blockA.outputConnection.checkType_(blockB.outputConnection)) {
// Mismatch between two inputs. Disconnect one and bump it away.
var child = this.blockAPriority_ ? blockB : blockA;
child.setParent(null);
child.bumpNeighbours_();
}
}
};