Compile looks_changeeffectby and looks_seteffectto
This commit is contained in:
5 files changed
+24
-4
No files matched your search
@@ -524,7 +524,7 @@ class Scratch3LooksBlocks {
|
||||
);
|
||||
}
|
||||
|
||||
clampEffect (effect, value) {
|
||||
clampEffect (effect, value) { // used by compiler
|
||||
let clampedValue = value;
|
||||
switch (effect) {
|
||||
case 'ghost':
|
||||
|
||||
@@ -9,11 +9,9 @@ const stacked = [
|
||||
'control_clear_counter',
|
||||
'control_get_counter',
|
||||
'control_incr_counter',
|
||||
'looks_changeeffectby',
|
||||
'looks_changestretchby',
|
||||
'looks_say',
|
||||
'looks_sayforsecs',
|
||||
'looks_seteffectto',
|
||||
'looks_setstretchto',
|
||||
'looks_switchbackdroptoandwait',
|
||||
'looks_think',
|
||||
|
||||
@@ -844,6 +844,12 @@ class ScriptTreeGenerator {
|
||||
broadcast: this.descendInputOfBlock(block, 'BROADCAST_INPUT')
|
||||
};
|
||||
|
||||
case 'looks_changeeffectby':
|
||||
return {
|
||||
kind: 'looks.changeEffect',
|
||||
effect: block.fields.EFFECT.value.toLowerCase(),
|
||||
value: this.descendInputOfBlock(block, 'CHANGE')
|
||||
};
|
||||
case 'looks_changesizeby':
|
||||
return {
|
||||
kind: 'looks.changeSize',
|
||||
@@ -885,6 +891,12 @@ class ScriptTreeGenerator {
|
||||
return {
|
||||
kind: 'looks.nextCostume'
|
||||
};
|
||||
case 'looks_seteffectto':
|
||||
return {
|
||||
kind: 'looks.setEffect',
|
||||
effect: block.fields.EFFECT.value.toLowerCase(),
|
||||
value: this.descendInputOfBlock(block, 'VALUE')
|
||||
};
|
||||
case 'looks_setsizeto':
|
||||
return {
|
||||
kind: 'looks.setSize',
|
||||
|
||||
@@ -781,6 +781,11 @@ class JSGenerator {
|
||||
case 'looks.clearEffects':
|
||||
this.source += 'target.clearEffects();\n';
|
||||
break;
|
||||
case 'looks.changeEffect':
|
||||
if (this.target.effects.hasOwnProperty(node.effect)) {
|
||||
this.source += `target.setEffect("${sanitize(node.effect)}", runtime.ext_scratch3_looks.clampEffect("${sanitize(node.effect)}", ${this.descendInput(node.value).asNumber()} + target.effects["${sanitize(node.effect)}"]));\n`;
|
||||
}
|
||||
break;
|
||||
case 'looks.changeSize':
|
||||
this.source += `target.setSize(target.size + ${this.descendInput(node.size).asNumber()});\n`;
|
||||
break;
|
||||
@@ -803,6 +808,11 @@ class JSGenerator {
|
||||
case 'looks.nextCostume':
|
||||
this.source += 'target.setCostume(target.currentCostume + 1);\n';
|
||||
break;
|
||||
case 'looks.setEffect':
|
||||
if (this.target.effects.hasOwnProperty(node.effect)) {
|
||||
this.source += `target.setEffect("${sanitize(node.effect)}", runtime.ext_scratch3_looks.clampEffect("${sanitize(node.effect)}", ${this.descendInput(node.value).asNumber()}));\n`;
|
||||
}
|
||||
break;
|
||||
case 'looks.setSize':
|
||||
this.source += `target.setSize(${this.descendInput(node.size).asNumber()});\n`;
|
||||
break;
|
||||
|
||||
@@ -400,7 +400,7 @@ class RenderedTarget extends Target {
|
||||
* @param {!string} effectName Name of effect (see `RenderedTarget.prototype.effects`).
|
||||
* @param {!number} value Numerical magnitude of effect.
|
||||
*/
|
||||
setEffect (effectName, value) {
|
||||
setEffect (effectName, value) { // used by compiler
|
||||
if (!this.effects.hasOwnProperty(effectName)) return;
|
||||
this.effects[effectName] = value;
|
||||
if (this.renderer) {
|
||||
|
||||
Reference in new issue
Block a user