From 8a1138c29923fd804c8192a0b1b374819df03b07 Mon Sep 17 00:00:00 2001 From: fath11 Date: Tue, 18 Mar 2025 09:14:06 +0800 Subject: [PATCH 1/5] added "whenProjectPaused" and "whenProjectUnPause" --- extensions/Lily/MoreEvents.js | 54 +++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/extensions/Lily/MoreEvents.js b/extensions/Lily/MoreEvents.js index b215802af8..b00de17491 100644 --- a/extensions/Lily/MoreEvents.js +++ b/extensions/Lily/MoreEvents.js @@ -2,6 +2,7 @@ // ID: lmsMoreEvents // Description: Start your scripts in new ways. // By: LilyMakesThings +// By: Fath11 // License: MIT AND LGPL-3.0 (function (Scratch) { @@ -13,6 +14,12 @@ const stopIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAQlBMVEUAAAC/UFC8Q0OzTU24SEi4SEi3SEi4R0e4SEi4SEi4SEi4SEi7SUm8SUnMTk7MT0/OT0/PT0/gVVXiVVXsWVn///+CoOd2AAAAC3RSTlMAEBMUu7zLz9D8/dIXnJwAAAABYktHRBXl2PmjAAAAxklEQVRIx+3WwRKDIBAD0JWqVEOtWv7/W3twOqKwELzW3N9wYhORMMYiztgZUZMUAKxqmh5Kno/MG256nzI59Z2mB+BWH+XzUt5RhWoyQjFZkTQFkTBFERlCnAwlDoYUgaHFblpaeL86AK0MvNjMIABmT2cGIAAWniw3ucm/k9ovduEjXzgXtUfJmtrTt9VZzYH9FSB/xvfKZMsiLFmuko61zBTfucjL9RpXf6nEU2MhPxXS86J+kORmjz6V6seViOnG8oT7ApMcjsYZwhXCAAAAAElFTkSuQmCC"; + const pauseIcon = + "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTgiIHdpZHRoPSIxOCI+PHBhdGggZD0iTTIzMS40MjkgMTg4LjkyOVYxNzEuMDdoNC4yODV2MTcuODU4em0xMi4xNDIgMFYxNzEuMDdoNC4yODZ2MTcuODU4eiIgdHJhbnNmb3JtPSJtYXRyaXgoMS4wMzMwOSAwIDAgLjk1NDI3IC0yMzguNTczIC0xNjIuNzY5KSIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsPSIjZmZhZTAwIiBzdHJva2U9IiNkODk0MDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOm5vcm1hbCIvPjwvc3ZnPg==" + + const continueIcon = + "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTgiIHdpZHRoPSIxOCI+PHBhdGggZD0ibTI0Ni4wNTUgMTgwLTEyLjExIDEyLjExdi0yNC4yMnoiIHRyYW5zZm9ybT0ibWF0cml4KDEuMTM5NDkgMCAwIC42Nzk0MyAtMjY0LjU5NSAtMTEzLjI5OCkiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlPSIjZDg5NDAwIiBmaWxsPSIjZmZhZTAwIiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iLz48L3N2Zz4=" + // Source: // https://github.com/TurboWarp/scratch-vm/blob/develop/src/io/keyboard.js // https://github.com/TurboWarp/scratch-blocks/blob/develop/blocks_vertical/event.js @@ -205,6 +212,27 @@ runtime.shouldExecuteStopClicked = false; originalGreenFlag.call(this); }; + + let pauseHandler = () => { + runtime.allScriptsByOpcodeDo("lmsMoreEvents_whenProjectPaused", (script, target) => { + const topBlockId = script.blockId; + for (let j = 0; j < runtime.threads.length; j++) { + if (runtime.threads[j].topBlock === topBlockId && runtime.threads[j].status !== 4) { + return; + } + } + runtime._pushThread(topBlockId, target); + }); + runtime.removeListener("BEFORE_EXECUTE", pauseHandler) + } + + runtime.on("RUNTIME_PAUSED", () => { + runtime.on("BEFORE_EXECUTE", pauseHandler); + }); + + runtime.on("RUNTIME_UNPAUSED", () => { + runtime.startHats("lmsMoreEvents_whenProjectUnPaused") + }); } getInfo() { @@ -228,6 +256,32 @@ }, extensions: ["colours_event"], }, + { + opcode: "whenProjectPaused", + blockType: Scratch.BlockType.EVENT, + text: Scratch.translate("when [PAUSE] clicked"), + isEdgeActivated: false, + arguments: { + PAUSE: { + type: Scratch.ArgumentType.IMAGE, + dataURI: pauseIcon, + }, + }, + extensions: ["colours_event"], + }, + { + opcode: "whenProjectUnPaused", + blockType: Scratch.BlockType.EVENT, + text: Scratch.translate("when [UNPAUSE] clicked"), + isEdgeActivated: false, + arguments: { + UNPAUSE: { + type: Scratch.ArgumentType.IMAGE, + dataURI: continueIcon, + }, + }, + extensions: ["colours_event"], + }, { opcode: "forever", blockType: Scratch.BlockType.EVENT, From 074fee7d923694c140cd8eb97722dadd37893824 Mon Sep 17 00:00:00 2001 From: "DangoCat[bot]" Date: Tue, 18 Mar 2025 01:17:14 +0000 Subject: [PATCH 2/5] [Automated] Format code --- extensions/Lily/MoreEvents.js | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/extensions/Lily/MoreEvents.js b/extensions/Lily/MoreEvents.js index b00de17491..c6f390a227 100644 --- a/extensions/Lily/MoreEvents.js +++ b/extensions/Lily/MoreEvents.js @@ -15,11 +15,11 @@ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAQlBMVEUAAAC/UFC8Q0OzTU24SEi4SEi3SEi4R0e4SEi4SEi4SEi4SEi7SUm8SUnMTk7MT0/OT0/PT0/gVVXiVVXsWVn///+CoOd2AAAAC3RSTlMAEBMUu7zLz9D8/dIXnJwAAAABYktHRBXl2PmjAAAAxklEQVRIx+3WwRKDIBAD0JWqVEOtWv7/W3twOqKwELzW3N9wYhORMMYiztgZUZMUAKxqmh5Kno/MG256nzI59Z2mB+BWH+XzUt5RhWoyQjFZkTQFkTBFERlCnAwlDoYUgaHFblpaeL86AK0MvNjMIABmT2cGIAAWniw3ucm/k9ovduEjXzgXtUfJmtrTt9VZzYH9FSB/xvfKZMsiLFmuko61zBTfucjL9RpXf6nEU2MhPxXS86J+kORmjz6V6seViOnG8oT7ApMcjsYZwhXCAAAAAElFTkSuQmCC"; const pauseIcon = - "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTgiIHdpZHRoPSIxOCI+PHBhdGggZD0iTTIzMS40MjkgMTg4LjkyOVYxNzEuMDdoNC4yODV2MTcuODU4em0xMi4xNDIgMFYxNzEuMDdoNC4yODZ2MTcuODU4eiIgdHJhbnNmb3JtPSJtYXRyaXgoMS4wMzMwOSAwIDAgLjk1NDI3IC0yMzguNTczIC0xNjIuNzY5KSIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsPSIjZmZhZTAwIiBzdHJva2U9IiNkODk0MDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOm5vcm1hbCIvPjwvc3ZnPg==" - + "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTgiIHdpZHRoPSIxOCI+PHBhdGggZD0iTTIzMS40MjkgMTg4LjkyOVYxNzEuMDdoNC4yODV2MTcuODU4em0xMi4xNDIgMFYxNzEuMDdoNC4yODZ2MTcuODU4eiIgdHJhbnNmb3JtPSJtYXRyaXgoMS4wMzMwOSAwIDAgLjk1NDI3IC0yMzguNTczIC0xNjIuNzY5KSIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsPSIjZmZhZTAwIiBzdHJva2U9IiNkODk0MDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOm5vcm1hbCIvPjwvc3ZnPg=="; + const continueIcon = - "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTgiIHdpZHRoPSIxOCI+PHBhdGggZD0ibTI0Ni4wNTUgMTgwLTEyLjExIDEyLjExdi0yNC4yMnoiIHRyYW5zZm9ybT0ibWF0cml4KDEuMTM5NDkgMCAwIC42Nzk0MyAtMjY0LjU5NSAtMTEzLjI5OCkiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlPSIjZDg5NDAwIiBmaWxsPSIjZmZhZTAwIiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iLz48L3N2Zz4=" - + "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTgiIHdpZHRoPSIxOCI+PHBhdGggZD0ibTI0Ni4wNTUgMTgwLTEyLjExIDEyLjExdi0yNC4yMnoiIHRyYW5zZm9ybT0ibWF0cml4KDEuMTM5NDkgMCAwIC42Nzk0MyAtMjY0LjU5NSAtMTEzLjI5OCkiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlPSIjZDg5NDAwIiBmaWxsPSIjZmZhZTAwIiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iLz48L3N2Zz4="; + // Source: // https://github.com/TurboWarp/scratch-vm/blob/develop/src/io/keyboard.js // https://github.com/TurboWarp/scratch-blocks/blob/develop/blocks_vertical/event.js @@ -214,24 +214,30 @@ }; let pauseHandler = () => { - runtime.allScriptsByOpcodeDo("lmsMoreEvents_whenProjectPaused", (script, target) => { + runtime.allScriptsByOpcodeDo( + "lmsMoreEvents_whenProjectPaused", + (script, target) => { const topBlockId = script.blockId; for (let j = 0; j < runtime.threads.length; j++) { - if (runtime.threads[j].topBlock === topBlockId && runtime.threads[j].status !== 4) { - return; - } + if ( + runtime.threads[j].topBlock === topBlockId && + runtime.threads[j].status !== 4 + ) { + return; + } } runtime._pushThread(topBlockId, target); - }); - runtime.removeListener("BEFORE_EXECUTE", pauseHandler) - } + } + ); + runtime.removeListener("BEFORE_EXECUTE", pauseHandler); + }; runtime.on("RUNTIME_PAUSED", () => { runtime.on("BEFORE_EXECUTE", pauseHandler); }); runtime.on("RUNTIME_UNPAUSED", () => { - runtime.startHats("lmsMoreEvents_whenProjectUnPaused") + runtime.startHats("lmsMoreEvents_whenProjectUnPaused"); }); } From d5732f5079fc50bef552ffa4af9237c8ca9e405a Mon Sep 17 00:00:00 2001 From: fath11 Date: Mon, 21 Apr 2025 16:22:01 +0800 Subject: [PATCH 3/5] switched to .once for paused event --- extensions/Lily/MoreEvents.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extensions/Lily/MoreEvents.js b/extensions/Lily/MoreEvents.js index c6f390a227..a7a2144d5a 100644 --- a/extensions/Lily/MoreEvents.js +++ b/extensions/Lily/MoreEvents.js @@ -229,11 +229,10 @@ runtime._pushThread(topBlockId, target); } ); - runtime.removeListener("BEFORE_EXECUTE", pauseHandler); }; runtime.on("RUNTIME_PAUSED", () => { - runtime.on("BEFORE_EXECUTE", pauseHandler); + runtime.once("BEFORE_EXECUTE", pauseHandler); }); runtime.on("RUNTIME_UNPAUSED", () => { From a8ba1fa260464ef7564c8fff96bb6ec74d6a930a Mon Sep 17 00:00:00 2001 From: fath11 Date: Mon, 21 Apr 2025 16:24:41 +0800 Subject: [PATCH 4/5] paused and unpaused event now waits for before execute --- extensions/Lily/MoreEvents.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/Lily/MoreEvents.js b/extensions/Lily/MoreEvents.js index a7a2144d5a..9e9110381a 100644 --- a/extensions/Lily/MoreEvents.js +++ b/extensions/Lily/MoreEvents.js @@ -236,7 +236,7 @@ }); runtime.on("RUNTIME_UNPAUSED", () => { - runtime.startHats("lmsMoreEvents_whenProjectUnPaused"); + runtime.once("BEFORE_EXECUTE", () => { runtime.startHats("lmsMoreEvents_whenProjectUnPaused") }); }); } From c45581305ef00eb18880b3fe8c91597d293c80a2 Mon Sep 17 00:00:00 2001 From: "DangoCat[bot]" Date: Wed, 17 Sep 2025 17:44:45 +0000 Subject: [PATCH 5/5] [Automated] Format code --- extensions/Lily/MoreEvents.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/extensions/Lily/MoreEvents.js b/extensions/Lily/MoreEvents.js index 9e9110381a..e1afd62c4d 100644 --- a/extensions/Lily/MoreEvents.js +++ b/extensions/Lily/MoreEvents.js @@ -236,7 +236,9 @@ }); runtime.on("RUNTIME_UNPAUSED", () => { - runtime.once("BEFORE_EXECUTE", () => { runtime.startHats("lmsMoreEvents_whenProjectUnPaused") }); + runtime.once("BEFORE_EXECUTE", () => { + runtime.startHats("lmsMoreEvents_whenProjectUnPaused"); + }); }); }