pxt-common-packages 9.5.4 → 9.5.7

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 (62) hide show
  1. package/built/common-sim.d.ts +40 -0
  2. package/built/common-sim.js +93 -1
  3. package/libs/azureiot/built/debug/binary.js +461 -461
  4. package/libs/base/sim/core.ts +1 -1
  5. package/libs/color/built/debug/binary.js +8 -8
  6. package/libs/color-sensor/built/debug/binary.js +8 -8
  7. package/libs/controller/built/debug/binary.js +6864 -6864
  8. package/libs/controller---none/built/debug/binary.js +6844 -6844
  9. package/libs/datalogger/built/debug/binary.js +63 -63
  10. package/libs/edge-connector/built/debug/binary.js +8 -8
  11. package/libs/esp32/built/debug/binary.js +462 -462
  12. package/libs/game/_locales/game-strings.json +1 -0
  13. package/libs/game/built/debug/binary.js +6784 -6784
  14. package/libs/game/docs/reference/sprites/sprite/follow.md +66 -0
  15. package/libs/game/docs/reference/sprites/sprite/set-bounce-on-wall.md +2 -2
  16. package/libs/game/docs/reference/sprites/sprite-kind.md +70 -0
  17. package/libs/game/docs/reference/tiles/get-neighboring-location.md +123 -0
  18. package/libs/game/docs/reference/tiles/get-tile-location.md +71 -30
  19. package/libs/game/docs/reference/tiles/get-tiles-by-type.md +66 -32
  20. package/libs/game/docs/reference/tiles/location.md +246 -0
  21. package/libs/game/docs/reference/tiles/place-on-random-tile.md +54 -21
  22. package/libs/game/docs/reference/tiles/place-on-tile.md +88 -0
  23. package/libs/game/docs/reference/tiles/set-current-tilemap.md +90 -0
  24. package/libs/game/docs/reference/tiles/set-tile-at.md +47 -30
  25. package/libs/game/docs/reference/tiles/set-tilemap.md +90 -0
  26. package/libs/game/docs/reference/tiles/set-wall-at.md +67 -68
  27. package/libs/game/docs/reference/tiles/tile-at-location-equals.md +97 -0
  28. package/libs/game/docs/reference/tiles/tile-at-location-is-wall.md +98 -0
  29. package/libs/game/docs/reference/tiles/tilemap.md +145 -0
  30. package/libs/game/multiplayer.cpp +25 -0
  31. package/libs/game/multiplayer.ts +24 -0
  32. package/libs/game/pxt.json +3 -1
  33. package/libs/game/scene.ts +1 -0
  34. package/libs/game/sim/multiplayer.ts +132 -0
  35. package/libs/game/sprite.ts +2 -1
  36. package/libs/game/spritekind.ts +1 -0
  37. package/libs/game/tilemap.ts +12 -11
  38. package/libs/lcd/built/debug/binary.js +8 -8
  39. package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
  40. package/libs/lora/built/debug/binary.js +8 -8
  41. package/libs/matrix-keypad/built/debug/binary.js +8 -8
  42. package/libs/mqtt/built/debug/binary.js +176 -176
  43. package/libs/net/built/debug/binary.js +176 -176
  44. package/libs/net-game/built/debug/binary.js +8372 -8372
  45. package/libs/palette/built/debug/binary.js +6782 -6782
  46. package/libs/pixel/built/debug/binary.js +8 -8
  47. package/libs/power/built/debug/binary.js +8 -8
  48. package/libs/proximity/built/debug/binary.js +8 -8
  49. package/libs/radio/_locales/radio-strings.json +4 -1
  50. package/libs/radio/built/debug/binary.js +8 -8
  51. package/libs/radio/radio.cpp +1 -0
  52. package/libs/radio/radio.ts +13 -2
  53. package/libs/radio/shims.d.ts +2 -1
  54. package/libs/radio-broadcast/_locales/radio-broadcast-strings.json +2 -1
  55. package/libs/radio-broadcast/built/debug/binary.js +8 -8
  56. package/libs/radio-broadcast/radio-broadcast.ts +2 -0
  57. package/libs/rotary-encoder/built/debug/binary.js +8 -8
  58. package/libs/screen/built/debug/binary.js +50 -50
  59. package/libs/servo/built/debug/binary.js +8 -8
  60. package/libs/sprite-scaling/built/debug/binary.js +6782 -6782
  61. package/libs/storyboard/built/debug/binary.js +6782 -6782
  62. package/package.json +2 -2
@@ -728,6 +728,46 @@ declare namespace pxsim {
728
728
  }
729
729
  declare namespace pxsim.info {
730
730
  }
731
+ declare namespace pxsim.multiplayer {
732
+ function postImage(im: pxsim.RefImage, goal: string): void;
733
+ function getCurrentImage(): pxsim.RefImage;
734
+ function setOrigin(origin: "client" | "server" | undefined): void;
735
+ function getOrigin(): string;
736
+ }
737
+ declare namespace pxsim {
738
+ interface MultiplayerBoard extends EventBusBoard {
739
+ multiplayerState: MultiplayerState;
740
+ }
741
+ function getMultiplayerState(): MultiplayerState;
742
+ interface SimulatorMultiplayerMessage extends SimulatorBroadcastMessage {
743
+ broadcast: true;
744
+ type: "multiplayer";
745
+ content: string;
746
+ origin?: "server" | "client";
747
+ clientNumber?: number;
748
+ id?: number;
749
+ }
750
+ interface MultiplayerImageMessage extends SimulatorMultiplayerMessage {
751
+ content: "Image";
752
+ goal: string;
753
+ image: RefImage;
754
+ }
755
+ interface MultiplayerButtonEvent extends SimulatorMultiplayerMessage {
756
+ content: "Button";
757
+ button: number;
758
+ state: "Pressed" | "Released" | "Held";
759
+ }
760
+ class MultiplayerState {
761
+ lastMessageId: number;
762
+ origin: string;
763
+ backgroundImage: RefImage;
764
+ constructor();
765
+ send(msg: SimulatorMultiplayerMessage): void;
766
+ init(origin: string): void;
767
+ setButton(key: number, isPressed: boolean): void;
768
+ protected messageHandler(msg: SimulatorMessage): void;
769
+ }
770
+ }
731
771
  declare namespace pxsim.gamepad {
732
772
  function setButton(index: number, up: boolean): void;
733
773
  function move(index: number, x: number, y: number): void;
@@ -699,7 +699,7 @@ var pxsim;
699
699
  var pxsim;
700
700
  (function (pxsim) {
701
701
  function board() {
702
- return pxsim.runtime.board;
702
+ return pxsim.runtime && pxsim.runtime.board;
703
703
  }
704
704
  pxsim.board = board;
705
705
  })(pxsim || (pxsim = {}));
@@ -2395,6 +2395,98 @@ var pxsim;
2395
2395
  pxsim.ToggleState = ToggleState;
2396
2396
  })(pxsim || (pxsim = {}));
2397
2397
  var pxsim;
2398
+ (function (pxsim) {
2399
+ var multiplayer;
2400
+ (function (multiplayer) {
2401
+ function postImage(im, goal) {
2402
+ const asBuf = pxsim.image.toBuffer(im);
2403
+ pxsim.getMultiplayerState().send({
2404
+ content: "Image",
2405
+ image: asBuf,
2406
+ goal
2407
+ });
2408
+ }
2409
+ multiplayer.postImage = postImage;
2410
+ function getCurrentImage() {
2411
+ return pxsim.getMultiplayerState().backgroundImage;
2412
+ }
2413
+ multiplayer.getCurrentImage = getCurrentImage;
2414
+ function setOrigin(origin) {
2415
+ pxsim.getMultiplayerState().origin = origin;
2416
+ }
2417
+ multiplayer.setOrigin = setOrigin;
2418
+ function getOrigin() {
2419
+ return pxsim.getMultiplayerState().origin;
2420
+ }
2421
+ multiplayer.getOrigin = getOrigin;
2422
+ })(multiplayer = pxsim.multiplayer || (pxsim.multiplayer = {}));
2423
+ })(pxsim || (pxsim = {}));
2424
+ (function (pxsim) {
2425
+ function getMultiplayerState() {
2426
+ return pxsim.board().multiplayerState;
2427
+ }
2428
+ pxsim.getMultiplayerState = getMultiplayerState;
2429
+ class MultiplayerState {
2430
+ constructor() {
2431
+ this.lastMessageId = 0;
2432
+ }
2433
+ send(msg) {
2434
+ pxsim.Runtime.postMessage(Object.assign(Object.assign({}, msg), { broadcast: true, toParentIFrameOnly: true, type: "multiplayer", origin: this.origin, id: this.lastMessageId++ }));
2435
+ }
2436
+ init(origin) {
2437
+ this.origin = origin;
2438
+ pxsim.runtime.board.addMessageListener(msg => this.messageHandler(msg));
2439
+ setInterval(() => {
2440
+ if (this.origin === "server") {
2441
+ const b = pxsim.board();
2442
+ const screenState = b && b.screenState;
2443
+ const lastImage = screenState && screenState.lastImage;
2444
+ lastImage && pxsim.multiplayer.postImage(lastImage, "broadcast-screen");
2445
+ }
2446
+ }, 50);
2447
+ }
2448
+ setButton(key, isPressed) {
2449
+ if (this.origin === "client") {
2450
+ this.send({
2451
+ content: "Button",
2452
+ button: key,
2453
+ state: isPressed ? "Pressed" : "Released"
2454
+ });
2455
+ }
2456
+ }
2457
+ messageHandler(msg) {
2458
+ if (!isMultiplayerMessage(msg)) {
2459
+ return;
2460
+ }
2461
+ if (isImageMessage(msg)) {
2462
+ if (this.origin === "client") {
2463
+ // HACK: peer js can convert Uint8Array into ArrayBuffer when transmitting; fix this.
2464
+ if (!ArrayBuffer.isView(msg.image.data)) {
2465
+ msg.image.data = new Uint8Array(msg.image.data);
2466
+ }
2467
+ this.backgroundImage = pxsim.image.ofBuffer(msg.image);
2468
+ }
2469
+ }
2470
+ else if (isButtonMessage(msg)) {
2471
+ if (this.origin === "server") {
2472
+ pxsim.board().setButton(msg.button + (7 * (msg.clientNumber || 1)), // + 7 to make it player 2 controls,
2473
+ msg.state === "Pressed" || msg.state === "Held");
2474
+ }
2475
+ }
2476
+ }
2477
+ }
2478
+ pxsim.MultiplayerState = MultiplayerState;
2479
+ function isMultiplayerMessage(msg) {
2480
+ return msg && msg.type === "multiplayer";
2481
+ }
2482
+ function isImageMessage(msg) {
2483
+ return msg && msg.content === "Image";
2484
+ }
2485
+ function isButtonMessage(msg) {
2486
+ return msg && msg.content === "Button";
2487
+ }
2488
+ })(pxsim || (pxsim = {}));
2489
+ var pxsim;
2398
2490
  (function (pxsim) {
2399
2491
  var gamepad;
2400
2492
  (function (gamepad) {