pxt-common-packages 9.4.13 → 9.4.16
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 +44 -0
- package/built/common-sim.js +202 -63
- 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 +8290 -8027
- package/libs/controller---none/built/debug/binary.js +8269 -8006
- 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 +19 -0
- package/libs/game/_locales/game-strings.json +2 -0
- package/libs/game/built/debug/binary.js +8182 -7919
- package/libs/game/extendableSprite.ts +80 -0
- package/libs/game/hitbox.ts +42 -1
- package/libs/game/keymap.cpp +12 -0
- package/libs/game/keymap.ts +169 -0
- package/libs/game/pxt.json +4 -1
- package/libs/game/sim/keymap.ts +167 -0
- package/libs/game/sprite.ts +73 -95
- 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 +9970 -9707
- package/libs/palette/built/debug/binary.js +8181 -7918
- 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/servo/built/debug/binary.js +8 -8
- package/libs/sprite-scaling/built/debug/binary.js +8181 -7918
- package/libs/storyboard/built/debug/binary.js +8181 -7918
- package/package.json +1 -1
package/built/common-sim.d.ts
CHANGED
|
@@ -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.gamepad {
|
|
732
776
|
function setButton(index: number, up: boolean): void;
|
|
733
777
|
function move(index: number, x: number, y: number): void;
|
package/built/common-sim.js
CHANGED
|
@@ -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, // S - Down
|
|
2452
|
+
65, // A - Left
|
|
2453
|
+
68, // D - 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
|
+
76, // L - 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 gamepad;
|
|
2400
2539
|
(function (gamepad) {
|
|
@@ -2835,10 +2974,10 @@ var pxsim;
|
|
|
2835
2974
|
let b = pxsim.lightSensorState();
|
|
2836
2975
|
b.setUsed();
|
|
2837
2976
|
switch (condition) {
|
|
2838
|
-
case 1 /* SENSOR_THRESHOLD_LOW */:
|
|
2977
|
+
case 1 /* DAL.SENSOR_THRESHOLD_LOW */:
|
|
2839
2978
|
b.setLowThreshold(value);
|
|
2840
2979
|
break;
|
|
2841
|
-
case 2 /* SENSOR_THRESHOLD_HIGH */:
|
|
2980
|
+
case 2 /* DAL.SENSOR_THRESHOLD_HIGH */:
|
|
2842
2981
|
b.setHighThreshold(value);
|
|
2843
2982
|
break;
|
|
2844
2983
|
}
|
|
@@ -2870,7 +3009,7 @@ var pxsim;
|
|
|
2870
3009
|
if (!b)
|
|
2871
3010
|
return;
|
|
2872
3011
|
b.setUsed();
|
|
2873
|
-
pxsim.pxtcore.registerWithDal(b.id, 2 /* LEVEL_THRESHOLD_HIGH */, body);
|
|
3012
|
+
pxsim.pxtcore.registerWithDal(b.id, 2 /* DAL.LEVEL_THRESHOLD_HIGH */, body);
|
|
2874
3013
|
}
|
|
2875
3014
|
input.onLoudSound = onLoudSound;
|
|
2876
3015
|
function setLoudSoundThreshold(value) {
|
|
@@ -4196,7 +4335,7 @@ var pxsim;
|
|
|
4196
4335
|
const rd = new Uint32Array(ca.buffer);
|
|
4197
4336
|
const src = buf.data;
|
|
4198
4337
|
if (48 != src.length)
|
|
4199
|
-
pxsim.pxtrt.panic(911 /* PANIC_SCREEN_ERROR */);
|
|
4338
|
+
pxsim.pxtrt.panic(911 /* pxsim.PXT_PANIC.PANIC_SCREEN_ERROR */);
|
|
4200
4339
|
this.palette = new Uint32Array((src.length / 3) | 0);
|
|
4201
4340
|
for (let i = 0; i < this.palette.length; ++i) {
|
|
4202
4341
|
const p = i * 3;
|
|
@@ -4549,10 +4688,10 @@ var pxsim;
|
|
|
4549
4688
|
return;
|
|
4550
4689
|
}
|
|
4551
4690
|
else if (left) {
|
|
4552
|
-
pxsim.board().bus.queue(SlideSwitchState.id, 2 /* DEVICE_BUTTON_EVT_UP */);
|
|
4691
|
+
pxsim.board().bus.queue(SlideSwitchState.id, 2 /* DAL.DEVICE_BUTTON_EVT_UP */);
|
|
4553
4692
|
}
|
|
4554
4693
|
else {
|
|
4555
|
-
pxsim.board().bus.queue(SlideSwitchState.id, 1 /* DEVICE_BUTTON_EVT_DOWN */);
|
|
4694
|
+
pxsim.board().bus.queue(SlideSwitchState.id, 1 /* DAL.DEVICE_BUTTON_EVT_DOWN */);
|
|
4556
4695
|
}
|
|
4557
4696
|
this.left = left;
|
|
4558
4697
|
}
|
|
@@ -4690,7 +4829,7 @@ var pxsim;
|
|
|
4690
4829
|
const t = unit == pxsim.TemperatureUnit.Celsius
|
|
4691
4830
|
? temperature
|
|
4692
4831
|
: (((temperature - 32) * 10) / 18 >> 0);
|
|
4693
|
-
if (condition === 2 /* LEVEL_THRESHOLD_HIGH */) {
|
|
4832
|
+
if (condition === 2 /* DAL.LEVEL_THRESHOLD_HIGH */) {
|
|
4694
4833
|
b.setHighThreshold(t);
|
|
4695
4834
|
}
|
|
4696
4835
|
else {
|
|
@@ -5049,7 +5188,7 @@ var pxsim;
|
|
|
5049
5188
|
}
|
|
5050
5189
|
_wifi.eventID = eventID;
|
|
5051
5190
|
function scanStart() {
|
|
5052
|
-
_raiseEvent(1 /* ScanDone */);
|
|
5191
|
+
_raiseEvent(1 /* WifiEvent.ScanDone */);
|
|
5053
5192
|
}
|
|
5054
5193
|
_wifi.scanStart = scanStart;
|
|
5055
5194
|
function startLoginServer() {
|
|
@@ -5064,7 +5203,7 @@ var pxsim;
|
|
|
5064
5203
|
}
|
|
5065
5204
|
_wifi.scanResults = scanResults;
|
|
5066
5205
|
function connect(ssid, pass) {
|
|
5067
|
-
_raiseEvent(2 /* GotIP */);
|
|
5206
|
+
_raiseEvent(2 /* WifiEvent.GotIP */);
|
|
5068
5207
|
return 0;
|
|
5069
5208
|
}
|
|
5070
5209
|
_wifi.connect = connect;
|