pxt-common-packages 10.4.1 → 10.4.3
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.js +5 -5
- 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 +8528 -8282
- package/libs/controller---none/built/debug/binary.js +8507 -8261
- 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 +2 -2
- package/libs/game/_locales/game-strings.json +2 -1
- package/libs/game/built/debug/binary.js +8416 -8170
- package/libs/game/controller.ts +24 -0
- package/libs/game/game.ts +13 -4
- package/libs/game/multiplayer.ts +5 -3
- package/libs/game/scene.ts +2 -0
- package/libs/game/sim/multiplayer.ts +6 -5
- package/libs/game/sprite.ts +1 -0
- package/libs/game/sprites.ts +13 -0
- 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/mixer/instrument.ts +7 -0
- package/libs/mixer/melody.ts +1 -0
- package/libs/mqtt/built/debug/binary.js +176 -176
- package/libs/multiplayer/docs/reference/multiplayer/change-player-state-by.md +121 -0
- package/libs/multiplayer/docs/reference/multiplayer/game-over-player-win.md +88 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-by-index.md +40 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-by-number.md +34 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-by-sprite.md +109 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-property.md +55 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-sprite.md +59 -0
- package/libs/multiplayer/docs/reference/multiplayer/get-player-state.md +55 -0
- package/libs/multiplayer/docs/reference/multiplayer/is-button-pressed.md +44 -0
- package/libs/multiplayer/docs/reference/multiplayer/move-with-buttons.md +50 -0
- package/libs/multiplayer/docs/reference/multiplayer/multiplayer-state.md +55 -0
- package/libs/multiplayer/docs/reference/multiplayer/on-button-event.md +60 -0
- package/libs/multiplayer/docs/reference/multiplayer/on-controller-event.md +76 -0
- package/libs/multiplayer/docs/reference/multiplayer/on-life-zero.md +28 -0
- package/libs/multiplayer/docs/reference/multiplayer/on-score.md +30 -0
- package/libs/multiplayer/docs/reference/multiplayer/player-selector.md +51 -0
- package/libs/multiplayer/docs/reference/multiplayer/set-player-indicators-visible.md +69 -0
- package/libs/multiplayer/docs/reference/multiplayer/set-player-sprite.md +50 -0
- package/libs/multiplayer/docs/reference/multiplayer/set-player-state.md +139 -0
- package/libs/multiplayer/docs/reference/multiplayer.md +57 -0
- package/libs/multiplayer/docs/types/player.md +82 -0
- package/libs/multiplayer/fieldEditors.ts +1 -0
- package/libs/multiplayer/ns.ts +1 -1
- package/libs/multiplayer/player.ts +80 -48
- package/libs/net/built/debug/binary.js +176 -176
- package/libs/net-game/built/debug/binary.js +10194 -9948
- package/libs/palette/built/debug/binary.js +8415 -8169
- 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 +8415 -8169
- package/libs/storyboard/built/debug/binary.js +8415 -8169
- package/package.json +1 -1
package/libs/game/controller.ts
CHANGED
|
@@ -13,6 +13,30 @@ enum ControllerEvent {
|
|
|
13
13
|
//% blockGap=8
|
|
14
14
|
namespace controller {
|
|
15
15
|
let _players: Controller[];
|
|
16
|
+
game.addScenePopHandler(() => {
|
|
17
|
+
const stateWhenPushed = game.currentScene().controllerConnectionState;
|
|
18
|
+
if (!stateWhenPushed)
|
|
19
|
+
return;
|
|
20
|
+
for (let i = 0; i < stateWhenPushed.length; i++) {
|
|
21
|
+
const p = _players[i];
|
|
22
|
+
if (p && (!!stateWhenPushed[i] != !!p.connected)) {
|
|
23
|
+
// connection state changed while in another scene; raise the event.
|
|
24
|
+
control.raiseEvent(
|
|
25
|
+
p.id,
|
|
26
|
+
p.connected ? ControllerEvent.Connected : ControllerEvent.Disconnected
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
})
|
|
32
|
+
game.addScenePushHandler(oldScene => {
|
|
33
|
+
oldScene.controllerConnectionState = [];
|
|
34
|
+
for (let i = 0; i < _players.length; i++) {
|
|
35
|
+
if (_players[i]) {
|
|
36
|
+
oldScene.controllerConnectionState[i] = _players[i].connected;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
})
|
|
16
40
|
|
|
17
41
|
function addController(ctrl: Controller) {
|
|
18
42
|
if (!_players) {
|
package/libs/game/game.ts
CHANGED
|
@@ -248,7 +248,7 @@ namespace game {
|
|
|
248
248
|
* @param win whether the sound should play on a win (true) or lose (false)
|
|
249
249
|
* @param effect
|
|
250
250
|
*/
|
|
251
|
-
//% blockId=
|
|
251
|
+
//% blockId=game_setgameoverplayable
|
|
252
252
|
//% block="use $sound looping $looping for $win"
|
|
253
253
|
//% sound.shadow=music_melody_playable
|
|
254
254
|
//% sound.defl=music.powerUp
|
|
@@ -260,12 +260,19 @@ namespace game {
|
|
|
260
260
|
//% weight=80
|
|
261
261
|
//% blockGap=8
|
|
262
262
|
//% help=game/set-game-over-sound
|
|
263
|
-
export function
|
|
263
|
+
export function setGameOverPlayable(win: boolean, sound: music.Playable, looping: boolean) {
|
|
264
264
|
init();
|
|
265
265
|
const goc = game.gameOverConfig();
|
|
266
266
|
goc.setSound(win, sound, looping, true);
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
+
// Legacy api. Older extensions may still use this.
|
|
270
|
+
export function setGameOverSound(win: boolean, sound: music.Melody) {
|
|
271
|
+
init();
|
|
272
|
+
const goc = game.gameOverConfig();
|
|
273
|
+
goc.setSound(win, music.melodyPlayable(sound), false, true);
|
|
274
|
+
}
|
|
275
|
+
|
|
269
276
|
/**
|
|
270
277
|
* Set the message that displays when the game is over
|
|
271
278
|
* @param win whether the message should show on a win (true) or lose (false)
|
|
@@ -357,9 +364,11 @@ namespace game {
|
|
|
357
364
|
const winner = judged && win && info.winningPlayer();
|
|
358
365
|
const scores = playersWithScores.map(player => new GameOverPlayerScore(player.number, player.impl.score(), player === winner));
|
|
359
366
|
|
|
360
|
-
// Save scores
|
|
367
|
+
// Save all scores. Dependency Note: this action triggers Kiosk to exit the simulator and show the high score screen.
|
|
368
|
+
info.saveAllScores();
|
|
369
|
+
|
|
370
|
+
// Save high score if this was a judged game and there was a winner (don't save in the LOSE case).
|
|
361
371
|
if (judged && winner) {
|
|
362
|
-
info.saveAllScores();
|
|
363
372
|
info.saveHighScore();
|
|
364
373
|
}
|
|
365
374
|
|
package/libs/game/multiplayer.ts
CHANGED
|
@@ -34,10 +34,12 @@ namespace multiplayer {
|
|
|
34
34
|
postImage(screen);
|
|
35
35
|
}
|
|
36
36
|
})
|
|
37
|
+
}
|
|
38
|
+
}
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
export function initPlayerConnectionListeners() {
|
|
41
|
+
for (let p = 1; p <= 4; p++) {
|
|
42
|
+
registerPlayerConnectionListeners(p);
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
45
|
|
package/libs/game/scene.ts
CHANGED
|
@@ -94,6 +94,7 @@ namespace scene {
|
|
|
94
94
|
gameForeverHandlers: GameForeverHandler[];
|
|
95
95
|
particleSources: particles.ParticleSource[];
|
|
96
96
|
controlledSprites: controller.ControlledSprite[][];
|
|
97
|
+
controllerConnectionState: boolean[]
|
|
97
98
|
followingSprites: sprites.FollowingSprite[];
|
|
98
99
|
buttonEventHandlers: controller.ButtonEventHandlerState[];
|
|
99
100
|
|
|
@@ -181,6 +182,7 @@ namespace scene {
|
|
|
181
182
|
// update screen
|
|
182
183
|
this.eventContext.registerFrameHandler(UPDATE_SCREEN_PRIORITY, control.__screen.update);
|
|
183
184
|
multiplayer.initServer();
|
|
185
|
+
multiplayer.initPlayerConnectionListeners();
|
|
184
186
|
// register additional components
|
|
185
187
|
Scene.initializers.forEach(f => f(this));
|
|
186
188
|
}
|
|
@@ -17,11 +17,14 @@ namespace pxsim.multiplayer {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export function postIcon(iconType: IconType, slot: number, im: pxsim.RefImage) {
|
|
20
|
-
if (im._width * im._height > 64 * 64) {
|
|
20
|
+
if (im && (im._width * im._height > 64 * 64)) {
|
|
21
21
|
// setting 64x64 as max size for icon for now
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
|
|
25
|
+
// treat empty icon as undefined
|
|
26
|
+
const asBuf = (im && im.data.some(pixel => pixel != 0))
|
|
27
|
+
? pxsim.image.toBuffer(im) : undefined;
|
|
25
28
|
const sb = board() as ScreenBoard;
|
|
26
29
|
const screenState = sb && sb.screenState;
|
|
27
30
|
getMultiplayerState().send({
|
|
@@ -192,9 +195,7 @@ namespace pxsim {
|
|
|
192
195
|
}
|
|
193
196
|
}
|
|
194
197
|
} else if (isConnectionMessage(msg)) {
|
|
195
|
-
|
|
196
|
-
this.registerConnectionState(msg.slot, msg.connected);
|
|
197
|
-
}
|
|
198
|
+
this.registerConnectionState(msg.slot, msg.connected);
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
201
|
}
|
package/libs/game/sprite.ts
CHANGED
|
@@ -854,6 +854,7 @@ class Sprite extends sprites.BaseSprite {
|
|
|
854
854
|
//% duration.shadow=timePicker
|
|
855
855
|
//% expandableArgumentMode="toggle"
|
|
856
856
|
//% help=sprites/sprite/destroy
|
|
857
|
+
//% deprecated=1
|
|
857
858
|
destroy(effect?: effects.ParticleEffect, duration?: number) {
|
|
858
859
|
if (this.flags & sprites.Flag.Destroyed)
|
|
859
860
|
return;
|
package/libs/game/sprites.ts
CHANGED
|
@@ -60,6 +60,19 @@ namespace sprites {
|
|
|
60
60
|
return sprites.create(img, kind);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
//% group="Effects"
|
|
64
|
+
//% weight=80
|
|
65
|
+
//% blockId=spritedestroy2 block="destroy $sprite || with $effect effect for $duration ms"
|
|
66
|
+
//% sprite.shadow=variables_get
|
|
67
|
+
//% sprite.defl=mySprite
|
|
68
|
+
//% duration.shadow=timePicker
|
|
69
|
+
//% expandableArgumentMode="toggle"
|
|
70
|
+
//% help=sprites/sprite/destroy
|
|
71
|
+
export function destroy(sprite: Sprite, effect?: effects.ParticleEffect, duration?: number) {
|
|
72
|
+
if (!sprite) return;
|
|
73
|
+
sprite.destroy(effect, duration);
|
|
74
|
+
}
|
|
75
|
+
|
|
63
76
|
/**
|
|
64
77
|
* Return an array of all sprites of the given kind.
|
|
65
78
|
* @param kind the target kind
|
|
@@ -56,7 +56,7 @@ const pxsim_pxtrt = pxsim.pxtrt;
|
|
|
56
56
|
const pxsim_numops = pxsim.numops;
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
function
|
|
59
|
+
function _main___P48826(s) {
|
|
60
60
|
let r0 = s.r0, step = s.pc;
|
|
61
61
|
s.pc = -1;
|
|
62
62
|
|
|
@@ -66,19 +66,19 @@ if (yieldSteps-- < 0 && maybeYield(s, step, r0) || runtime !== pxsim.runtime) re
|
|
|
66
66
|
switch (step) {
|
|
67
67
|
case 0:
|
|
68
68
|
|
|
69
|
-
globals.
|
|
70
|
-
globals.
|
|
69
|
+
globals._intervals___49069 = (undefined);
|
|
70
|
+
globals._pollEventQueue___49082 = (undefined);
|
|
71
71
|
r0 = undefined;
|
|
72
72
|
return leave(s, r0)
|
|
73
73
|
default: oops()
|
|
74
74
|
} } }
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
_main___P48826.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"characterlcd.ts","functionName":"<main>","argumentNames":[]}
|
|
76
|
+
_main___P48826.continuations = [ ]
|
|
77
77
|
|
|
78
|
-
function
|
|
78
|
+
function _main___P48826_mk(s) {
|
|
79
79
|
checkStack(s.depth);
|
|
80
80
|
return {
|
|
81
|
-
parent: s, fn:
|
|
81
|
+
parent: s, fn: _main___P48826, depth: s.depth + 1,
|
|
82
82
|
pc: 0, retval: undefined, r0: undefined, overwrittenPC: false, lambdaArgs: null,
|
|
83
83
|
} }
|
|
84
84
|
|
|
@@ -88,5 +88,5 @@ function _main___P48755_mk(s) {
|
|
|
88
88
|
|
|
89
89
|
const breakpoints = setupDebugger(1, [])
|
|
90
90
|
|
|
91
|
-
return
|
|
91
|
+
return _main___P48826
|
|
92
92
|
})
|
|
@@ -56,7 +56,7 @@ const pxsim_pxtrt = pxsim.pxtrt;
|
|
|
56
56
|
const pxsim_numops = pxsim.numops;
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
function
|
|
59
|
+
function _main___P98810(s) {
|
|
60
60
|
let r0 = s.r0, step = s.pc;
|
|
61
61
|
s.pc = -1;
|
|
62
62
|
|
|
@@ -66,19 +66,19 @@ if (yieldSteps-- < 0 && maybeYield(s, step, r0) || runtime !== pxsim.runtime) re
|
|
|
66
66
|
switch (step) {
|
|
67
67
|
case 0:
|
|
68
68
|
|
|
69
|
-
globals.
|
|
70
|
-
globals.
|
|
69
|
+
globals._intervals___99053 = (undefined);
|
|
70
|
+
globals._pollEventQueue___99066 = (undefined);
|
|
71
71
|
r0 = undefined;
|
|
72
72
|
return leave(s, r0)
|
|
73
73
|
default: oops()
|
|
74
74
|
} } }
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
_main___P98810.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"tsl2591.ts","functionName":"<main>","argumentNames":[]}
|
|
76
|
+
_main___P98810.continuations = [ ]
|
|
77
77
|
|
|
78
|
-
function
|
|
78
|
+
function _main___P98810_mk(s) {
|
|
79
79
|
checkStack(s.depth);
|
|
80
80
|
return {
|
|
81
|
-
parent: s, fn:
|
|
81
|
+
parent: s, fn: _main___P98810, depth: s.depth + 1,
|
|
82
82
|
pc: 0, retval: undefined, r0: undefined, overwrittenPC: false, lambdaArgs: null,
|
|
83
83
|
} }
|
|
84
84
|
|
|
@@ -88,5 +88,5 @@ function _main___P98597_mk(s) {
|
|
|
88
88
|
|
|
89
89
|
const breakpoints = setupDebugger(1, [])
|
|
90
90
|
|
|
91
|
-
return
|
|
91
|
+
return _main___P98810
|
|
92
92
|
})
|
|
@@ -56,7 +56,7 @@ const pxsim_pxtrt = pxsim.pxtrt;
|
|
|
56
56
|
const pxsim_numops = pxsim.numops;
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
function
|
|
59
|
+
function _main___P60128(s) {
|
|
60
60
|
let r0 = s.r0, step = s.pc;
|
|
61
61
|
s.pc = -1;
|
|
62
62
|
|
|
@@ -66,19 +66,19 @@ if (yieldSteps-- < 0 && maybeYield(s, step, r0) || runtime !== pxsim.runtime) re
|
|
|
66
66
|
switch (step) {
|
|
67
67
|
case 0:
|
|
68
68
|
|
|
69
|
-
globals.
|
|
70
|
-
globals.
|
|
69
|
+
globals._intervals___60371 = (undefined);
|
|
70
|
+
globals._pollEventQueue___60384 = (undefined);
|
|
71
71
|
r0 = undefined;
|
|
72
72
|
return leave(s, r0)
|
|
73
73
|
default: oops()
|
|
74
74
|
} } }
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
_main___P60128.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"lora.ts","functionName":"<main>","argumentNames":[]}
|
|
76
|
+
_main___P60128.continuations = [ ]
|
|
77
77
|
|
|
78
|
-
function
|
|
78
|
+
function _main___P60128_mk(s) {
|
|
79
79
|
checkStack(s.depth);
|
|
80
80
|
return {
|
|
81
|
-
parent: s, fn:
|
|
81
|
+
parent: s, fn: _main___P60128, depth: s.depth + 1,
|
|
82
82
|
pc: 0, retval: undefined, r0: undefined, overwrittenPC: false, lambdaArgs: null,
|
|
83
83
|
} }
|
|
84
84
|
|
|
@@ -88,5 +88,5 @@ function _main___P60057_mk(s) {
|
|
|
88
88
|
|
|
89
89
|
const breakpoints = setupDebugger(1, [])
|
|
90
90
|
|
|
91
|
-
return
|
|
91
|
+
return _main___P60128
|
|
92
92
|
})
|
|
@@ -56,7 +56,7 @@ const pxsim_pxtrt = pxsim.pxtrt;
|
|
|
56
56
|
const pxsim_numops = pxsim.numops;
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
function
|
|
59
|
+
function _main___P192302(s) {
|
|
60
60
|
let r0 = s.r0, step = s.pc;
|
|
61
61
|
s.pc = -1;
|
|
62
62
|
|
|
@@ -66,19 +66,19 @@ if (yieldSteps-- < 0 && maybeYield(s, step, r0) || runtime !== pxsim.runtime) re
|
|
|
66
66
|
switch (step) {
|
|
67
67
|
case 0:
|
|
68
68
|
|
|
69
|
-
globals.
|
|
70
|
-
globals.
|
|
69
|
+
globals._intervals___192545 = (undefined);
|
|
70
|
+
globals._pollEventQueue___192558 = (undefined);
|
|
71
71
|
r0 = undefined;
|
|
72
72
|
return leave(s, r0)
|
|
73
73
|
default: oops()
|
|
74
74
|
} } }
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
_main___P192302.info = {"start":0,"length":0,"line":0,"column":0,"endLine":0,"endColumn":0,"fileName":"keypad.ts","functionName":"<main>","argumentNames":[]}
|
|
76
|
+
_main___P192302.continuations = [ ]
|
|
77
77
|
|
|
78
|
-
function
|
|
78
|
+
function _main___P192302_mk(s) {
|
|
79
79
|
checkStack(s.depth);
|
|
80
80
|
return {
|
|
81
|
-
parent: s, fn:
|
|
81
|
+
parent: s, fn: _main___P192302, depth: s.depth + 1,
|
|
82
82
|
pc: 0, retval: undefined, r0: undefined, overwrittenPC: false, lambdaArgs: null,
|
|
83
83
|
} }
|
|
84
84
|
|
|
@@ -88,5 +88,5 @@ function _main___P191805_mk(s) {
|
|
|
88
88
|
|
|
89
89
|
const breakpoints = setupDebugger(1, [])
|
|
90
90
|
|
|
91
|
-
return
|
|
91
|
+
return _main___P192302
|
|
92
92
|
})
|
package/libs/mixer/instrument.ts
CHANGED
|
@@ -811,4 +811,11 @@ namespace music.sequencer {
|
|
|
811
811
|
// Use cosine to smooth out the value somewhat
|
|
812
812
|
return Math.cos(((time / 1000) * lfo.frequency) * 2 * Math.PI) * lfo.amplitude
|
|
813
813
|
}
|
|
814
|
+
|
|
815
|
+
export function _stopAllSongs() {
|
|
816
|
+
if (currentSequencer) {
|
|
817
|
+
currentSequencer.stop();
|
|
818
|
+
currentSequencer = undefined;
|
|
819
|
+
}
|
|
820
|
+
}
|
|
814
821
|
}
|