pxt-common-packages 10.2.4 → 10.2.6
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 +9 -2
- package/built/common-sim.js +61 -18
- package/libs/azureiot/built/debug/binary.js +461 -461
- package/libs/color/built/debug/binary.js +8 -8
- package/libs/color-sensor/built/debug/binary.js +8 -8
- package/libs/controller/built/debug/binary.js +7386 -7294
- package/libs/controller---none/built/debug/binary.js +7365 -7273
- package/libs/datalogger/built/debug/binary.js +63 -63
- package/libs/edge-connector/built/debug/binary.js +8 -8
- package/libs/esp32/built/debug/binary.js +462 -462
- package/libs/game/_locales/game-jsdoc-strings.json +1 -0
- package/libs/game/built/debug/binary.js +7278 -7186
- package/libs/game/controller.ts +27 -3
- package/libs/game/info.ts +175 -91
- package/libs/game/multiplayer.cpp +1 -4
- package/libs/game/multiplayer.ts +13 -0
- package/libs/game/scene.ts +2 -0
- package/libs/game/sim/multiplayer.ts +52 -21
- package/libs/lcd/built/debug/binary.js +8 -8
- package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
- package/libs/lora/built/debug/binary.js +8 -8
- package/libs/matrix-keypad/built/debug/binary.js +8 -8
- package/libs/mqtt/built/debug/binary.js +176 -176
- package/libs/net/built/debug/binary.js +176 -176
- package/libs/net-game/built/debug/binary.js +9066 -8974
- package/libs/palette/built/debug/binary.js +7277 -7185
- package/libs/pixel/built/debug/binary.js +8 -8
- package/libs/power/built/debug/binary.js +8 -8
- package/libs/proximity/built/debug/binary.js +8 -8
- package/libs/radio/built/debug/binary.js +8 -8
- package/libs/radio-broadcast/built/debug/binary.js +8 -8
- package/libs/rotary-encoder/built/debug/binary.js +8 -8
- package/libs/screen/built/debug/binary.js +50 -50
- package/libs/screen/sim/state.ts +27 -5
- package/libs/servo/built/debug/binary.js +8 -8
- package/libs/sprite-scaling/built/debug/binary.js +7277 -7185
- package/libs/storyboard/built/debug/binary.js +7277 -7185
- package/package.json +2 -2
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,14 +793,19 @@ 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";
|
|
801
801
|
button: number;
|
|
802
802
|
state: "Pressed" | "Released" | "Held";
|
|
803
803
|
}
|
|
804
|
+
interface MultiplayerAudioEvent extends SimulatorMultiplayerMessage {
|
|
805
|
+
content: "Audio";
|
|
806
|
+
instruction: "playinstructions" | "muteallchannels";
|
|
807
|
+
soundbuf?: Uint8Array;
|
|
808
|
+
}
|
|
804
809
|
class MultiplayerState {
|
|
805
810
|
lastMessageId: number;
|
|
806
811
|
origin: string;
|
|
@@ -1131,6 +1136,8 @@ declare namespace pxsim {
|
|
|
1131
1136
|
onChange: () => void;
|
|
1132
1137
|
constructor(paletteSrc: string[], w?: number, h?: number);
|
|
1133
1138
|
setScreenBrightness(b: number): void;
|
|
1139
|
+
paletteToUint8Array(): Uint8Array;
|
|
1140
|
+
setPaletteFromHtmlColors(src: string[]): void;
|
|
1134
1141
|
setPalette(buf: RefBuffer): void;
|
|
1135
1142
|
bpp(): 1 | 4;
|
|
1136
1143
|
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
|
+
if (pxsim.getMultiplayerState().origin !== "server")
|
|
2545
|
+
return;
|
|
2541
2546
|
const asBuf = pxsim.image.toBuffer(im);
|
|
2542
|
-
pxsim.
|
|
2547
|
+
const sb = pxsim.board();
|
|
2548
|
+
const screenState = sb && sb.screenState;
|
|
2549
|
+
throttledImgPost({
|
|
2543
2550
|
content: "Image",
|
|
2544
2551
|
image: asBuf,
|
|
2545
|
-
|
|
2552
|
+
palette: screenState && screenState.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,18 @@ var pxsim;
|
|
|
2576
2582
|
init(origin) {
|
|
2577
2583
|
this.origin = origin;
|
|
2578
2584
|
pxsim.runtime.board.addMessageListener(msg => this.messageHandler(msg));
|
|
2579
|
-
if (
|
|
2580
|
-
|
|
2585
|
+
if (this.origin === "server") {
|
|
2586
|
+
pxsim.AudioContextManager.soundEventCallback = (ev, data) => {
|
|
2587
|
+
this.send({
|
|
2588
|
+
content: "Audio",
|
|
2589
|
+
instruction: ev,
|
|
2590
|
+
soundbuf: data,
|
|
2591
|
+
});
|
|
2592
|
+
};
|
|
2593
|
+
}
|
|
2594
|
+
else {
|
|
2595
|
+
pxsim.AudioContextManager.soundEventCallback = undefined;
|
|
2581
2596
|
}
|
|
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
2597
|
}
|
|
2591
2598
|
setButton(key, isPressed) {
|
|
2592
2599
|
if (this.origin === "client") {
|
|
@@ -2608,6 +2615,10 @@ var pxsim;
|
|
|
2608
2615
|
msg.image.data = new Uint8Array(msg.image.data);
|
|
2609
2616
|
}
|
|
2610
2617
|
this.backgroundImage = pxsim.image.ofBuffer(msg.image);
|
|
2618
|
+
if (msg.palette && msg.palette.length === 48) {
|
|
2619
|
+
const palBuffer = new pxsim.RefBuffer(msg.palette);
|
|
2620
|
+
pxsim.pxtcore.setPalette(palBuffer);
|
|
2621
|
+
}
|
|
2611
2622
|
}
|
|
2612
2623
|
}
|
|
2613
2624
|
else if (isButtonMessage(msg)) {
|
|
@@ -2616,6 +2627,16 @@ var pxsim;
|
|
|
2616
2627
|
msg.state === "Pressed" || msg.state === "Held");
|
|
2617
2628
|
}
|
|
2618
2629
|
}
|
|
2630
|
+
else if (isAudioMessage(msg)) {
|
|
2631
|
+
if (this.origin === "client") {
|
|
2632
|
+
if (msg.instruction === "playinstructions") {
|
|
2633
|
+
pxsim.AudioContextManager.playInstructionsAsync(msg.soundbuf);
|
|
2634
|
+
}
|
|
2635
|
+
else if (msg.instruction === "muteallchannels") {
|
|
2636
|
+
pxsim.AudioContextManager.muteAllChannels();
|
|
2637
|
+
}
|
|
2638
|
+
}
|
|
2639
|
+
}
|
|
2619
2640
|
}
|
|
2620
2641
|
}
|
|
2621
2642
|
pxsim.MultiplayerState = MultiplayerState;
|
|
@@ -2628,6 +2649,9 @@ var pxsim;
|
|
|
2628
2649
|
function isButtonMessage(msg) {
|
|
2629
2650
|
return msg && msg.content === "Button";
|
|
2630
2651
|
}
|
|
2652
|
+
function isAudioMessage(msg) {
|
|
2653
|
+
return msg && msg.content === "Audio";
|
|
2654
|
+
}
|
|
2631
2655
|
})(pxsim || (pxsim = {}));
|
|
2632
2656
|
var pxsim;
|
|
2633
2657
|
(function (pxsim) {
|
|
@@ -4426,7 +4450,6 @@ var pxsim;
|
|
|
4426
4450
|
(function (pxsim) {
|
|
4427
4451
|
function htmlColorToUint32(hexColor) {
|
|
4428
4452
|
const ca = new Uint8ClampedArray(4);
|
|
4429
|
-
const ui = new Uint32Array(ca.buffer);
|
|
4430
4453
|
const v = parseInt(hexColor.replace(/#/, ""), 16);
|
|
4431
4454
|
ca[0] = (v >> 16) & 0xff;
|
|
4432
4455
|
ca[1] = (v >> 8) & 0xff;
|
|
@@ -4435,6 +4458,12 @@ var pxsim;
|
|
|
4435
4458
|
// convert to uint32 using target endian
|
|
4436
4459
|
return new Uint32Array(ca.buffer)[0];
|
|
4437
4460
|
}
|
|
4461
|
+
function UInt32ToRGB(col) {
|
|
4462
|
+
const ui = new Uint32Array(1);
|
|
4463
|
+
ui[0] = col;
|
|
4464
|
+
const ca = new Uint8ClampedArray(ui.buffer);
|
|
4465
|
+
return [ca[0], ca[1], ca[2]];
|
|
4466
|
+
}
|
|
4438
4467
|
class ScreenState {
|
|
4439
4468
|
constructor(paletteSrc, w = 0, h = 0) {
|
|
4440
4469
|
this.width = 0;
|
|
@@ -4446,9 +4475,7 @@ var pxsim;
|
|
|
4446
4475
|
if (!paletteSrc)
|
|
4447
4476
|
paletteSrc = ["#000000", "#ffffff"];
|
|
4448
4477
|
this.palette = new Uint32Array(paletteSrc.length);
|
|
4449
|
-
|
|
4450
|
-
this.palette[i] = htmlColorToUint32(paletteSrc[i]);
|
|
4451
|
-
}
|
|
4478
|
+
this.setPaletteFromHtmlColors(paletteSrc);
|
|
4452
4479
|
if (w) {
|
|
4453
4480
|
this.width = w;
|
|
4454
4481
|
this.height = h;
|
|
@@ -4459,6 +4486,22 @@ var pxsim;
|
|
|
4459
4486
|
setScreenBrightness(b) {
|
|
4460
4487
|
this.brightness = b | 0;
|
|
4461
4488
|
}
|
|
4489
|
+
paletteToUint8Array() {
|
|
4490
|
+
const out = new Uint8Array(this.palette.length * 3);
|
|
4491
|
+
for (let i = 0; i < this.palette.length; ++i) {
|
|
4492
|
+
const [r, g, b] = UInt32ToRGB(this.palette[i]);
|
|
4493
|
+
const s = 3 * i;
|
|
4494
|
+
out[s] = r;
|
|
4495
|
+
out[s + 1] = g;
|
|
4496
|
+
out[s + 2] = b;
|
|
4497
|
+
}
|
|
4498
|
+
return out;
|
|
4499
|
+
}
|
|
4500
|
+
setPaletteFromHtmlColors(src) {
|
|
4501
|
+
for (let i = 0; i < this.palette.length; ++i) {
|
|
4502
|
+
this.palette[i] = htmlColorToUint32(src[i]);
|
|
4503
|
+
}
|
|
4504
|
+
}
|
|
4462
4505
|
setPalette(buf) {
|
|
4463
4506
|
const ca = new Uint8ClampedArray(4);
|
|
4464
4507
|
const rd = new Uint32Array(ca.buffer);
|