@datamoc/mw_games 0.25.0 → 0.27.0
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/CHANGELOG.md +192 -0
- package/README.md +15 -0
- package/api-surface.json +14942 -0
- package/dist/actors/StatBlock.d.ts +2 -4
- package/dist/actors/StatBlock.d.ts.map +1 -1
- package/dist/actors/StatBlock.js +2 -4
- package/dist/actors/StatBlock.js.map +1 -1
- package/dist/ai/Heuristics.d.ts +1 -1
- package/dist/ai/Heuristics.js +1 -1
- package/dist/ai/Suggest.d.ts +54 -0
- package/dist/ai/Suggest.d.ts.map +1 -0
- package/dist/ai/Suggest.js +48 -0
- package/dist/ai/Suggest.js.map +1 -0
- package/dist/ai/index.d.ts +2 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/assets/index.d.ts +1 -0
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js.map +1 -1
- package/dist/core/Blob.d.ts.map +1 -1
- package/dist/core/Blob.js +2 -8
- package/dist/core/Blob.js.map +1 -1
- package/dist/core/Grid.d.ts +115 -0
- package/dist/core/Grid.d.ts.map +1 -1
- package/dist/core/Grid.js +125 -0
- package/dist/core/Grid.js.map +1 -1
- package/dist/core/HttpTransport.d.ts +14 -0
- package/dist/core/HttpTransport.d.ts.map +1 -1
- package/dist/core/HttpTransport.js +14 -0
- package/dist/core/HttpTransport.js.map +1 -1
- package/dist/core/Random.d.ts +63 -13
- package/dist/core/Random.d.ts.map +1 -1
- package/dist/core/Random.js +28 -25
- package/dist/core/Random.js.map +1 -1
- package/dist/core/Replay.d.ts +28 -4
- package/dist/core/Replay.d.ts.map +1 -1
- package/dist/core/Replay.js +38 -9
- package/dist/core/Replay.js.map +1 -1
- package/dist/core/ReplayFile.d.ts +197 -0
- package/dist/core/ReplayFile.d.ts.map +1 -0
- package/dist/core/ReplayFile.js +257 -0
- package/dist/core/ReplayFile.js.map +1 -0
- package/dist/core/index.d.ts +9 -5
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -2
- package/dist/core/index.js.map +1 -1
- package/dist/headless/index.d.ts +87 -0
- package/dist/headless/index.d.ts.map +1 -0
- package/dist/headless/index.js +87 -0
- package/dist/headless/index.js.map +1 -0
- package/dist/mw_games.global.js +113 -113
- package/dist/mwl/index.d.ts +1 -1
- package/dist/mwl/index.d.ts.map +1 -1
- package/dist/mwl/index.js.map +1 -1
- package/dist/roguelike/Level.d.ts +1 -1
- package/dist/roguelike/Level.d.ts.map +1 -1
- package/dist/roguelike/Level.js +3 -21
- package/dist/roguelike/Level.js.map +1 -1
- package/dist/roguelike/Targeting.d.ts.map +1 -1
- package/dist/roguelike/Targeting.js +2 -1
- package/dist/roguelike/Targeting.js.map +1 -1
- package/dist/rpg/index.d.ts +1 -1
- package/dist/rpg/index.d.ts.map +1 -1
- package/dist/simulation/Training.d.ts +77 -0
- package/dist/simulation/Training.d.ts.map +1 -1
- package/dist/simulation/Training.js +87 -0
- package/dist/simulation/Training.js.map +1 -1
- package/dist/simulation/index.d.ts +2 -2
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +1 -1
- package/dist/simulation/index.js.map +1 -1
- package/dist/two-d/pixi-interop.d.ts +24 -1
- package/dist/two-d/pixi-interop.d.ts.map +1 -1
- package/dist/two-d/pixi-interop.js +23 -1
- package/dist/two-d/pixi-interop.js.map +1 -1
- package/dist/two-d/render/Beam.d.ts +93 -0
- package/dist/two-d/render/Beam.d.ts.map +1 -0
- package/dist/two-d/render/Beam.js +154 -0
- package/dist/two-d/render/Beam.js.map +1 -0
- package/dist/two-d/render/Flights.d.ts +79 -0
- package/dist/two-d/render/Flights.d.ts.map +1 -0
- package/dist/two-d/render/Flights.js +120 -0
- package/dist/two-d/render/Flights.js.map +1 -0
- package/dist/two-d/render/Particles.d.ts +48 -0
- package/dist/two-d/render/Particles.d.ts.map +1 -1
- package/dist/two-d/render/Particles.js +59 -1
- package/dist/two-d/render/Particles.js.map +1 -1
- package/dist/two-d/render/index.d.ts +6 -2
- package/dist/two-d/render/index.d.ts.map +1 -1
- package/dist/two-d/render/index.js +2 -0
- package/dist/two-d/render/index.js.map +1 -1
- package/dist/two-d/ui/MessageLog.d.ts +28 -0
- package/dist/two-d/ui/MessageLog.d.ts.map +1 -1
- package/dist/two-d/ui/MessageLog.js +23 -6
- package/dist/two-d/ui/MessageLog.js.map +1 -1
- package/dist/two-d/ui/TextPrompt.d.ts +115 -0
- package/dist/two-d/ui/TextPrompt.d.ts.map +1 -0
- package/dist/two-d/ui/TextPrompt.js +227 -0
- package/dist/two-d/ui/TextPrompt.js.map +1 -0
- package/dist/two-d/ui/index.d.ts +4 -2
- package/dist/two-d/ui/index.d.ts.map +1 -1
- package/dist/two-d/ui/index.js +2 -1
- package/dist/two-d/ui/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +16 -3
- package/sbom.cdx.json +6 -6
- package/tools/audit-adoptions.d.mts +65 -0
- package/tools/audit-adoptions.mjs +252 -0
- package/tools/browser-driver.d.mts +78 -0
- package/tools/browser-driver.mjs +642 -0
package/dist/core/Grid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../src/core/Grid.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../src/core/Grid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,MAAc,EAAE,CAAS,EAAE,CAAS;IAC7E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,CAAS,EAAE,CAAS;IAC5D,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,KAAa;IACjD,OAAO,KAAK,GAAG,KAAK,CAAC;AACtB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,KAAa;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC3C,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACpB,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,WAAW,CAAC,GAAW;IACtC,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAA6C;IACpE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACP,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAA6C;IACpE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,EAAE,CAAC,CAAC;CACN,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAA6C;IAChE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACR,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CACxB,CAA6C,EAC7C,CAA6C;IAE7C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CACxB,CAA6C,EAC7C,CAA6C;IAE7C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CACxB,CAA6C,EAC7C,CAA6C;IAE7C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AASD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CACvB,MAAsB,EACtB,CAA6C,EAC7C,CAA6C;IAE7C,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,WAAW;YACf,OAAO,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,KAAK,WAAW;YACf,OAAO,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,KAAK,WAAW;YACf,OAAO,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB;YACC,MAAM,IAAI,UAAU,CAAC,4BAA4B,MAAgB,EAAE,CAAC,CAAC;IACvE,CAAC;AACF,CAAC"}
|
|
@@ -22,6 +22,20 @@ export declare function assertSecureUrl(url: string, label: string, allowInsecur
|
|
|
22
22
|
* is aborted after `timeoutMs`. `label` names the concrete client in its own error messages
|
|
23
23
|
* ("feedback endpoint is required", not a generic one that would leave a game guessing which
|
|
24
24
|
* of several clients threw).
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { HttpTransport, type HttpTransportOptions } from '@datamoc/mw_games/core';
|
|
29
|
+
*
|
|
30
|
+
* class ScoreClient extends HttpTransport {
|
|
31
|
+
* constructor(options: HttpTransportOptions) {
|
|
32
|
+
* super(options, 'score');
|
|
33
|
+
* }
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* const client = new ScoreClient({ endpoint: 'https://example.com/scores' });
|
|
37
|
+
* console.log(client instanceof HttpTransport); // true
|
|
38
|
+
* ```
|
|
25
39
|
*/
|
|
26
40
|
export declare abstract class HttpTransport {
|
|
27
41
|
protected readonly endpoint: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpTransport.d.ts","sourceRoot":"","sources":["../../src/core/HttpTransport.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,UAAQ,GAAG,IAAI,CAQvF;AAED
|
|
1
|
+
{"version":3,"file":"HttpTransport.d.ts","sourceRoot":"","sources":["../../src/core/HttpTransport.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,UAAQ,GAAG,IAAI,CAQvF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,8BAAsB,aAAa;IAClC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACpD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,YAAY,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAUvD;IAED,UAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQnF;IAED,uHAAuH;IACvH,UAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B5D;IAED,sCAAsC;IACtC,UAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK3E;CACD"}
|
|
@@ -24,6 +24,20 @@ export function assertSecureUrl(url, label, allowInsecure = false) {
|
|
|
24
24
|
* is aborted after `timeoutMs`. `label` names the concrete client in its own error messages
|
|
25
25
|
* ("feedback endpoint is required", not a generic one that would leave a game guessing which
|
|
26
26
|
* of several clients threw).
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { HttpTransport, type HttpTransportOptions } from '@datamoc/mw_games/core';
|
|
31
|
+
*
|
|
32
|
+
* class ScoreClient extends HttpTransport {
|
|
33
|
+
* constructor(options: HttpTransportOptions) {
|
|
34
|
+
* super(options, 'score');
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* const client = new ScoreClient({ endpoint: 'https://example.com/scores' });
|
|
39
|
+
* console.log(client instanceof HttpTransport); // true
|
|
40
|
+
* ```
|
|
27
41
|
*/
|
|
28
42
|
export class HttpTransport {
|
|
29
43
|
constructor(options, label) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpTransport.js","sourceRoot":"","sources":["../../src/core/HttpTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAYxD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,KAAa,EAAE,aAAa,GAAG,KAAK;IAChF,IAAI,aAAa,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO;IAC/D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO;IACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO;IAC3G,MAAM,IAAI,KAAK,CACd,GAAG,KAAK,qCAAqC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,0CAA0C,CACtH,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"HttpTransport.js","sourceRoot":"","sources":["../../src/core/HttpTransport.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Random.d.ts
CHANGED
|
@@ -60,6 +60,56 @@ export declare class Generator {
|
|
|
60
60
|
setState(state: readonly [number, number, number, number]): void;
|
|
61
61
|
private rotl;
|
|
62
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* The minimal draw surface the derived helpers (`chance`, `element`, `weighted`,
|
|
65
|
+
* `weightedKey`, `shuffle`, `int`, `range`, `normalRange`) need. `Generator` and
|
|
66
|
+
* `MersenneTwister` both satisfy it structurally, so a rule dispatched by a simulation
|
|
67
|
+
* runtime can pass its own injected, snapshot-able stream instead of touching the
|
|
68
|
+
* ambient one - the ambient stream stays the default when no source is given, and the
|
|
69
|
+
* null-reporting conventions are identical either way.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* import { Generator, Random } from '@datamoc/mw_games/core';
|
|
74
|
+
*
|
|
75
|
+
* // a journaled rule draws from its own stream, never the ambient one
|
|
76
|
+
* const stream = new Generator(99);
|
|
77
|
+
* const pick = Random.weightedKey(new Map([['a', 1], ['b', 2]]), stream);
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
/**
|
|
81
|
+
* The minimal draw surface for the helpers that draw floats only (`float`, `chance`,
|
|
82
|
+
* `weighted`, `weightedKey`). A rule whose draws are floats-only implements just this -
|
|
83
|
+
* no dead `int` member that must never be called.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* import { Random } from '@datamoc/mw_games/core';
|
|
88
|
+
* import type { FloatSource } from '@datamoc/mw_games/core';
|
|
89
|
+
*
|
|
90
|
+
* // a scripted float-only stream: every draw is data, no integer path exists
|
|
91
|
+
* const scripted: FloatSource = { float: () => 0.25 };
|
|
92
|
+
* const hit = Random.chance(0.5, scripted);
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export interface FloatSource {
|
|
96
|
+
/** a float in [0, 1) */
|
|
97
|
+
float(): number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The minimal draw surface for the helpers that may draw integers (`int`, `range`,
|
|
101
|
+
* `normalRange`, `element`, `shuffle`) as well as floats. `Generator` and
|
|
102
|
+
* `MersenneTwister` both satisfy it structurally.
|
|
103
|
+
*
|
|
104
|
+
* `element` stays on this wider type even though it only picks one item: it draws
|
|
105
|
+
* through `int()`, and re-spelling that draw with `float()` would change its stream
|
|
106
|
+
* (and break seeded replays that use it), so a float-only source is rejected here
|
|
107
|
+
* rather than silently re-drawn.
|
|
108
|
+
*/
|
|
109
|
+
export interface RandomSource extends FloatSource {
|
|
110
|
+
/** an integer in [0, bound), without modulo bias */
|
|
111
|
+
int(bound: number): number;
|
|
112
|
+
}
|
|
63
113
|
/**
|
|
64
114
|
* The generator the free functions (`int`, `float`, `chance`, ...) draw from.
|
|
65
115
|
*
|
|
@@ -85,18 +135,18 @@ export declare function pop(): void;
|
|
|
85
135
|
export declare function withSeed<T>(seed: number, body: () => T): T;
|
|
86
136
|
export declare function reset(): void;
|
|
87
137
|
/** a float in [0, 1), or [0, max), or [min, max) */
|
|
88
|
-
export declare function float(min?: number, max?: number): number;
|
|
138
|
+
export declare function float(min?: number, max?: number, source?: FloatSource): number;
|
|
89
139
|
/** an integer in [0, max), or [min, max) */
|
|
90
|
-
export declare function int(min: number, max?: number): number;
|
|
140
|
+
export declare function int(min: number, max?: number, source?: RandomSource): number;
|
|
91
141
|
/** an integer in [min, max], both ends included (the usual shape for dice) */
|
|
92
|
-
export declare function range(min: number, max: number): number;
|
|
142
|
+
export declare function range(min: number, max: number, source?: RandomSource): number;
|
|
93
143
|
/**
|
|
94
144
|
* A triangular distribution over [min, max], peaking in the middle.
|
|
95
145
|
*
|
|
96
146
|
* Useful wherever a uniform roll feels wrong: damage, room sizes, item quality.
|
|
97
147
|
*/
|
|
98
|
-
export declare function normalRange(min: number, max: number): number;
|
|
99
|
-
export declare function chance(probability: number): boolean;
|
|
148
|
+
export declare function normalRange(min: number, max: number, source?: RandomSource): number;
|
|
149
|
+
export declare function chance(probability: number, source?: FloatSource): boolean;
|
|
100
150
|
/**
|
|
101
151
|
* Every "pick one" function here reports "there was nothing to pick" as `null`, never as
|
|
102
152
|
* `-1` or `undefined`.
|
|
@@ -105,14 +155,14 @@ export declare function chance(probability: number): boolean;
|
|
|
105
155
|
* which meant one call chain carried three different spellings of the same outcome and two
|
|
106
156
|
* separate hand-written translations between them. One sentinel, checked one way.
|
|
107
157
|
*/
|
|
108
|
-
/** a random element, or `null` for an empty list */
|
|
109
|
-
export declare function element<T>(items: readonly T[]): T | null;
|
|
110
|
-
/** an index into `weights` drawn in proportion to its weight, or `null` if nothing has any */
|
|
111
|
-
export declare function weighted(weights: readonly number[]): number | null;
|
|
112
|
-
/** a key from `weights`, drawn in proportion to the value it maps to, or `null` if none has any */
|
|
113
|
-
export declare function weightedKey<K>(weights: ReadonlyMap<K, number
|
|
114
|
-
/** Fisher-Yates, in place */
|
|
115
|
-
export declare function shuffle<T>(items: T[]): T[];
|
|
158
|
+
/** a random element, or `null` for an empty list; draws from `source` when given */
|
|
159
|
+
export declare function element<T>(items: readonly T[], source?: RandomSource): T | null;
|
|
160
|
+
/** an index into `weights` drawn in proportion to its weight, or `null` if nothing has any; draws from `source` when given */
|
|
161
|
+
export declare function weighted(weights: readonly number[], source?: FloatSource): number | null;
|
|
162
|
+
/** a key from `weights`, drawn in proportion to the value it maps to, or `null` if none has any; draws from `source` when given */
|
|
163
|
+
export declare function weightedKey<K>(weights: ReadonlyMap<K, number>, source?: FloatSource): K | null;
|
|
164
|
+
/** Fisher-Yates, in place; draws from `source` when given */
|
|
165
|
+
export declare function shuffle<T>(items: T[], source?: RandomSource): T[];
|
|
116
166
|
/** the engine state a `MersenneTwister` save or a named stream resumes from */
|
|
117
167
|
export interface MersenneTwisterState {
|
|
118
168
|
/** the value `seed()` was last given */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../../src/core/Random.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;;;;GAYG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,EAAE,CAAK;IAEf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,IAAI,CAAC,EAAE,MAAM,EAsBxB;IAED,yEAAyE;IACzE,UAAU,IAAI,MAAM,CAanB;IAED,oDAAoD;IACpD,KAAK,IAAI,MAAM,CAEd;IAED;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASzB;IAED,8EAA8E;IAC9E,QAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAE3C;IAED,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAE/D;IAED,OAAO,CAAC,IAAI;CAGZ;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,IAAI,SAAS,CAElC;AAED,iEAAiE;AACjE,wBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAI7C;AAED,wBAAgB,GAAG,IAAI,IAAI,CAK1B;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAO1D;AAED,wBAAgB,KAAK,IAAI,IAAI,CAG5B;AAED,oDAAoD;AACpD,wBAAgB,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../../src/core/Random.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Random.js
CHANGED
|
@@ -156,33 +156,36 @@ export function reset() {
|
|
|
156
156
|
stack.push(new Generator());
|
|
157
157
|
}
|
|
158
158
|
/** a float in [0, 1), or [0, max), or [min, max) */
|
|
159
|
-
export function float(min, max) {
|
|
159
|
+
export function float(min, max, source) {
|
|
160
|
+
const draw = source ?? current();
|
|
160
161
|
if (min === undefined)
|
|
161
|
-
return
|
|
162
|
+
return draw.float();
|
|
162
163
|
if (max === undefined)
|
|
163
|
-
return
|
|
164
|
-
return min +
|
|
164
|
+
return draw.float() * min;
|
|
165
|
+
return min + draw.float() * (max - min);
|
|
165
166
|
}
|
|
166
167
|
/** an integer in [0, max), or [min, max) */
|
|
167
|
-
export function int(min, max) {
|
|
168
|
+
export function int(min, max, source) {
|
|
169
|
+
const draw = source ?? current();
|
|
168
170
|
if (max === undefined)
|
|
169
|
-
return
|
|
170
|
-
return min +
|
|
171
|
+
return draw.int(min);
|
|
172
|
+
return min + draw.int(max - min);
|
|
171
173
|
}
|
|
172
174
|
/** an integer in [min, max], both ends included (the usual shape for dice) */
|
|
173
|
-
export function range(min, max) {
|
|
174
|
-
return min + current().int(max - min + 1);
|
|
175
|
+
export function range(min, max, source) {
|
|
176
|
+
return min + (source ?? current()).int(max - min + 1);
|
|
175
177
|
}
|
|
176
178
|
/**
|
|
177
179
|
* A triangular distribution over [min, max], peaking in the middle.
|
|
178
180
|
*
|
|
179
181
|
* Useful wherever a uniform roll feels wrong: damage, room sizes, item quality.
|
|
180
182
|
*/
|
|
181
|
-
export function normalRange(min, max) {
|
|
182
|
-
|
|
183
|
+
export function normalRange(min, max, source) {
|
|
184
|
+
const draw = source ?? current();
|
|
185
|
+
return min + Math.floor(((draw.float() + draw.float()) * (max - min + 1)) / 2);
|
|
183
186
|
}
|
|
184
|
-
export function chance(probability) {
|
|
185
|
-
return current().float() < probability;
|
|
187
|
+
export function chance(probability, source) {
|
|
188
|
+
return (source ?? current()).float() < probability;
|
|
186
189
|
}
|
|
187
190
|
/**
|
|
188
191
|
* Every "pick one" function here reports "there was nothing to pick" as `null`, never as
|
|
@@ -192,18 +195,18 @@ export function chance(probability) {
|
|
|
192
195
|
* which meant one call chain carried three different spellings of the same outcome and two
|
|
193
196
|
* separate hand-written translations between them. One sentinel, checked one way.
|
|
194
197
|
*/
|
|
195
|
-
/** a random element, or `null` for an empty list */
|
|
196
|
-
export function element(items) {
|
|
197
|
-
return items.length > 0 ? items[current().int(items.length)] : null;
|
|
198
|
+
/** a random element, or `null` for an empty list; draws from `source` when given */
|
|
199
|
+
export function element(items, source) {
|
|
200
|
+
return items.length > 0 ? items[(source ?? current()).int(items.length)] : null;
|
|
198
201
|
}
|
|
199
|
-
/** an index into `weights` drawn in proportion to its weight, or `null` if nothing has any */
|
|
200
|
-
export function weighted(weights) {
|
|
202
|
+
/** an index into `weights` drawn in proportion to its weight, or `null` if nothing has any; draws from `source` when given */
|
|
203
|
+
export function weighted(weights, source) {
|
|
201
204
|
let total = 0;
|
|
202
205
|
for (const w of weights)
|
|
203
206
|
total += w;
|
|
204
207
|
if (total <= 0)
|
|
205
208
|
return null;
|
|
206
|
-
let value = current().float() * total;
|
|
209
|
+
let value = (source ?? current()).float() * total;
|
|
207
210
|
for (let i = 0; i < weights.length; i++) {
|
|
208
211
|
value -= weights[i];
|
|
209
212
|
if (value < 0)
|
|
@@ -211,16 +214,16 @@ export function weighted(weights) {
|
|
|
211
214
|
}
|
|
212
215
|
return weights.length - 1;
|
|
213
216
|
}
|
|
214
|
-
/** a key from `weights`, drawn in proportion to the value it maps to, or `null` if none has any */
|
|
215
|
-
export function weightedKey(weights) {
|
|
217
|
+
/** a key from `weights`, drawn in proportion to the value it maps to, or `null` if none has any; draws from `source` when given */
|
|
218
|
+
export function weightedKey(weights, source) {
|
|
216
219
|
const keys = [...weights.keys()];
|
|
217
|
-
const index = weighted(keys.map((k) => weights.get(k) ?? 0));
|
|
220
|
+
const index = weighted(keys.map((k) => weights.get(k) ?? 0), source);
|
|
218
221
|
return index === null ? null : keys[index];
|
|
219
222
|
}
|
|
220
|
-
/** Fisher-Yates, in place */
|
|
221
|
-
export function shuffle(items) {
|
|
223
|
+
/** Fisher-Yates, in place; draws from `source` when given */
|
|
224
|
+
export function shuffle(items, source) {
|
|
222
225
|
for (let i = items.length - 1; i > 0; i--) {
|
|
223
|
-
const j = current().int(i + 1);
|
|
226
|
+
const j = (source ?? current()).int(i + 1);
|
|
224
227
|
[items[i], items[j]] = [items[j], items[i]];
|
|
225
228
|
}
|
|
226
229
|
return items;
|
package/dist/core/Random.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Random.js","sourceRoot":"","sources":["../../src/core/Random.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Random.js","sourceRoot":"","sources":["../../src/core/Random.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Replay.d.ts
CHANGED
|
@@ -22,7 +22,9 @@ export interface ReplayEvent {
|
|
|
22
22
|
* ```
|
|
23
23
|
*
|
|
24
24
|
* The signals are parameters rather than imports so tests can drive a
|
|
25
|
-
* recorder with plain `Signal` instances instead of a whole `Game`.
|
|
25
|
+
* recorder with plain `Signal` instances instead of a whole `Game`. A restored
|
|
26
|
+
* run continues its recording mid-run: pass the checkpoint's frame as `fromFrame`
|
|
27
|
+
* and new actions stamp from there, never from zero.
|
|
26
28
|
*
|
|
27
29
|
* @example
|
|
28
30
|
* ```ts
|
|
@@ -40,14 +42,19 @@ export interface ReplayEvent {
|
|
|
40
42
|
* ```
|
|
41
43
|
*/
|
|
42
44
|
export declare class Recorder {
|
|
43
|
-
private
|
|
45
|
+
private frameStamp;
|
|
46
|
+
private readonly fromFrame;
|
|
44
47
|
private readonly recorded;
|
|
45
48
|
private readonly actions;
|
|
46
49
|
private readonly frames;
|
|
47
50
|
private readonly onAction;
|
|
48
51
|
private readonly onFrame;
|
|
49
|
-
constructor(actions: Signal<string>, frames: Signal<number
|
|
52
|
+
constructor(actions: Signal<string>, frames: Signal<number>, options?: {
|
|
53
|
+
fromFrame?: number;
|
|
54
|
+
});
|
|
50
55
|
get events(): readonly ReplayEvent[];
|
|
56
|
+
/** The frame count the recording is currently stamped with, so a run can be checkpointed. */
|
|
57
|
+
get frame(): number;
|
|
51
58
|
/** A deep copy, safe to serialise or hand to a `Player`. */
|
|
52
59
|
toJSON(): ReplayEvent[];
|
|
53
60
|
/** Detaches both listeners; safe to call twice. */
|
|
@@ -85,11 +92,14 @@ export declare class Recorder {
|
|
|
85
92
|
export declare class Player {
|
|
86
93
|
private frame;
|
|
87
94
|
private index;
|
|
95
|
+
private readonly fromFrame;
|
|
88
96
|
private readonly events;
|
|
89
97
|
private readonly dispatch;
|
|
90
98
|
private readonly frames;
|
|
91
99
|
private readonly onFrame;
|
|
92
|
-
constructor(events: readonly ReplayEvent[], dispatch: (action: string) => void, frames: Signal<number
|
|
100
|
+
constructor(events: readonly ReplayEvent[], dispatch: (action: string) => void, frames: Signal<number>, options?: {
|
|
101
|
+
fromFrame?: number;
|
|
102
|
+
});
|
|
93
103
|
/** True once every event has been dispatched. */
|
|
94
104
|
get done(): boolean;
|
|
95
105
|
/** Detaches the frame listener; safe to call twice. */
|
|
@@ -99,4 +109,18 @@ export declare class Player {
|
|
|
99
109
|
export declare function serializeReplay(events: readonly ReplayEvent[]): string;
|
|
100
110
|
/** Parses what `serializeReplay` wrote, rejecting anything else. */
|
|
101
111
|
export declare function deserializeReplay(json: string): ReplayEvent[];
|
|
112
|
+
/**
|
|
113
|
+
* Validates an already-parsed replay - the same `{ frame, action }` checks `deserializeReplay`
|
|
114
|
+
* applies, for the callers that hold parsed JSON rather than a string: a replay-file envelope
|
|
115
|
+
* nests its events as an array, and re-stringifying them to parse them again would be the only
|
|
116
|
+
* reason this half could not exist.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```ts
|
|
120
|
+
* import { parseReplayEvents } from '@datamoc/mw_games/core';
|
|
121
|
+
*
|
|
122
|
+
* const events = parseReplayEvents([{ frame: 3, action: 'confirm' }]);
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export declare function parseReplayEvents(parsed: unknown): ReplayEvent[];
|
|
102
126
|
//# sourceMappingURL=Replay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Replay.d.ts","sourceRoot":"","sources":["../../src/core/Replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED
|
|
1
|
+
{"version":3,"file":"Replay.d.ts","sourceRoot":"","sources":["../../src/core/Replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,QAAQ;IACpB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IAErC,YAAY,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAgB5F;IAED,IAAI,MAAM,IAAI,SAAS,WAAW,EAAE,CAEnC;IAED,6FAA6F;IAC7F,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,4DAA4D;IAC5D,MAAM,IAAI,WAAW,EAAE,CAEtB;IAED,mDAAmD;IACnD,IAAI,IAAI,IAAI,CAGX;CACD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,MAAM;IAClB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IAErC,YACC,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAClC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EACtB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAahC;IAED,iDAAiD;IACjD,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,uDAAuD;IACvD,IAAI,IAAI,IAAI,CAEX;IAED,OAAO,CAAC,IAAI;CAOZ;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAEtE;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAE7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,EAAE,CAchE"}
|
package/dist/core/Replay.js
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
* ```
|
|
11
11
|
*
|
|
12
12
|
* The signals are parameters rather than imports so tests can drive a
|
|
13
|
-
* recorder with plain `Signal` instances instead of a whole `Game`.
|
|
13
|
+
* recorder with plain `Signal` instances instead of a whole `Game`. A restored
|
|
14
|
+
* run continues its recording mid-run: pass the checkpoint's frame as `fromFrame`
|
|
15
|
+
* and new actions stamp from there, never from zero.
|
|
14
16
|
*
|
|
15
17
|
* @example
|
|
16
18
|
* ```ts
|
|
@@ -28,17 +30,20 @@
|
|
|
28
30
|
* ```
|
|
29
31
|
*/
|
|
30
32
|
export class Recorder {
|
|
31
|
-
constructor(actions, frames) {
|
|
32
|
-
this.frame = 0;
|
|
33
|
+
constructor(actions, frames, options) {
|
|
33
34
|
this.recorded = [];
|
|
35
|
+
this.fromFrame = options?.fromFrame ?? 0;
|
|
36
|
+
if (!Number.isInteger(this.fromFrame) || this.fromFrame < 0)
|
|
37
|
+
throw new RangeError('a resumed recorder needs a non-negative fromFrame');
|
|
38
|
+
this.frameStamp = this.fromFrame;
|
|
34
39
|
this.actions = actions;
|
|
35
40
|
this.frames = frames;
|
|
36
41
|
//returns void, never true: recording must not swallow the action
|
|
37
42
|
this.onAction = (action) => {
|
|
38
|
-
this.recorded.push({ frame: this.
|
|
43
|
+
this.recorded.push({ frame: this.frameStamp, action });
|
|
39
44
|
};
|
|
40
45
|
this.onFrame = () => {
|
|
41
|
-
this.
|
|
46
|
+
this.frameStamp++;
|
|
42
47
|
};
|
|
43
48
|
actions.add(this.onAction);
|
|
44
49
|
frames.add(this.onFrame);
|
|
@@ -46,6 +51,10 @@ export class Recorder {
|
|
|
46
51
|
get events() {
|
|
47
52
|
return this.recorded;
|
|
48
53
|
}
|
|
54
|
+
/** The frame count the recording is currently stamped with, so a run can be checkpointed. */
|
|
55
|
+
get frame() {
|
|
56
|
+
return this.frameStamp;
|
|
57
|
+
}
|
|
49
58
|
/** A deep copy, safe to serialise or hand to a `Player`. */
|
|
50
59
|
toJSON() {
|
|
51
60
|
return this.recorded.map((e) => ({ frame: e.frame, action: e.action }));
|
|
@@ -86,12 +95,17 @@ export class Recorder {
|
|
|
86
95
|
* ```
|
|
87
96
|
*/
|
|
88
97
|
export class Player {
|
|
89
|
-
constructor(events, dispatch, frames) {
|
|
90
|
-
this.frame = 0;
|
|
91
|
-
this.index = 0;
|
|
98
|
+
constructor(events, dispatch, frames, options) {
|
|
92
99
|
this.events = events;
|
|
93
100
|
this.dispatch = dispatch;
|
|
94
101
|
this.frames = frames;
|
|
102
|
+
this.fromFrame = options?.fromFrame ?? 0;
|
|
103
|
+
if (!Number.isInteger(this.fromFrame) || this.fromFrame < 0)
|
|
104
|
+
throw new RangeError('a resumed player needs a non-negative fromFrame');
|
|
105
|
+
this.index = this.events.findIndex((event) => event.frame >= this.fromFrame);
|
|
106
|
+
if (this.index < 0)
|
|
107
|
+
this.index = this.events.length;
|
|
108
|
+
this.frame = this.fromFrame;
|
|
95
109
|
this.onFrame = () => this.pump();
|
|
96
110
|
frames.add(this.onFrame);
|
|
97
111
|
}
|
|
@@ -116,7 +130,22 @@ export function serializeReplay(events) {
|
|
|
116
130
|
}
|
|
117
131
|
/** Parses what `serializeReplay` wrote, rejecting anything else. */
|
|
118
132
|
export function deserializeReplay(json) {
|
|
119
|
-
|
|
133
|
+
return parseReplayEvents(JSON.parse(json));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Validates an already-parsed replay - the same `{ frame, action }` checks `deserializeReplay`
|
|
137
|
+
* applies, for the callers that hold parsed JSON rather than a string: a replay-file envelope
|
|
138
|
+
* nests its events as an array, and re-stringifying them to parse them again would be the only
|
|
139
|
+
* reason this half could not exist.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* import { parseReplayEvents } from '@datamoc/mw_games/core';
|
|
144
|
+
*
|
|
145
|
+
* const events = parseReplayEvents([{ frame: 3, action: 'confirm' }]);
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export function parseReplayEvents(parsed) {
|
|
120
149
|
if (!Array.isArray(parsed))
|
|
121
150
|
throw new Error('a replay must be an array of {frame, action}');
|
|
122
151
|
return parsed.map((entry) => {
|
package/dist/core/Replay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Replay.js","sourceRoot":"","sources":["../../src/core/Replay.ts"],"names":[],"mappings":"AAcA
|
|
1
|
+
{"version":3,"file":"Replay.js","sourceRoot":"","sources":["../../src/core/Replay.ts"],"names":[],"mappings":"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"}
|