pxt-common-packages 9.5.8 → 9.5.11

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 (41) hide show
  1. package/built/common-sim.d.ts +44 -0
  2. package/built/common-sim.js +202 -63
  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 +7877 -7659
  7. package/libs/controller---none/built/debug/binary.js +7856 -7638
  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/_locales/game-jsdoc-strings.json +19 -0
  12. package/libs/game/_locales/game-strings.json +2 -0
  13. package/libs/game/built/debug/binary.js +7769 -7551
  14. package/libs/game/extendableSprite.ts +80 -0
  15. package/libs/game/game.ts +3 -0
  16. package/libs/game/info.ts +13 -0
  17. package/libs/game/keymap.cpp +12 -0
  18. package/libs/game/keymap.ts +169 -0
  19. package/libs/game/pxt.json +4 -1
  20. package/libs/game/sim/keymap.ts +167 -0
  21. package/libs/game/sprite.ts +68 -57
  22. package/libs/lcd/built/debug/binary.js +8 -8
  23. package/libs/light-spectrum-sensor/built/debug/binary.js +8 -8
  24. package/libs/lora/built/debug/binary.js +8 -8
  25. package/libs/matrix-keypad/built/debug/binary.js +8 -8
  26. package/libs/mqtt/built/debug/binary.js +176 -176
  27. package/libs/net/built/debug/binary.js +176 -176
  28. package/libs/net-game/built/debug/binary.js +9557 -9339
  29. package/libs/palette/built/debug/binary.js +7768 -7550
  30. package/libs/pixel/built/debug/binary.js +8 -8
  31. package/libs/power/built/debug/binary.js +8 -8
  32. package/libs/proximity/built/debug/binary.js +8 -8
  33. package/libs/radio/built/debug/binary.js +8 -8
  34. package/libs/radio-broadcast/built/debug/binary.js +8 -8
  35. package/libs/rotary-encoder/built/debug/binary.js +8 -8
  36. package/libs/screen/built/debug/binary.js +50 -50
  37. package/libs/servo/built/debug/binary.js +8 -8
  38. package/libs/settings---files/settings.cpp +2 -1
  39. package/libs/sprite-scaling/built/debug/binary.js +7768 -7550
  40. package/libs/storyboard/built/debug/binary.js +7768 -7550
  41. package/package.json +1 -1
@@ -728,6 +728,50 @@ declare namespace pxsim {
728
728
  }
729
729
  declare namespace pxsim.info {
730
730
  }
731
+ declare namespace pxsim.keymap {
732
+ enum Key {
733
+ None = 0,
734
+ Left = 1,
735
+ Up = 2,
736
+ Right = 3,
737
+ Down = 4,
738
+ A = 5,
739
+ B = 6,
740
+ Menu = 7,
741
+ Screenshot = -1,
742
+ Gif = -2,
743
+ Reset = -3,
744
+ TogglePause = -4
745
+ }
746
+ function _setPlayerKeys(player: number, // player number is 1-based
747
+ up: number, down: number, left: number, right: number, A: number, B: number): void;
748
+ function _setSystemKeys(screenshot: number, gif: number, menu: number, reset: number): void;
749
+ }
750
+ declare namespace pxsim {
751
+ import Key = pxsim.keymap.Key;
752
+ interface KeymapBoard extends EventBusBoard {
753
+ keymapState: KeymapState;
754
+ }
755
+ function getKeymapState(): KeymapState;
756
+ class KeymapState {
757
+ keymap: {
758
+ [keyCode: number]: Key;
759
+ };
760
+ altmap: {
761
+ [keyCode: number]: Key;
762
+ };
763
+ mappings: {
764
+ [name: string]: number[];
765
+ };
766
+ constructor();
767
+ setPlayerKeys(player: number, // player number is 1-based
768
+ up: number, down: number, left: number, right: number, A: number, B: number): void;
769
+ setSystemKeys(screenshot: number, gif: number, menu: number, reset: number): void;
770
+ getKey(keyCode: number): Key;
771
+ private saveMap;
772
+ private clearMap;
773
+ }
774
+ }
731
775
  declare namespace pxsim.multiplayer {
732
776
  function postImage(im: pxsim.RefImage, goal: string): void;
733
777
  function getCurrentImage(): pxsim.RefImage;
@@ -5,11 +5,11 @@ var pxsim;
5
5
  function onGesture(gesture, handler) {
6
6
  let b = pxsim.accelerometer();
7
7
  b.accelerometer.activate();
8
- if (gesture == 11 /* ACCELEROMETER_EVT_SHAKE */ && !b.useShake) {
8
+ if (gesture == 11 /* DAL.ACCELEROMETER_EVT_SHAKE */ && !b.useShake) {
9
9
  b.useShake = true;
10
10
  pxsim.runtime.queueDisplayUpdate();
11
11
  }
12
- pxsim.pxtcore.registerWithDal(13 /* DEVICE_ID_GESTURE */, gesture, handler);
12
+ pxsim.pxtcore.registerWithDal(13 /* DAL.DEVICE_ID_GESTURE */, gesture, handler);
13
13
  }
14
14
  input.onGesture = onGesture;
15
15
  function rotation(kind) {
@@ -99,7 +99,7 @@ var pxsim;
99
99
  this.shake = { x: false, y: false, z: false, count: 0, shaken: 0, timer: 0 }; // State information needed to detect shake events.
100
100
  this.isActive = false;
101
101
  this.sampleRange = 2;
102
- this.id = 5 /* DEVICE_ID_ACCELEROMETER */;
102
+ this.id = 5 /* DAL.DEVICE_ID_ACCELEROMETER */;
103
103
  }
104
104
  setSampleRange(range) {
105
105
  this.activate();
@@ -123,7 +123,7 @@ var pxsim;
123
123
  // Update gesture tracking
124
124
  this.updateGesture();
125
125
  // Indicate that a new sample is available
126
- pxsim.board().bus.queue(this.id, 1 /* ACCELEROMETER_EVT_DATA_UPDATE */);
126
+ pxsim.board().bus.queue(this.id, 1 /* DAL.ACCELEROMETER_EVT_DATA_UPDATE */);
127
127
  }
128
128
  instantaneousAccelerationSquared() {
129
129
  // Use pythagoras theorem to determine the combined force acting on the device.
@@ -144,21 +144,21 @@ var pxsim;
144
144
  //
145
145
  // If we see enough zero crossings in succession (MICROBIT_ACCELEROMETER_SHAKE_COUNT_THRESHOLD), then we decide that the device
146
146
  // has been shaken.
147
- if ((this.getX() < -400 /* ACCELEROMETER_SHAKE_TOLERANCE */ && this.shake.x) || (this.getX() > 400 /* ACCELEROMETER_SHAKE_TOLERANCE */ && !this.shake.x)) {
147
+ if ((this.getX() < -400 /* DAL.ACCELEROMETER_SHAKE_TOLERANCE */ && this.shake.x) || (this.getX() > 400 /* DAL.ACCELEROMETER_SHAKE_TOLERANCE */ && !this.shake.x)) {
148
148
  shakeDetected = true;
149
149
  this.shake.x = !this.shake.x;
150
150
  }
151
- if ((this.getY() < -400 /* ACCELEROMETER_SHAKE_TOLERANCE */ && this.shake.y) || (this.getY() > 400 /* ACCELEROMETER_SHAKE_TOLERANCE */ && !this.shake.y)) {
151
+ if ((this.getY() < -400 /* DAL.ACCELEROMETER_SHAKE_TOLERANCE */ && this.shake.y) || (this.getY() > 400 /* DAL.ACCELEROMETER_SHAKE_TOLERANCE */ && !this.shake.y)) {
152
152
  shakeDetected = true;
153
153
  this.shake.y = !this.shake.y;
154
154
  }
155
- if ((this.getZ() < -400 /* ACCELEROMETER_SHAKE_TOLERANCE */ && this.shake.z) || (this.getZ() > 400 /* ACCELEROMETER_SHAKE_TOLERANCE */ && !this.shake.z)) {
155
+ if ((this.getZ() < -400 /* DAL.ACCELEROMETER_SHAKE_TOLERANCE */ && this.shake.z) || (this.getZ() > 400 /* DAL.ACCELEROMETER_SHAKE_TOLERANCE */ && !this.shake.z)) {
156
156
  shakeDetected = true;
157
157
  this.shake.z = !this.shake.z;
158
158
  }
159
- if (shakeDetected && this.shake.count < 4 /* ACCELEROMETER_SHAKE_COUNT_THRESHOLD */ && ++this.shake.count == 4 /* ACCELEROMETER_SHAKE_COUNT_THRESHOLD */)
159
+ if (shakeDetected && this.shake.count < 4 /* DAL.ACCELEROMETER_SHAKE_COUNT_THRESHOLD */ && ++this.shake.count == 4 /* DAL.ACCELEROMETER_SHAKE_COUNT_THRESHOLD */)
160
160
  this.shake.shaken = 1;
161
- if (++this.shake.timer >= 10 /* ACCELEROMETER_SHAKE_DAMPING */) {
161
+ if (++this.shake.timer >= 10 /* DAL.ACCELEROMETER_SHAKE_DAMPING */) {
162
162
  this.shake.timer = 0;
163
163
  if (this.shake.count > 0) {
164
164
  if (--this.shake.count == 0)
@@ -166,29 +166,29 @@ var pxsim;
166
166
  }
167
167
  }
168
168
  if (this.shake.shaken)
169
- return 11 /* ACCELEROMETER_EVT_SHAKE */;
169
+ return 11 /* DAL.ACCELEROMETER_EVT_SHAKE */;
170
170
  let sq = (n) => n * n;
171
- if (force < sq(400 /* ACCELEROMETER_FREEFALL_TOLERANCE */))
172
- return 7 /* ACCELEROMETER_EVT_FREEFALL */;
173
- if (force > sq(3072 /* ACCELEROMETER_3G_TOLERANCE */))
174
- return 8 /* ACCELEROMETER_EVT_3G */;
175
- if (force > sq(6144 /* ACCELEROMETER_6G_TOLERANCE */))
176
- return 9 /* ACCELEROMETER_EVT_6G */;
177
- if (force > sq(8192 /* ACCELEROMETER_8G_TOLERANCE */))
178
- return 10 /* ACCELEROMETER_EVT_8G */;
171
+ if (force < sq(400 /* DAL.ACCELEROMETER_FREEFALL_TOLERANCE */))
172
+ return 7 /* DAL.ACCELEROMETER_EVT_FREEFALL */;
173
+ if (force > sq(3072 /* DAL.ACCELEROMETER_3G_TOLERANCE */))
174
+ return 8 /* DAL.ACCELEROMETER_EVT_3G */;
175
+ if (force > sq(6144 /* DAL.ACCELEROMETER_6G_TOLERANCE */))
176
+ return 9 /* DAL.ACCELEROMETER_EVT_6G */;
177
+ if (force > sq(8192 /* DAL.ACCELEROMETER_8G_TOLERANCE */))
178
+ return 10 /* DAL.ACCELEROMETER_EVT_8G */;
179
179
  // Determine our posture.
180
- if (this.getX() < (-1000 + 200 /* ACCELEROMETER_TILT_TOLERANCE */))
181
- return 3 /* ACCELEROMETER_EVT_TILT_LEFT */;
182
- if (this.getX() > (1000 - 200 /* ACCELEROMETER_TILT_TOLERANCE */))
183
- return 4 /* ACCELEROMETER_EVT_TILT_RIGHT */;
184
- if (this.getY() < (-1000 + 200 /* ACCELEROMETER_TILT_TOLERANCE */))
185
- return 1 /* ACCELEROMETER_EVT_TILT_UP */;
186
- if (this.getY() > (1000 - 200 /* ACCELEROMETER_TILT_TOLERANCE */))
187
- return 2 /* ACCELEROMETER_EVT_TILT_DOWN */;
188
- if (this.getZ() < (-1000 + 200 /* ACCELEROMETER_TILT_TOLERANCE */))
189
- return 5 /* ACCELEROMETER_EVT_FACE_UP */;
190
- if (this.getZ() > (1000 - 200 /* ACCELEROMETER_TILT_TOLERANCE */))
191
- return 6 /* ACCELEROMETER_EVT_FACE_DOWN */;
180
+ if (this.getX() < (-1000 + 200 /* DAL.ACCELEROMETER_TILT_TOLERANCE */))
181
+ return 3 /* DAL.ACCELEROMETER_EVT_TILT_LEFT */;
182
+ if (this.getX() > (1000 - 200 /* DAL.ACCELEROMETER_TILT_TOLERANCE */))
183
+ return 4 /* DAL.ACCELEROMETER_EVT_TILT_RIGHT */;
184
+ if (this.getY() < (-1000 + 200 /* DAL.ACCELEROMETER_TILT_TOLERANCE */))
185
+ return 1 /* DAL.ACCELEROMETER_EVT_TILT_UP */;
186
+ if (this.getY() > (1000 - 200 /* DAL.ACCELEROMETER_TILT_TOLERANCE */))
187
+ return 2 /* DAL.ACCELEROMETER_EVT_TILT_DOWN */;
188
+ if (this.getZ() < (-1000 + 200 /* DAL.ACCELEROMETER_TILT_TOLERANCE */))
189
+ return 5 /* DAL.ACCELEROMETER_EVT_FACE_UP */;
190
+ if (this.getZ() > (1000 - 200 /* DAL.ACCELEROMETER_TILT_TOLERANCE */))
191
+ return 6 /* DAL.ACCELEROMETER_EVT_FACE_DOWN */;
192
192
  return 0;
193
193
  }
194
194
  updateGesture() {
@@ -196,7 +196,7 @@ var pxsim;
196
196
  let g = this.instantaneousPosture();
197
197
  // Perform some low pass filtering to reduce jitter from any detected effects
198
198
  if (g == this.currentGesture) {
199
- if (this.sigma < 5 /* ACCELEROMETER_GESTURE_DAMPING */)
199
+ if (this.sigma < 5 /* DAL.ACCELEROMETER_GESTURE_DAMPING */)
200
200
  this.sigma++;
201
201
  }
202
202
  else {
@@ -204,9 +204,9 @@ var pxsim;
204
204
  this.sigma = 0;
205
205
  }
206
206
  // If we've reached threshold, update our record and raise the relevant event...
207
- if (this.currentGesture != this.lastGesture && this.sigma >= 5 /* ACCELEROMETER_GESTURE_DAMPING */) {
207
+ if (this.currentGesture != this.lastGesture && this.sigma >= 5 /* DAL.ACCELEROMETER_GESTURE_DAMPING */) {
208
208
  this.lastGesture = this.currentGesture;
209
- pxsim.board().bus.queue(13 /* DEVICE_ID_GESTURE */, this.lastGesture);
209
+ pxsim.board().bus.queue(13 /* DAL.DEVICE_ID_GESTURE */, this.lastGesture);
210
210
  }
211
211
  }
212
212
  /**
@@ -728,21 +728,21 @@ var pxsim;
728
728
  this.pressed = p;
729
729
  if (p) {
730
730
  this._wasPressed = true;
731
- pxsim.board().bus.queue(this.id, 1 /* DEVICE_BUTTON_EVT_DOWN */);
731
+ pxsim.board().bus.queue(this.id, 1 /* DAL.DEVICE_BUTTON_EVT_DOWN */);
732
732
  this._pressedTime = pxsim.runtime.runningTime();
733
733
  }
734
734
  else if (this._pressedTime !== -1) {
735
- pxsim.board().bus.queue(this.id, 2 /* DEVICE_BUTTON_EVT_UP */);
735
+ pxsim.board().bus.queue(this.id, 2 /* DAL.DEVICE_BUTTON_EVT_UP */);
736
736
  const current = pxsim.runtime.runningTime();
737
- if (current - this._pressedTime >= 1000 /* DEVICE_BUTTON_LONG_CLICK_TIME */) {
738
- pxsim.board().bus.queue(this.id, 4 /* DEVICE_BUTTON_EVT_LONG_CLICK */);
737
+ if (current - this._pressedTime >= 1000 /* DAL.DEVICE_BUTTON_LONG_CLICK_TIME */) {
738
+ pxsim.board().bus.queue(this.id, 4 /* DAL.DEVICE_BUTTON_EVT_LONG_CLICK */);
739
739
  }
740
740
  else {
741
- pxsim.board().bus.queue(this.id, 3 /* DEVICE_BUTTON_EVT_CLICK */);
741
+ pxsim.board().bus.queue(this.id, 3 /* DAL.DEVICE_BUTTON_EVT_CLICK */);
742
742
  }
743
743
  if (this._clickedTime !== -1) {
744
744
  if (current - this._clickedTime <= DOUBLE_CLICK_TIME) {
745
- pxsim.board().bus.queue(this.id, 6 /* DEVICE_BUTTON_EVT_DOUBLE_CLICK */);
745
+ pxsim.board().bus.queue(this.id, 6 /* DAL.DEVICE_BUTTON_EVT_DOUBLE_CLICK */);
746
746
  }
747
747
  }
748
748
  this._clickedTime = current;
@@ -767,9 +767,9 @@ var pxsim;
767
767
  this.usesButtonAB = false;
768
768
  this.buttonsByPin = {};
769
769
  this.buttons = buttons || [
770
- new CommonButton(1 /* DEVICE_ID_BUTTON_A */),
771
- new CommonButton(2 /* DEVICE_ID_BUTTON_B */),
772
- new CommonButton(3 /* DEVICE_ID_BUTTON_AB */)
770
+ new CommonButton(1 /* DAL.DEVICE_ID_BUTTON_A */),
771
+ new CommonButton(2 /* DAL.DEVICE_ID_BUTTON_B */),
772
+ new CommonButton(3 /* DAL.DEVICE_ID_BUTTON_AB */)
773
773
  ];
774
774
  this.buttons.forEach(btn => this.buttonsByPin[btn.id] = btn);
775
775
  }
@@ -966,10 +966,10 @@ var pxsim;
966
966
  this.state = state;
967
967
  switch (state) {
968
968
  case ThresholdState.High:
969
- pxsim.board().bus.queue(this.id, 2 /* SENSOR_THRESHOLD_HIGH */);
969
+ pxsim.board().bus.queue(this.id, 2 /* DAL.SENSOR_THRESHOLD_HIGH */);
970
970
  break;
971
971
  case ThresholdState.Low:
972
- pxsim.board().bus.queue(this.id, 1 /* SENSOR_THRESHOLD_LOW */);
972
+ pxsim.board().bus.queue(this.id, 1 /* DAL.SENSOR_THRESHOLD_LOW */);
973
973
  break;
974
974
  case ThresholdState.Normal:
975
975
  break;
@@ -1189,8 +1189,8 @@ var pxsim;
1189
1189
  const old = this.value;
1190
1190
  this.value = value;
1191
1191
  const b = pxsim.board();
1192
- if (b && this.eventMode == 2 /* DEVICE_PIN_EVENT_ON_EDGE */ && old != this.value)
1193
- b.bus.queue(this.id, this.value > 0 ? 2 /* DEVICE_PIN_EVT_RISE */ : 3 /* DEVICE_PIN_EVT_FALL */);
1192
+ if (b && this.eventMode == 2 /* DAL.DEVICE_PIN_EVENT_ON_EDGE */ && old != this.value)
1193
+ b.bus.queue(this.id, this.value > 0 ? 2 /* DAL.DEVICE_PIN_EVT_RISE */ : 3 /* DAL.DEVICE_PIN_EVT_FALL */);
1194
1194
  }
1195
1195
  digitalReadPin() {
1196
1196
  this.mode = PinFlags.Digital | PinFlags.Input;
@@ -1251,13 +1251,13 @@ var pxsim;
1251
1251
  onEvent(ev, handler) {
1252
1252
  const b = pxsim.board();
1253
1253
  switch (ev) {
1254
- case 4 /* DEVICE_PIN_EVT_PULSE_HI */:
1255
- case 5 /* DEVICE_PIN_EVT_PULSE_LO */:
1256
- this.eventMode = 3 /* DEVICE_PIN_EVENT_ON_PULSE */;
1254
+ case 4 /* DAL.DEVICE_PIN_EVT_PULSE_HI */:
1255
+ case 5 /* DAL.DEVICE_PIN_EVT_PULSE_LO */:
1256
+ this.eventMode = 3 /* DAL.DEVICE_PIN_EVENT_ON_PULSE */;
1257
1257
  break;
1258
- case 2 /* DEVICE_PIN_EVT_RISE */:
1259
- case 3 /* DEVICE_PIN_EVT_FALL */:
1260
- this.eventMode = 2 /* DEVICE_PIN_EVENT_ON_EDGE */;
1258
+ case 2 /* DAL.DEVICE_PIN_EVT_RISE */:
1259
+ case 3 /* DAL.DEVICE_PIN_EVT_FALL */:
1260
+ this.eventMode = 2 /* DAL.DEVICE_PIN_EVENT_ON_EDGE */;
1261
1261
  break;
1262
1262
  default:
1263
1263
  return;
@@ -2056,7 +2056,7 @@ var pxsim;
2056
2056
  */
2057
2057
  function onPulsed(name, high, body) {
2058
2058
  pxsim.pins.markUsed(name);
2059
- onEvent(name, high ? 4 /* DEVICE_PIN_EVT_PULSE_HI */ : 5 /* DEVICE_PIN_EVT_PULSE_LO */, body);
2059
+ onEvent(name, high ? 4 /* DAL.DEVICE_PIN_EVT_PULSE_HI */ : 5 /* DAL.DEVICE_PIN_EVT_PULSE_LO */, body);
2060
2060
  }
2061
2061
  DigitalInOutPinMethods.onPulsed = onPulsed;
2062
2062
  function onEvent(name, ev, body) {
@@ -2071,7 +2071,7 @@ var pxsim;
2071
2071
  */
2072
2072
  function pulseIn(name, high, maxDuration = 2000000) {
2073
2073
  pxsim.pins.markUsed(name);
2074
- const pulse = high ? 4 /* DEVICE_PIN_EVT_PULSE_HI */ : 5 /* DEVICE_PIN_EVT_PULSE_LO */;
2074
+ const pulse = high ? 4 /* DAL.DEVICE_PIN_EVT_PULSE_HI */ : 5 /* DAL.DEVICE_PIN_EVT_PULSE_LO */;
2075
2075
  // Always return default value, can't simulate
2076
2076
  return 500;
2077
2077
  }
@@ -2395,6 +2395,145 @@ var pxsim;
2395
2395
  pxsim.ToggleState = ToggleState;
2396
2396
  })(pxsim || (pxsim = {}));
2397
2397
  var pxsim;
2398
+ (function (pxsim) {
2399
+ var keymap;
2400
+ (function (keymap) {
2401
+ // Keep in sync with pxt-arcade-sim/api.ts
2402
+ let Key;
2403
+ (function (Key) {
2404
+ Key[Key["None"] = 0] = "None";
2405
+ // Player 1
2406
+ Key[Key["Left"] = 1] = "Left";
2407
+ Key[Key["Up"] = 2] = "Up";
2408
+ Key[Key["Right"] = 3] = "Right";
2409
+ Key[Key["Down"] = 4] = "Down";
2410
+ Key[Key["A"] = 5] = "A";
2411
+ Key[Key["B"] = 6] = "B";
2412
+ Key[Key["Menu"] = 7] = "Menu";
2413
+ // Player 2 = Player 1 + 7
2414
+ // Player 3 = Player 2 + 7
2415
+ // Player 4 = Player 3 + 7
2416
+ // system keys
2417
+ Key[Key["Screenshot"] = -1] = "Screenshot";
2418
+ Key[Key["Gif"] = -2] = "Gif";
2419
+ Key[Key["Reset"] = -3] = "Reset";
2420
+ Key[Key["TogglePause"] = -4] = "TogglePause";
2421
+ })(Key = keymap.Key || (keymap.Key = {}));
2422
+ function _setPlayerKeys(player, // player number is 1-based
2423
+ up, down, left, right, A, B) {
2424
+ pxsim.getKeymapState().setPlayerKeys(player, up, down, left, right, A, B);
2425
+ }
2426
+ keymap._setPlayerKeys = _setPlayerKeys;
2427
+ function _setSystemKeys(screenshot, gif, menu, reset) {
2428
+ pxsim.getKeymapState().setSystemKeys(screenshot, gif, menu, reset);
2429
+ }
2430
+ keymap._setSystemKeys = _setSystemKeys;
2431
+ })(keymap = pxsim.keymap || (pxsim.keymap = {}));
2432
+ })(pxsim || (pxsim = {}));
2433
+ (function (pxsim) {
2434
+ var Key = pxsim.keymap.Key;
2435
+ function getKeymapState() {
2436
+ return pxsim.board().keymapState;
2437
+ }
2438
+ pxsim.getKeymapState = getKeymapState;
2439
+ const reservedKeyCodes = [
2440
+ 27,
2441
+ 9 // Tab
2442
+ ];
2443
+ class KeymapState {
2444
+ constructor() {
2445
+ this.keymap = {};
2446
+ this.altmap = {};
2447
+ this.mappings = {};
2448
+ // Player 1 keymap
2449
+ this.setPlayerKeys(1, // Player 1
2450
+ 87, // W - Up
2451
+ 83, // D - Down
2452
+ 65, // A - Left
2453
+ 83, // S - Right
2454
+ 32, // Space - A
2455
+ 13 // Enter - B
2456
+ );
2457
+ // Player 2 keymap
2458
+ this.setPlayerKeys(2, // Player 2
2459
+ 73, // I - Up
2460
+ 75, // K - Down
2461
+ 74, // J - Left
2462
+ 75, // K - Right
2463
+ 85, // U - A
2464
+ 79 // O - B
2465
+ );
2466
+ // Note: Player 3 and 4 have no default keyboard mapping
2467
+ // System keymap
2468
+ this.setSystemKeys(80, // P - Screenshot
2469
+ 82, // R - Gif
2470
+ 0, // Menu - not mapped
2471
+ 0 // Reset - not mapped
2472
+ );
2473
+ // Player 1 alternate mapping. This is cleared when the game sets any player keys explicitly
2474
+ this.altmap[38] = Key.Up; // UpArrow
2475
+ this.altmap[37] = Key.Left; // LeftArrow
2476
+ this.altmap[40] = Key.Down; // DownArrow
2477
+ this.altmap[39] = Key.Right; // RightArrow
2478
+ this.altmap[81] = Key.A; // Q
2479
+ this.altmap[90] = Key.A; // Z
2480
+ this.altmap[88] = Key.B; // X
2481
+ this.altmap[69] = Key.B; // E
2482
+ }
2483
+ setPlayerKeys(player, // player number is 1-based
2484
+ up, down, left, right, A, B) {
2485
+ // We only support four players
2486
+ if (player < 1 || player > 4)
2487
+ return;
2488
+ const keyCodes = [up, down, left, right, A, B];
2489
+ // Check for reserved key codes
2490
+ // TODO: How to surface this runtime error to the user?
2491
+ // TODO: Send message to UI: "Keyboard mapping contains a reserved key code"
2492
+ const filtered = keyCodes.filter(keyCode => reservedKeyCodes.includes(keyCode));
2493
+ if (filtered.length)
2494
+ return;
2495
+ // Clear existing mapped keys for player
2496
+ const mapName = `player-${player}`;
2497
+ this.clearMap(mapName);
2498
+ // Clear altmap When explicitly setting the player keys
2499
+ this.altmap = {};
2500
+ // Map the new keys
2501
+ const offset = (player - 1) * 7; // +7 for player 2's keys
2502
+ this.keymap[up] = Key.Up + offset;
2503
+ this.keymap[down] = Key.Down + offset;
2504
+ this.keymap[left] = Key.Left + offset;
2505
+ this.keymap[right] = Key.Right + offset;
2506
+ this.keymap[A] = Key.A + offset;
2507
+ this.keymap[B] = Key.B + offset;
2508
+ // Remember this mapping
2509
+ this.saveMap(mapName, keyCodes);
2510
+ }
2511
+ setSystemKeys(screenshot, gif, menu, reset) {
2512
+ const mapName = "system";
2513
+ // Clear existing mapped keys for system
2514
+ this.clearMap(mapName);
2515
+ this.keymap[screenshot] = Key.Screenshot;
2516
+ this.keymap[gif] = Key.Gif;
2517
+ this.keymap[menu] = Key.Menu;
2518
+ this.keymap[reset] = Key.Reset;
2519
+ // Remember this mapping
2520
+ this.saveMap(mapName, [screenshot, gif, menu, reset]);
2521
+ }
2522
+ getKey(keyCode) {
2523
+ return keyCode ? this.keymap[keyCode] || this.altmap[keyCode] || Key.None : Key.None;
2524
+ }
2525
+ saveMap(name, keyCodes) {
2526
+ this.mappings[name] = keyCodes;
2527
+ }
2528
+ clearMap(name) {
2529
+ const keyCodes = this.mappings[name];
2530
+ keyCodes === null || keyCodes === void 0 ? void 0 : keyCodes.forEach(keyCode => delete this.keymap[keyCode]);
2531
+ delete this.mappings[name];
2532
+ }
2533
+ }
2534
+ pxsim.KeymapState = KeymapState;
2535
+ })(pxsim || (pxsim = {}));
2536
+ var pxsim;
2398
2537
  (function (pxsim) {
2399
2538
  var multiplayer;
2400
2539
  (function (multiplayer) {
@@ -2927,10 +3066,10 @@ var pxsim;
2927
3066
  let b = pxsim.lightSensorState();
2928
3067
  b.setUsed();
2929
3068
  switch (condition) {
2930
- case 1 /* SENSOR_THRESHOLD_LOW */:
3069
+ case 1 /* DAL.SENSOR_THRESHOLD_LOW */:
2931
3070
  b.setLowThreshold(value);
2932
3071
  break;
2933
- case 2 /* SENSOR_THRESHOLD_HIGH */:
3072
+ case 2 /* DAL.SENSOR_THRESHOLD_HIGH */:
2934
3073
  b.setHighThreshold(value);
2935
3074
  break;
2936
3075
  }
@@ -2962,7 +3101,7 @@ var pxsim;
2962
3101
  if (!b)
2963
3102
  return;
2964
3103
  b.setUsed();
2965
- pxsim.pxtcore.registerWithDal(b.id, 2 /* LEVEL_THRESHOLD_HIGH */, body);
3104
+ pxsim.pxtcore.registerWithDal(b.id, 2 /* DAL.LEVEL_THRESHOLD_HIGH */, body);
2966
3105
  }
2967
3106
  input.onLoudSound = onLoudSound;
2968
3107
  function setLoudSoundThreshold(value) {
@@ -4318,7 +4457,7 @@ var pxsim;
4318
4457
  const rd = new Uint32Array(ca.buffer);
4319
4458
  const src = buf.data;
4320
4459
  if (48 != src.length)
4321
- pxsim.pxtrt.panic(911 /* PANIC_SCREEN_ERROR */);
4460
+ pxsim.pxtrt.panic(911 /* pxsim.PXT_PANIC.PANIC_SCREEN_ERROR */);
4322
4461
  this.palette = new Uint32Array((src.length / 3) | 0);
4323
4462
  for (let i = 0; i < this.palette.length; ++i) {
4324
4463
  const p = i * 3;
@@ -4671,10 +4810,10 @@ var pxsim;
4671
4810
  return;
4672
4811
  }
4673
4812
  else if (left) {
4674
- pxsim.board().bus.queue(SlideSwitchState.id, 2 /* DEVICE_BUTTON_EVT_UP */);
4813
+ pxsim.board().bus.queue(SlideSwitchState.id, 2 /* DAL.DEVICE_BUTTON_EVT_UP */);
4675
4814
  }
4676
4815
  else {
4677
- pxsim.board().bus.queue(SlideSwitchState.id, 1 /* DEVICE_BUTTON_EVT_DOWN */);
4816
+ pxsim.board().bus.queue(SlideSwitchState.id, 1 /* DAL.DEVICE_BUTTON_EVT_DOWN */);
4678
4817
  }
4679
4818
  this.left = left;
4680
4819
  }
@@ -4812,7 +4951,7 @@ var pxsim;
4812
4951
  const t = unit == pxsim.TemperatureUnit.Celsius
4813
4952
  ? temperature
4814
4953
  : (((temperature - 32) * 10) / 18 >> 0);
4815
- if (condition === 2 /* LEVEL_THRESHOLD_HIGH */) {
4954
+ if (condition === 2 /* DAL.LEVEL_THRESHOLD_HIGH */) {
4816
4955
  b.setHighThreshold(t);
4817
4956
  }
4818
4957
  else {
@@ -5171,7 +5310,7 @@ var pxsim;
5171
5310
  }
5172
5311
  _wifi.eventID = eventID;
5173
5312
  function scanStart() {
5174
- _raiseEvent(1 /* ScanDone */);
5313
+ _raiseEvent(1 /* WifiEvent.ScanDone */);
5175
5314
  }
5176
5315
  _wifi.scanStart = scanStart;
5177
5316
  function startLoginServer() {
@@ -5186,7 +5325,7 @@ var pxsim;
5186
5325
  }
5187
5326
  _wifi.scanResults = scanResults;
5188
5327
  function connect(ssid, pass) {
5189
- _raiseEvent(2 /* GotIP */);
5328
+ _raiseEvent(2 /* WifiEvent.GotIP */);
5190
5329
  return 0;
5191
5330
  }
5192
5331
  _wifi.connect = connect;