pxt-arcade 1.11.12 → 1.11.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/built/common-sim.d.ts +4 -2
- package/built/common-sim.js +38 -19
- package/built/sim.js +38 -19
- package/built/target.js +155 -146
- package/built/target.json +155 -146
- package/built/targetlight.json +5 -5
- package/package.json +3 -3
package/built/common-sim.d.ts
CHANGED
|
@@ -773,7 +773,7 @@ declare namespace pxsim {
|
|
|
773
773
|
}
|
|
774
774
|
}
|
|
775
775
|
declare namespace pxsim.multiplayer {
|
|
776
|
-
function postImage(im: pxsim.RefImage
|
|
776
|
+
function postImage(im: pxsim.RefImage): void;
|
|
777
777
|
function getCurrentImage(): pxsim.RefImage;
|
|
778
778
|
function setOrigin(origin: "client" | "server" | undefined): void;
|
|
779
779
|
function getOrigin(): string;
|
|
@@ -793,8 +793,8 @@ declare namespace pxsim {
|
|
|
793
793
|
}
|
|
794
794
|
interface MultiplayerImageMessage extends SimulatorMultiplayerMessage {
|
|
795
795
|
content: "Image";
|
|
796
|
-
goal: string;
|
|
797
796
|
image: RefBuffer;
|
|
797
|
+
palette: Uint8Array;
|
|
798
798
|
}
|
|
799
799
|
interface MultiplayerButtonEvent extends SimulatorMultiplayerMessage {
|
|
800
800
|
content: "Button";
|
|
@@ -1131,6 +1131,8 @@ declare namespace pxsim {
|
|
|
1131
1131
|
onChange: () => void;
|
|
1132
1132
|
constructor(paletteSrc: string[], w?: number, h?: number);
|
|
1133
1133
|
setScreenBrightness(b: number): void;
|
|
1134
|
+
paletteToUint8Array(): Uint8Array;
|
|
1135
|
+
setPaletteFromHtmlColors(src: string[]): void;
|
|
1134
1136
|
setPalette(buf: RefBuffer): void;
|
|
1135
1137
|
bpp(): 1 | 4;
|
|
1136
1138
|
didChange(): boolean;
|
package/built/common-sim.js
CHANGED
|
@@ -2537,12 +2537,19 @@ var pxsim;
|
|
|
2537
2537
|
(function (pxsim) {
|
|
2538
2538
|
var multiplayer;
|
|
2539
2539
|
(function (multiplayer) {
|
|
2540
|
-
|
|
2540
|
+
const throttledImgPost = pxsim.U.throttle((msg) => {
|
|
2541
|
+
pxsim.getMultiplayerState().send(msg);
|
|
2542
|
+
}, 50, true);
|
|
2543
|
+
function postImage(im) {
|
|
2544
|
+
var _a;
|
|
2545
|
+
if (pxsim.getMultiplayerState().origin !== "server")
|
|
2546
|
+
return;
|
|
2541
2547
|
const asBuf = pxsim.image.toBuffer(im);
|
|
2542
|
-
pxsim.
|
|
2548
|
+
const sb = pxsim.board();
|
|
2549
|
+
throttledImgPost({
|
|
2543
2550
|
content: "Image",
|
|
2544
2551
|
image: asBuf,
|
|
2545
|
-
|
|
2552
|
+
palette: (_a = sb === null || sb === void 0 ? void 0 : sb.screenState) === null || _a === void 0 ? void 0 : _a.paletteToUint8Array(),
|
|
2546
2553
|
});
|
|
2547
2554
|
}
|
|
2548
2555
|
multiplayer.postImage = postImage;
|
|
@@ -2565,7 +2572,6 @@ var pxsim;
|
|
|
2565
2572
|
return pxsim.board().multiplayerState;
|
|
2566
2573
|
}
|
|
2567
2574
|
pxsim.getMultiplayerState = getMultiplayerState;
|
|
2568
|
-
let postScreenInterval;
|
|
2569
2575
|
class MultiplayerState {
|
|
2570
2576
|
constructor() {
|
|
2571
2577
|
this.lastMessageId = 0;
|
|
@@ -2576,17 +2582,6 @@ var pxsim;
|
|
|
2576
2582
|
init(origin) {
|
|
2577
2583
|
this.origin = origin;
|
|
2578
2584
|
pxsim.runtime.board.addMessageListener(msg => this.messageHandler(msg));
|
|
2579
|
-
if (postScreenInterval) {
|
|
2580
|
-
clearInterval(postScreenInterval);
|
|
2581
|
-
}
|
|
2582
|
-
postScreenInterval = setInterval(() => {
|
|
2583
|
-
if (this.origin === "server") {
|
|
2584
|
-
const b = pxsim.board();
|
|
2585
|
-
const screenState = b && b.screenState;
|
|
2586
|
-
const lastImage = screenState && screenState.lastImage;
|
|
2587
|
-
lastImage && pxsim.multiplayer.postImage(lastImage, "broadcast-screen");
|
|
2588
|
-
}
|
|
2589
|
-
}, 50);
|
|
2590
2585
|
}
|
|
2591
2586
|
setButton(key, isPressed) {
|
|
2592
2587
|
if (this.origin === "client") {
|
|
@@ -2598,6 +2593,7 @@ var pxsim;
|
|
|
2598
2593
|
}
|
|
2599
2594
|
}
|
|
2600
2595
|
messageHandler(msg) {
|
|
2596
|
+
var _a;
|
|
2601
2597
|
if (!isMultiplayerMessage(msg)) {
|
|
2602
2598
|
return;
|
|
2603
2599
|
}
|
|
@@ -2608,6 +2604,10 @@ var pxsim;
|
|
|
2608
2604
|
msg.image.data = new Uint8Array(msg.image.data);
|
|
2609
2605
|
}
|
|
2610
2606
|
this.backgroundImage = pxsim.image.ofBuffer(msg.image);
|
|
2607
|
+
if (((_a = msg.palette) === null || _a === void 0 ? void 0 : _a.length) === 48) {
|
|
2608
|
+
const palBuffer = new pxsim.RefBuffer(msg.palette);
|
|
2609
|
+
pxsim.pxtcore.setPalette(palBuffer);
|
|
2610
|
+
}
|
|
2611
2611
|
}
|
|
2612
2612
|
}
|
|
2613
2613
|
else if (isButtonMessage(msg)) {
|
|
@@ -4426,7 +4426,6 @@ var pxsim;
|
|
|
4426
4426
|
(function (pxsim) {
|
|
4427
4427
|
function htmlColorToUint32(hexColor) {
|
|
4428
4428
|
const ca = new Uint8ClampedArray(4);
|
|
4429
|
-
const ui = new Uint32Array(ca.buffer);
|
|
4430
4429
|
const v = parseInt(hexColor.replace(/#/, ""), 16);
|
|
4431
4430
|
ca[0] = (v >> 16) & 0xff;
|
|
4432
4431
|
ca[1] = (v >> 8) & 0xff;
|
|
@@ -4435,6 +4434,12 @@ var pxsim;
|
|
|
4435
4434
|
// convert to uint32 using target endian
|
|
4436
4435
|
return new Uint32Array(ca.buffer)[0];
|
|
4437
4436
|
}
|
|
4437
|
+
function UInt32ToRGB(col) {
|
|
4438
|
+
const ui = new Uint32Array(1);
|
|
4439
|
+
ui[0] = col;
|
|
4440
|
+
const ca = new Uint8ClampedArray(ui.buffer);
|
|
4441
|
+
return [ca[0], ca[1], ca[2]];
|
|
4442
|
+
}
|
|
4438
4443
|
class ScreenState {
|
|
4439
4444
|
constructor(paletteSrc, w = 0, h = 0) {
|
|
4440
4445
|
this.width = 0;
|
|
@@ -4446,9 +4451,7 @@ var pxsim;
|
|
|
4446
4451
|
if (!paletteSrc)
|
|
4447
4452
|
paletteSrc = ["#000000", "#ffffff"];
|
|
4448
4453
|
this.palette = new Uint32Array(paletteSrc.length);
|
|
4449
|
-
|
|
4450
|
-
this.palette[i] = htmlColorToUint32(paletteSrc[i]);
|
|
4451
|
-
}
|
|
4454
|
+
this.setPaletteFromHtmlColors(paletteSrc);
|
|
4452
4455
|
if (w) {
|
|
4453
4456
|
this.width = w;
|
|
4454
4457
|
this.height = h;
|
|
@@ -4459,6 +4462,22 @@ var pxsim;
|
|
|
4459
4462
|
setScreenBrightness(b) {
|
|
4460
4463
|
this.brightness = b | 0;
|
|
4461
4464
|
}
|
|
4465
|
+
paletteToUint8Array() {
|
|
4466
|
+
const out = new Uint8Array(this.palette.length * 3);
|
|
4467
|
+
for (let i = 0; i < this.palette.length; ++i) {
|
|
4468
|
+
const [r, g, b] = UInt32ToRGB(this.palette[i]);
|
|
4469
|
+
const s = 3 * i;
|
|
4470
|
+
out[s] = r;
|
|
4471
|
+
out[s + 1] = g;
|
|
4472
|
+
out[s + 2] = b;
|
|
4473
|
+
}
|
|
4474
|
+
return out;
|
|
4475
|
+
}
|
|
4476
|
+
setPaletteFromHtmlColors(src) {
|
|
4477
|
+
for (let i = 0; i < this.palette.length; ++i) {
|
|
4478
|
+
this.palette[i] = htmlColorToUint32(src[i]);
|
|
4479
|
+
}
|
|
4480
|
+
}
|
|
4462
4481
|
setPalette(buf) {
|
|
4463
4482
|
const ca = new Uint8ClampedArray(4);
|
|
4464
4483
|
const rd = new Uint32Array(ca.buffer);
|
package/built/sim.js
CHANGED
|
@@ -2162,7 +2162,6 @@ var pxsim;
|
|
|
2162
2162
|
(function (pxsim) {
|
|
2163
2163
|
function htmlColorToUint32(hexColor) {
|
|
2164
2164
|
const ca = new Uint8ClampedArray(4);
|
|
2165
|
-
const ui = new Uint32Array(ca.buffer);
|
|
2166
2165
|
const v = parseInt(hexColor.replace(/#/, ""), 16);
|
|
2167
2166
|
ca[0] = (v >> 16) & 0xff;
|
|
2168
2167
|
ca[1] = (v >> 8) & 0xff;
|
|
@@ -2171,6 +2170,12 @@ var pxsim;
|
|
|
2171
2170
|
// convert to uint32 using target endian
|
|
2172
2171
|
return new Uint32Array(ca.buffer)[0];
|
|
2173
2172
|
}
|
|
2173
|
+
function UInt32ToRGB(col) {
|
|
2174
|
+
const ui = new Uint32Array(1);
|
|
2175
|
+
ui[0] = col;
|
|
2176
|
+
const ca = new Uint8ClampedArray(ui.buffer);
|
|
2177
|
+
return [ca[0], ca[1], ca[2]];
|
|
2178
|
+
}
|
|
2174
2179
|
class ScreenState {
|
|
2175
2180
|
constructor(paletteSrc, w = 0, h = 0) {
|
|
2176
2181
|
this.width = 0;
|
|
@@ -2182,9 +2187,7 @@ var pxsim;
|
|
|
2182
2187
|
if (!paletteSrc)
|
|
2183
2188
|
paletteSrc = ["#000000", "#ffffff"];
|
|
2184
2189
|
this.palette = new Uint32Array(paletteSrc.length);
|
|
2185
|
-
|
|
2186
|
-
this.palette[i] = htmlColorToUint32(paletteSrc[i]);
|
|
2187
|
-
}
|
|
2190
|
+
this.setPaletteFromHtmlColors(paletteSrc);
|
|
2188
2191
|
if (w) {
|
|
2189
2192
|
this.width = w;
|
|
2190
2193
|
this.height = h;
|
|
@@ -2195,6 +2198,22 @@ var pxsim;
|
|
|
2195
2198
|
setScreenBrightness(b) {
|
|
2196
2199
|
this.brightness = b | 0;
|
|
2197
2200
|
}
|
|
2201
|
+
paletteToUint8Array() {
|
|
2202
|
+
const out = new Uint8Array(this.palette.length * 3);
|
|
2203
|
+
for (let i = 0; i < this.palette.length; ++i) {
|
|
2204
|
+
const [r, g, b] = UInt32ToRGB(this.palette[i]);
|
|
2205
|
+
const s = 3 * i;
|
|
2206
|
+
out[s] = r;
|
|
2207
|
+
out[s + 1] = g;
|
|
2208
|
+
out[s + 2] = b;
|
|
2209
|
+
}
|
|
2210
|
+
return out;
|
|
2211
|
+
}
|
|
2212
|
+
setPaletteFromHtmlColors(src) {
|
|
2213
|
+
for (let i = 0; i < this.palette.length; ++i) {
|
|
2214
|
+
this.palette[i] = htmlColorToUint32(src[i]);
|
|
2215
|
+
}
|
|
2216
|
+
}
|
|
2198
2217
|
setPalette(buf) {
|
|
2199
2218
|
const ca = new Uint8ClampedArray(4);
|
|
2200
2219
|
const rd = new Uint32Array(ca.buffer);
|
|
@@ -2730,12 +2749,19 @@ var pxsim;
|
|
|
2730
2749
|
(function (pxsim) {
|
|
2731
2750
|
var multiplayer;
|
|
2732
2751
|
(function (multiplayer) {
|
|
2733
|
-
|
|
2752
|
+
const throttledImgPost = pxsim.U.throttle((msg) => {
|
|
2753
|
+
pxsim.getMultiplayerState().send(msg);
|
|
2754
|
+
}, 50, true);
|
|
2755
|
+
function postImage(im) {
|
|
2756
|
+
var _a;
|
|
2757
|
+
if (pxsim.getMultiplayerState().origin !== "server")
|
|
2758
|
+
return;
|
|
2734
2759
|
const asBuf = pxsim.image.toBuffer(im);
|
|
2735
|
-
pxsim.
|
|
2760
|
+
const sb = pxsim.board();
|
|
2761
|
+
throttledImgPost({
|
|
2736
2762
|
content: "Image",
|
|
2737
2763
|
image: asBuf,
|
|
2738
|
-
|
|
2764
|
+
palette: (_a = sb === null || sb === void 0 ? void 0 : sb.screenState) === null || _a === void 0 ? void 0 : _a.paletteToUint8Array(),
|
|
2739
2765
|
});
|
|
2740
2766
|
}
|
|
2741
2767
|
multiplayer.postImage = postImage;
|
|
@@ -2758,7 +2784,6 @@ var pxsim;
|
|
|
2758
2784
|
return pxsim.board().multiplayerState;
|
|
2759
2785
|
}
|
|
2760
2786
|
pxsim.getMultiplayerState = getMultiplayerState;
|
|
2761
|
-
let postScreenInterval;
|
|
2762
2787
|
class MultiplayerState {
|
|
2763
2788
|
constructor() {
|
|
2764
2789
|
this.lastMessageId = 0;
|
|
@@ -2769,17 +2794,6 @@ var pxsim;
|
|
|
2769
2794
|
init(origin) {
|
|
2770
2795
|
this.origin = origin;
|
|
2771
2796
|
pxsim.runtime.board.addMessageListener(msg => this.messageHandler(msg));
|
|
2772
|
-
if (postScreenInterval) {
|
|
2773
|
-
clearInterval(postScreenInterval);
|
|
2774
|
-
}
|
|
2775
|
-
postScreenInterval = setInterval(() => {
|
|
2776
|
-
if (this.origin === "server") {
|
|
2777
|
-
const b = pxsim.board();
|
|
2778
|
-
const screenState = b && b.screenState;
|
|
2779
|
-
const lastImage = screenState && screenState.lastImage;
|
|
2780
|
-
lastImage && pxsim.multiplayer.postImage(lastImage, "broadcast-screen");
|
|
2781
|
-
}
|
|
2782
|
-
}, 50);
|
|
2783
2797
|
}
|
|
2784
2798
|
setButton(key, isPressed) {
|
|
2785
2799
|
if (this.origin === "client") {
|
|
@@ -2791,6 +2805,7 @@ var pxsim;
|
|
|
2791
2805
|
}
|
|
2792
2806
|
}
|
|
2793
2807
|
messageHandler(msg) {
|
|
2808
|
+
var _a;
|
|
2794
2809
|
if (!isMultiplayerMessage(msg)) {
|
|
2795
2810
|
return;
|
|
2796
2811
|
}
|
|
@@ -2801,6 +2816,10 @@ var pxsim;
|
|
|
2801
2816
|
msg.image.data = new Uint8Array(msg.image.data);
|
|
2802
2817
|
}
|
|
2803
2818
|
this.backgroundImage = pxsim.image.ofBuffer(msg.image);
|
|
2819
|
+
if (((_a = msg.palette) === null || _a === void 0 ? void 0 : _a.length) === 48) {
|
|
2820
|
+
const palBuffer = new pxsim.RefBuffer(msg.palette);
|
|
2821
|
+
pxsim.pxtcore.setPalette(palBuffer);
|
|
2822
|
+
}
|
|
2804
2823
|
}
|
|
2805
2824
|
}
|
|
2806
2825
|
else if (isButtonMessage(msg)) {
|