From 13ae01a53a0f8dbfd8632e6f01aba08389fb5688 Mon Sep 17 00:00:00 2001 From: apple502j <33279053+apple502j@users.noreply.github.com> Date: Tue, 17 Mar 2020 12:18:27 +0900 Subject: [PATCH 1/2] Add support for when backdrop changed block --- example-project/Giga/Giga.js | 11 ++++++++++- example-project/Gobo/Gobo.js | 11 ++++++++++- src/Sprite.js | 7 +++++++ src/Trigger.js | 4 ++++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/example-project/Giga/Giga.js b/example-project/Giga/Giga.js index d502c1c..b912288 100644 --- a/example-project/Giga/Giga.js +++ b/example-project/Giga/Giga.js @@ -11,7 +11,12 @@ export default class Giga extends Sprite { this.triggers = [ new Trigger(Trigger.CLICKED, this.whenthisspriteclicked), - new Trigger(Trigger.GREEN_FLAG, this.whenGreenFlagClicked) + new Trigger(Trigger.GREEN_FLAG, this.whenGreenFlagClicked), + new Trigger( + Trigger.BACKDROP_CHANGED, + { backdrop: "giga" }, + this.whenBackdropChanged + ) ]; this.visible = false; @@ -24,4 +29,8 @@ export default class Giga extends Sprite { *whenGreenFlagClicked() { this.costume = "giga-a"; } + + *whenBackdropChanged() { + yield* this.sayAndWait("It's me!", 2); + } } diff --git a/example-project/Gobo/Gobo.js b/example-project/Gobo/Gobo.js index c7d375c..1dde66f 100644 --- a/example-project/Gobo/Gobo.js +++ b/example-project/Gobo/Gobo.js @@ -12,7 +12,12 @@ export default class Gobo extends Sprite { this.triggers = [ new Trigger(Trigger.CLICKED, this.whenthisspriteclicked), - new Trigger(Trigger.GREEN_FLAG, this.whenGreenFlagClicked) + new Trigger(Trigger.GREEN_FLAG, this.whenGreenFlagClicked), + new Trigger( + Trigger.BACKDROP_CHANGED, + { backdrop: "gobo" }, + this.whenBackdropChanged + ) ]; this.visible = false; @@ -25,4 +30,8 @@ export default class Gobo extends Sprite { *whenGreenFlagClicked() { this.costume = "goboA"; } + + *whenBackdropChanged() { + yield* this.sayAndWait("It's me!", 2); + } } diff --git a/src/Sprite.js b/src/Sprite.js index 67ac8bd..7b07175 100644 --- a/src/Sprite.js +++ b/src/Sprite.js @@ -97,6 +97,7 @@ class SpriteBase { set costumeNumber(number) { this._costumeNumber = ((number - 1) % this.costumes.length) + 1; + if (this.fireBackdropChanged) this.fireBackdropChanged(); } set costume(costume) { @@ -646,4 +647,10 @@ export class Stage extends SpriteBase { // For obsolete counter blocks. this.__counter = 0; } + + fireBackdropChanged() { + this._project.fireTrigger(Trigger.BACKDROP_CHANGED, { + backdrop: this.costume.name + }); + } } diff --git a/src/Trigger.js b/src/Trigger.js index 360f834..c41d90a 100644 --- a/src/Trigger.js +++ b/src/Trigger.js @@ -4,6 +4,7 @@ const BROADCAST = Symbol("BROADCAST"); const CLICKED = Symbol("CLICKED"); const CLONE_START = Symbol("CLONE_START"); const TIMER_GREATER_THAN = Symbol("TIMER_GREATER_THAN"); +const BACKDROP_CHANGED = Symbol("BACKDROP_CHANGED"); export default class Trigger { constructor(trigger, options, script) { @@ -85,4 +86,7 @@ export default class Trigger { static get TIMER_GREATER_THAN() { return TIMER_GREATER_THAN; } + static get BACKDROP_CHANGED() { + return BACKDROP_CHANGED; + } } From 0f9bdfe7828361573ead680308d633ba34705d49 Mon Sep 17 00:00:00 2001 From: adroitwhiz Date: Tue, 19 Jul 2022 01:37:26 -0400 Subject: [PATCH 2/2] Return started threads from fireBackdropChanged This will come in handy once we implement "switch backdrop and wait" --- src/Sprite.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Sprite.js b/src/Sprite.js index 7b07175..1dbdce3 100644 --- a/src/Sprite.js +++ b/src/Sprite.js @@ -649,7 +649,7 @@ export class Stage extends SpriteBase { } fireBackdropChanged() { - this._project.fireTrigger(Trigger.BACKDROP_CHANGED, { + return this._project.fireTrigger(Trigger.BACKDROP_CHANGED, { backdrop: this.costume.name }); }