Compile looks_changeeffectby and looks_seteffectto

This commit is contained in:
Thomas Weber committed 2021-02-28 00:16:55 -06:00
1 parent 89d0e25955
commit c8f8f1ac9c
5 files changed
+24 -4

No files matched your search

+1 -1
View File
@@ -524,7 +524,7 @@ class Scratch3LooksBlocks {
);
}
clampEffect (effect, value) {
clampEffect (effect, value) { // used by compiler
let clampedValue = value;
switch (effect) {
case 'ghost':
-2
View File
@@ -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',
+12
View File
@@ -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',
+10
View File
@@ -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;
+1 -1
View File
@@ -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) {