pxt-arcade 1.11.10 → 1.11.12

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.
@@ -794,7 +794,7 @@ declare namespace pxsim {
794
794
  interface MultiplayerImageMessage extends SimulatorMultiplayerMessage {
795
795
  content: "Image";
796
796
  goal: string;
797
- image: RefImage;
797
+ image: RefBuffer;
798
798
  }
799
799
  interface MultiplayerButtonEvent extends SimulatorMultiplayerMessage {
800
800
  content: "Button";
@@ -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
  }
@@ -2565,6 +2565,7 @@ var pxsim;
2565
2565
  return pxsim.board().multiplayerState;
2566
2566
  }
2567
2567
  pxsim.getMultiplayerState = getMultiplayerState;
2568
+ let postScreenInterval;
2568
2569
  class MultiplayerState {
2569
2570
  constructor() {
2570
2571
  this.lastMessageId = 0;
@@ -2575,7 +2576,10 @@ var pxsim;
2575
2576
  init(origin) {
2576
2577
  this.origin = origin;
2577
2578
  pxsim.runtime.board.addMessageListener(msg => this.messageHandler(msg));
2578
- setInterval(() => {
2579
+ if (postScreenInterval) {
2580
+ clearInterval(postScreenInterval);
2581
+ }
2582
+ postScreenInterval = setInterval(() => {
2579
2583
  if (this.origin === "server") {
2580
2584
  const b = pxsim.board();
2581
2585
  const screenState = b && b.screenState;
@@ -2608,7 +2612,7 @@ var pxsim;
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
  }
package/built/sim.js CHANGED
@@ -146,7 +146,7 @@ var pxsim;
146
146
  const old = ctrl.state[key];
147
147
  if (old != pressed) {
148
148
  ctrl.state[key] = pressed;
149
- pxsim.board().handleKeyEvent(key + (7 * (ctrl.player - 1)), pressed);
149
+ pxsim.board().setButton(key + (7 * (ctrl.player - 1)), pressed);
150
150
  }
151
151
  }
152
152
  })(pxsim || (pxsim = {}));
@@ -167,11 +167,11 @@ var pxsim;
167
167
  const canvas = document.getElementById("game-screen");
168
168
  const encoder = new TextEncoder();
169
169
  const sendMsg = (msg) => {
170
- var _a;
171
170
  const data = encoder.encode(JSON.stringify(msg));
172
- const state = (_a = pxsim.board()) === null || _a === void 0 ? void 0 : _a.controlMessageState;
171
+ const board = pxsim.board();
172
+ const state = board && board.controlMessageState;
173
173
  // queue in control sims
174
- state === null || state === void 0 ? void 0 : state.enqueue({
174
+ state && state.enqueue({
175
175
  type: "messagepacket",
176
176
  channel: "pointer-events",
177
177
  broadcast: false,
@@ -440,6 +440,9 @@ var pxsim;
440
440
  }
441
441
  }
442
442
  setButton(which, isPressed) {
443
+ // Disallow local input for player 2+ in multiplayer mode.
444
+ if (this.multiplayerState.origin && which > pxsim.Key.Menu)
445
+ return;
443
446
  if (which) {
444
447
  this.handleKeyEvent(which, isPressed);
445
448
  }
@@ -2717,7 +2720,7 @@ var pxsim;
2717
2720
  }
2718
2721
  clearMap(name) {
2719
2722
  const keyCodes = this.mappings[name];
2720
- keyCodes === null || keyCodes === void 0 ? void 0 : keyCodes.forEach(keyCode => delete this.keymap[keyCode]);
2723
+ keyCodes && keyCodes.forEach(keyCode => delete this.keymap[keyCode]);
2721
2724
  delete this.mappings[name];
2722
2725
  }
2723
2726
  }
@@ -2755,6 +2758,7 @@ var pxsim;
2755
2758
  return pxsim.board().multiplayerState;
2756
2759
  }
2757
2760
  pxsim.getMultiplayerState = getMultiplayerState;
2761
+ let postScreenInterval;
2758
2762
  class MultiplayerState {
2759
2763
  constructor() {
2760
2764
  this.lastMessageId = 0;
@@ -2765,7 +2769,10 @@ var pxsim;
2765
2769
  init(origin) {
2766
2770
  this.origin = origin;
2767
2771
  pxsim.runtime.board.addMessageListener(msg => this.messageHandler(msg));
2768
- setInterval(() => {
2772
+ if (postScreenInterval) {
2773
+ clearInterval(postScreenInterval);
2774
+ }
2775
+ postScreenInterval = setInterval(() => {
2769
2776
  if (this.origin === "server") {
2770
2777
  const b = pxsim.board();
2771
2778
  const screenState = b && b.screenState;
@@ -2798,7 +2805,7 @@ var pxsim;
2798
2805
  }
2799
2806
  else if (isButtonMessage(msg)) {
2800
2807
  if (this.origin === "server") {
2801
- pxsim.board().setButton(msg.button + (7 * (msg.clientNumber || 1)), // + 7 to make it player 2 controls,
2808
+ pxsim.board().handleKeyEvent(msg.button + (7 * (msg.clientNumber || 1)), // + 7 to make it player 2 controls,
2802
2809
  msg.state === "Pressed" || msg.state === "Held");
2803
2810
  }
2804
2811
  }