pxt-common-packages 10.2.3 → 10.2.5

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.
Files changed (36) hide show
  1. package/built/common-sim.d.ts +5 -3
  2. package/built/common-sim.js +40 -17
  3. package/libs/azureiot/built/debug/binary.js +461 -461
  4. package/libs/color/built/debug/binary.js +8 -8
  5. package/libs/color-sensor/built/debug/binary.js +8 -8
  6. package/libs/controller/built/debug/binary.js +7386 -7294
  7. package/libs/controller---none/built/debug/binary.js +7365 -7273
  8. package/libs/datalogger/built/debug/binary.js +63 -63
  9. package/libs/edge-connector/built/debug/binary.js +8 -8
  10. package/libs/esp32/built/debug/binary.js +462 -462
  11. package/libs/game/built/debug/binary.js +7278 -7186
  12. package/libs/game/multiplayer.cpp +1 -4
  13. package/libs/game/multiplayer.ts +13 -0
  14. package/libs/game/scene.ts +2 -0
  15. package/libs/game/sim/keymap.ts +1 -1
  16. package/libs/game/sim/multiplayer.ts +20 -14
  17. package/libs/lcd/built/debug/binary.js +8 -8
  18. package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
  19. package/libs/lora/built/debug/binary.js +8 -8
  20. package/libs/matrix-keypad/built/debug/binary.js +8 -8
  21. package/libs/mqtt/built/debug/binary.js +176 -176
  22. package/libs/net/built/debug/binary.js +176 -176
  23. package/libs/net-game/built/debug/binary.js +9066 -8974
  24. package/libs/palette/built/debug/binary.js +7277 -7185
  25. package/libs/pixel/built/debug/binary.js +8 -8
  26. package/libs/power/built/debug/binary.js +8 -8
  27. package/libs/proximity/built/debug/binary.js +8 -8
  28. package/libs/radio/built/debug/binary.js +8 -8
  29. package/libs/radio-broadcast/built/debug/binary.js +8 -8
  30. package/libs/rotary-encoder/built/debug/binary.js +8 -8
  31. package/libs/screen/built/debug/binary.js +50 -50
  32. package/libs/screen/sim/state.ts +27 -5
  33. package/libs/servo/built/debug/binary.js +8 -8
  34. package/libs/sprite-scaling/built/debug/binary.js +7277 -7185
  35. package/libs/storyboard/built/debug/binary.js +7277 -7185
  36. package/package.json +2 -2
@@ -773,7 +773,7 @@ declare namespace pxsim {
773
773
  }
774
774
  }
775
775
  declare namespace pxsim.multiplayer {
776
- function postImage(im: pxsim.RefImage, goal: string): void;
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
- image: RefImage;
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;
@@ -2527,7 +2527,7 @@ var pxsim;
2527
2527
  }
2528
2528
  clearMap(name) {
2529
2529
  const keyCodes = this.mappings[name];
2530
- keyCodes === null || keyCodes === void 0 ? void 0 : keyCodes.forEach(keyCode => delete this.keymap[keyCode]);
2530
+ keyCodes && keyCodes.forEach(keyCode => delete this.keymap[keyCode]);
2531
2531
  delete this.mappings[name];
2532
2532
  }
2533
2533
  }
@@ -2537,12 +2537,19 @@ var pxsim;
2537
2537
  (function (pxsim) {
2538
2538
  var multiplayer;
2539
2539
  (function (multiplayer) {
2540
- function postImage(im, goal) {
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.getMultiplayerState().send({
2548
+ const sb = pxsim.board();
2549
+ throttledImgPost({
2543
2550
  content: "Image",
2544
2551
  image: asBuf,
2545
- goal
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;
@@ -2575,14 +2582,6 @@ var pxsim;
2575
2582
  init(origin) {
2576
2583
  this.origin = origin;
2577
2584
  pxsim.runtime.board.addMessageListener(msg => this.messageHandler(msg));
2578
- setInterval(() => {
2579
- if (this.origin === "server") {
2580
- const b = pxsim.board();
2581
- const screenState = b && b.screenState;
2582
- const lastImage = screenState && screenState.lastImage;
2583
- lastImage && pxsim.multiplayer.postImage(lastImage, "broadcast-screen");
2584
- }
2585
- }, 50);
2586
2585
  }
2587
2586
  setButton(key, isPressed) {
2588
2587
  if (this.origin === "client") {
@@ -2594,6 +2593,7 @@ var pxsim;
2594
2593
  }
2595
2594
  }
2596
2595
  messageHandler(msg) {
2596
+ var _a;
2597
2597
  if (!isMultiplayerMessage(msg)) {
2598
2598
  return;
2599
2599
  }
@@ -2604,11 +2604,15 @@ var pxsim;
2604
2604
  msg.image.data = new Uint8Array(msg.image.data);
2605
2605
  }
2606
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
+ }
2607
2611
  }
2608
2612
  }
2609
2613
  else if (isButtonMessage(msg)) {
2610
2614
  if (this.origin === "server") {
2611
- pxsim.board().setButton(msg.button + (7 * (msg.clientNumber || 1)), // + 7 to make it player 2 controls,
2615
+ pxsim.board().handleKeyEvent(msg.button + (7 * (msg.clientNumber || 1)), // + 7 to make it player 2 controls,
2612
2616
  msg.state === "Pressed" || msg.state === "Held");
2613
2617
  }
2614
2618
  }
@@ -4422,7 +4426,6 @@ var pxsim;
4422
4426
  (function (pxsim) {
4423
4427
  function htmlColorToUint32(hexColor) {
4424
4428
  const ca = new Uint8ClampedArray(4);
4425
- const ui = new Uint32Array(ca.buffer);
4426
4429
  const v = parseInt(hexColor.replace(/#/, ""), 16);
4427
4430
  ca[0] = (v >> 16) & 0xff;
4428
4431
  ca[1] = (v >> 8) & 0xff;
@@ -4431,6 +4434,12 @@ var pxsim;
4431
4434
  // convert to uint32 using target endian
4432
4435
  return new Uint32Array(ca.buffer)[0];
4433
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
+ }
4434
4443
  class ScreenState {
4435
4444
  constructor(paletteSrc, w = 0, h = 0) {
4436
4445
  this.width = 0;
@@ -4442,9 +4451,7 @@ var pxsim;
4442
4451
  if (!paletteSrc)
4443
4452
  paletteSrc = ["#000000", "#ffffff"];
4444
4453
  this.palette = new Uint32Array(paletteSrc.length);
4445
- for (let i = 0; i < this.palette.length; ++i) {
4446
- this.palette[i] = htmlColorToUint32(paletteSrc[i]);
4447
- }
4454
+ this.setPaletteFromHtmlColors(paletteSrc);
4448
4455
  if (w) {
4449
4456
  this.width = w;
4450
4457
  this.height = h;
@@ -4455,6 +4462,22 @@ var pxsim;
4455
4462
  setScreenBrightness(b) {
4456
4463
  this.brightness = b | 0;
4457
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
+ }
4458
4481
  setPalette(buf) {
4459
4482
  const ca = new Uint8ClampedArray(4);
4460
4483
  const rd = new Uint32Array(ca.buffer);