@datamoc/mw_games 0.24.1 → 0.26.1
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 +140 -0
- package/README.md +15 -0
- package/api-surface.json +14468 -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/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/Handles.d.ts +42 -0
- package/dist/core/Handles.d.ts.map +1 -0
- package/dist/core/Handles.js +38 -0
- package/dist/core/Handles.js.map +1 -0
- 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 +54 -13
- package/dist/core/Random.d.ts.map +1 -1
- package/dist/core/Random.js +48 -25
- package/dist/core/Random.js.map +1 -1
- package/dist/core/index.d.ts +8 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -1
- 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 -112
- package/dist/mwl/catalog.d.ts +13 -2
- package/dist/mwl/catalog.d.ts.map +1 -1
- package/dist/mwl/catalog.js +14 -5
- package/dist/mwl/catalog.js.map +1 -1
- package/dist/mwl/index.d.ts +3 -1
- package/dist/mwl/index.d.ts.map +1 -1
- package/dist/mwl/index.js +1 -0
- package/dist/mwl/index.js.map +1 -1
- package/dist/mwl/tables.d.ts +93 -0
- package/dist/mwl/tables.d.ts.map +1 -0
- package/dist/mwl/tables.js +87 -0
- package/dist/mwl/tables.js.map +1 -0
- 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/Runtime.d.ts +18 -2
- package/dist/simulation/Runtime.d.ts.map +1 -1
- package/dist/simulation/Runtime.js +7 -3
- package/dist/simulation/Runtime.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/index.d.ts +2 -2
- package/dist/two-d/render/index.d.ts.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
|
@@ -32,15 +32,13 @@ export interface StatBlockOptions {
|
|
|
32
32
|
derived?: DerivedStat[];
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
* Resolves one stat's modifiers into a single number
|
|
35
|
+
* Resolves one stat's modifiers into a single number, in the framework's
|
|
36
|
+
* canonical add, multiply, then set composition.
|
|
36
37
|
*
|
|
37
38
|
* Every `add` modifier applies first (summed together), then every `multiply` (each
|
|
38
39
|
* scaling the running total), then every `set` (the last one wins) - a stated, fixed order,
|
|
39
40
|
* so a +10% ring and a cursed -2 sword combine the same way regardless of equip order, and
|
|
40
41
|
* a `set` modifier (a polymorph, a stat drained to exactly zero) always wins over the rest.
|
|
41
|
-
*/
|
|
42
|
-
/**
|
|
43
|
-
* Apply the framework's canonical add, multiply, then set composition.
|
|
44
42
|
*
|
|
45
43
|
* @example
|
|
46
44
|
* ```ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatBlock.d.ts","sourceRoot":"","sources":["../../src/actors/StatBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED
|
|
1
|
+
{"version":3,"file":"StatBlock.d.ts","sourceRoot":"","sources":["../../src/actors/StatBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,CASrF;AAED,qBAAa,SAAS;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CAAsB;IAEnC,YAAY,OAAO,EAAE,gBAAgB,EAGpC;IAED,uEAAuE;IACvE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzB;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGzC;IAED,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAGpC;IAED,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAIvC;IAED,qFAAqF;IACrF,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAGzC;IAED,wFAAwF;IACxF,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExB;IAED,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,YAAY;IAIpB;;;;;;;;;OASG;IACH,MAAM,IAAI;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,CAExB;IAED,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,GAAG,SAAS,CAO3E;CACD"}
|
package/dist/actors/StatBlock.js
CHANGED
|
@@ -8,15 +8,13 @@
|
|
|
8
8
|
* modifiers are active, in a stated order, and keeps it correct as either side changes.
|
|
9
9
|
*/
|
|
10
10
|
/**
|
|
11
|
-
* Resolves one stat's modifiers into a single number
|
|
11
|
+
* Resolves one stat's modifiers into a single number, in the framework's
|
|
12
|
+
* canonical add, multiply, then set composition.
|
|
12
13
|
*
|
|
13
14
|
* Every `add` modifier applies first (summed together), then every `multiply` (each
|
|
14
15
|
* scaling the running total), then every `set` (the last one wins) - a stated, fixed order,
|
|
15
16
|
* so a +10% ring and a cursed -2 sword combine the same way regardless of equip order, and
|
|
16
17
|
* a `set` modifier (a polymorph, a stat drained to exactly zero) always wins over the rest.
|
|
17
|
-
*/
|
|
18
|
-
/**
|
|
19
|
-
* Apply the framework's canonical add, multiply, then set composition.
|
|
20
18
|
*
|
|
21
19
|
* @example
|
|
22
20
|
* ```ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatBlock.js","sourceRoot":"","sources":["../../src/actors/StatBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiCH
|
|
1
|
+
{"version":3,"file":"StatBlock.js","sourceRoot":"","sources":["../../src/actors/StatBlock.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/Heuristics.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface AspectValues {
|
|
|
10
10
|
* wants, and a difficulty level overrides a few of them.
|
|
11
11
|
*
|
|
12
12
|
* Typed readers give a stage a usable number without every caller casting: a missing aspect reads
|
|
13
|
-
* as the fallback (`1` for a weight,
|
|
13
|
+
* as the fallback the caller passes (`1` for a neutral weight, `0` where an unset aspect should zero the score).
|
|
14
14
|
*
|
|
15
15
|
* @example
|
|
16
16
|
* ```ts
|
package/dist/ai/Heuristics.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* wants, and a difficulty level overrides a few of them.
|
|
6
6
|
*
|
|
7
7
|
* Typed readers give a stage a usable number without every caller casting: a missing aspect reads
|
|
8
|
-
* as the fallback (`1` for a weight,
|
|
8
|
+
* as the fallback the caller passes (`1` for a neutral weight, `0` where an unset aspect should zero the score).
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```ts
|
package/dist/assets/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
export { setBase, setAssetMap, isCompiled, paths, has, resolve } from './paths.ts';
|
|
14
14
|
export type { AssetProgress } from './paths.ts';
|
|
15
15
|
export { load, texture, get, isLoaded, release } from './loader.ts';
|
|
16
|
+
export type { LoadAssetsOptions } from './loader.ts';
|
|
16
17
|
export { loadBinary, getBinary, isBinaryLoaded, releaseBinary } from './binary.ts';
|
|
17
18
|
export type { LoadBinaryOptions } from './binary.ts';
|
|
18
19
|
export { AssetStream } from './Streaming.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/assets/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGnF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGnF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGnF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/core/Blob.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Blob.d.ts","sourceRoot":"","sources":["../../src/core/Blob.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Blob.d.ts","sourceRoot":"","sources":["../../src/core/Blob.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,qBAAa,IAAI;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,MAAM,CAAe;IAE7B,YAAY,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAIxC;IAED,mEAAmE;IACnE,OAAO,CAAC,KAAK;IAKb,4DAA4D;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrC;IAED,iFAAiF;IACjF,KAAK,IAAI,MAAM,CAId;IAED,2EAA2E;IAC3E,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG/C;IAED,yFAAyF;IACzF,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAGhC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,SAAO,EAAE,KAAK,SAAM,GAAG,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAsC3G;IAED,qFAAqF;IACrF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAS3E;IAED,MAAM,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAE5D;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAI/E;CACD"}
|
package/dist/core/Blob.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NEIGHBOURS4 } from './Grid.js';
|
|
1
2
|
/**
|
|
2
3
|
* A spreading volume field over a grid: a number per cell that creeps into its open
|
|
3
4
|
* neighbours and thins out over time. Fire, gas, caustic ooze, flood water - anything
|
|
@@ -29,13 +30,6 @@
|
|
|
29
30
|
* fire.clear(5, 5); // someone douses that one tile
|
|
30
31
|
* ```
|
|
31
32
|
*/
|
|
32
|
-
/** the four axial neighbours of a cell, same order as `roguelike`'s square topology */
|
|
33
|
-
const OFFSET_4 = [
|
|
34
|
-
[0, -1],
|
|
35
|
-
[1, 0],
|
|
36
|
-
[0, 1],
|
|
37
|
-
[-1, 0],
|
|
38
|
-
];
|
|
39
33
|
export class Blob {
|
|
40
34
|
constructor(width, height) {
|
|
41
35
|
this.width = width;
|
|
@@ -92,7 +86,7 @@ export class Blob {
|
|
|
92
86
|
if (amount <= 0)
|
|
93
87
|
continue;
|
|
94
88
|
const neighbours = [];
|
|
95
|
-
for (const [dx, dy] of
|
|
89
|
+
for (const [dx, dy] of NEIGHBOURS4) {
|
|
96
90
|
const nx = x + dx;
|
|
97
91
|
const ny = y + dy;
|
|
98
92
|
const i = this.index(nx, ny);
|
package/dist/core/Blob.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Blob.js","sourceRoot":"","sources":["../../src/core/Blob.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Blob.js","sourceRoot":"","sources":["../../src/core/Blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,OAAO,IAAI;IAMhB,YAAY,KAAa,EAAE,MAAc;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,mEAAmE;IAC3D,KAAK,CAAC,CAAS,EAAE,CAAS;QACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,4DAA4D;IAC5D,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,iFAAiF;IACjF,KAAK;QACJ,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,2EAA2E;IAC3E,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IACtC,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,CAAS,EAAE,CAAS;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAuC,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,GAAG,GAAG;QACzE,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,MAAM,IAAI,CAAC;oBAAE,SAAS;gBAE1B,MAAM,UAAU,GAAa,EAAE,CAAC;gBAChC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;oBACpC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;wBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChD,CAAC;gBAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACP,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;oBACpD,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;oBACjD,KAAK,MAAM,IAAI,IAAI,UAAU;wBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;gBACpD,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,OAAO,GAAoC,EAAE,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAC7B,uEAAuE;YACvE,MAAM,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACvC,IAAI,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,qFAAqF;IACrF,UAAU,CAAC,OAAe;QACzB,MAAM,GAAG,GAAoD,EAAE,CAAC;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAI,MAAM,IAAI,OAAO;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,CAAC;QACF,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAyD;QACxE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
|
package/dist/core/Grid.d.ts
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* @example
|
|
17
17
|
* ```ts
|
|
18
18
|
* import { cellInside, cellIndex, cellX, cellY, cellKey, cellFromKey } from '@datamoc/mw_games/core';
|
|
19
|
+
* import { NEIGHBOURS4, NEIGHBOURS8, CIRCLE8, euclidean } from '@datamoc/mw_games/core';
|
|
19
20
|
*
|
|
20
21
|
* // a 4x3 board, row-major: y * width + x
|
|
21
22
|
* cellInside(4, 3, 3, 2); // true, the far corner
|
|
@@ -26,6 +27,11 @@
|
|
|
26
27
|
*
|
|
27
28
|
* const seen = new Set([cellKey(2, 1)]); // '2,1', for a Map or a Set
|
|
28
29
|
* cellFromKey('2,1'); // { x: 2, y: 1 }
|
|
30
|
+
*
|
|
31
|
+
* NEIGHBOURS8.length; // 8, the surrounding cells in row-major order
|
|
32
|
+
* CIRCLE8[0]; // [0, -1], the same ring clockwise from north
|
|
33
|
+
* NEIGHBOURS4.length; // 4, north/east/south/west
|
|
34
|
+
* euclidean({ x: 0, y: 0 }, { x: 3, y: 4 }); // 5
|
|
29
35
|
* ```
|
|
30
36
|
*/
|
|
31
37
|
/**
|
|
@@ -61,4 +67,113 @@ export declare function cellFromKey(key: string): {
|
|
|
61
67
|
x: number;
|
|
62
68
|
y: number;
|
|
63
69
|
} | null;
|
|
70
|
+
/**
|
|
71
|
+
* The four axial neighbours of a cell: north, east, south, west, in that order.
|
|
72
|
+
*
|
|
73
|
+
* One frozen table shared by every square-grid algorithm, so a flood fill and a
|
|
74
|
+
* diffusion field visit neighbours in the same sequence without each keeping its
|
|
75
|
+
* own copy: `roguelike`'s `neighbourOffsets(4)` returns this same table.
|
|
76
|
+
*/
|
|
77
|
+
export declare const NEIGHBOURS4: ReadonlyArray<readonly [number, number]>;
|
|
78
|
+
/**
|
|
79
|
+
* The eight cells surrounding a cell, in row-major (reading) order, centre skipped.
|
|
80
|
+
*
|
|
81
|
+
* The same eight cells `CIRCLE8` carries, only the visit order differs: reading order
|
|
82
|
+
* suits first-found-wins scans, the ring suits directional work like knockback cursors.
|
|
83
|
+
*/
|
|
84
|
+
export declare const NEIGHBOURS8: ReadonlyArray<readonly [number, number]>;
|
|
85
|
+
/**
|
|
86
|
+
* The eight cells surrounding a cell as a clockwise ring starting north.
|
|
87
|
+
*
|
|
88
|
+
* The same sequence `roguelike`'s `neighbourOffsets(8)` has always returned, now shared
|
|
89
|
+
* from here instead of copied there.
|
|
90
|
+
*/
|
|
91
|
+
export declare const CIRCLE8: ReadonlyArray<readonly [number, number]>;
|
|
92
|
+
/**
|
|
93
|
+
* Euclidean ruler distance between two cells.
|
|
94
|
+
*
|
|
95
|
+
* The counterpart to `roguelike`'s `chebyshevDistance`, which charges a diagonal the
|
|
96
|
+
* same as a step: use this one when the true straight-line distance matters (blast
|
|
97
|
+
* falloff, census radius) and that one for roguelike range and movement.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* import { euclidean } from '@datamoc/mw_games/core';
|
|
102
|
+
*
|
|
103
|
+
* euclidean({ x: 0, y: 0 }, { x: 3, y: 4 }); // 5
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare function euclidean(a: {
|
|
107
|
+
readonly x: number;
|
|
108
|
+
readonly y: number;
|
|
109
|
+
}, b: {
|
|
110
|
+
readonly x: number;
|
|
111
|
+
readonly y: number;
|
|
112
|
+
}): number;
|
|
113
|
+
/**
|
|
114
|
+
* Chebyshev ruler distance between two cells: the king-move count, a diagonal costing one step.
|
|
115
|
+
*
|
|
116
|
+
* The counterpart to `euclidean` above for grid movement and range, where a diagonal is a
|
|
117
|
+
* single step rather than 1.41 cells; `roguelike`
|
|
118
|
+
* `chebyshevDistance` is this same arithmetic through its own `Step` type.
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```ts
|
|
122
|
+
* import { chebyshev } from '@datamoc/mw_games/core';
|
|
123
|
+
*
|
|
124
|
+
* chebyshev({ x: 0, y: 0 }, { x: 3, y: 4 }); // 4
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export declare function chebyshev(a: {
|
|
128
|
+
readonly x: number;
|
|
129
|
+
readonly y: number;
|
|
130
|
+
}, b: {
|
|
131
|
+
readonly x: number;
|
|
132
|
+
readonly y: number;
|
|
133
|
+
}): number;
|
|
134
|
+
/**
|
|
135
|
+
* Manhattan ruler distance between two cells: the orthogonal-step count, no diagonals.
|
|
136
|
+
*
|
|
137
|
+
* The counterpart to `euclidean` and `chebyshev` for four-way movement and range, where
|
|
138
|
+
* every step is axis-aligned.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* import { manhattan } from '@datamoc/mw_games/core';
|
|
143
|
+
*
|
|
144
|
+
* manhattan({ x: 0, y: 0 }, { x: 3, y: 4 }); // 7
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export declare function manhattan(a: {
|
|
148
|
+
readonly x: number;
|
|
149
|
+
readonly y: number;
|
|
150
|
+
}, b: {
|
|
151
|
+
readonly x: number;
|
|
152
|
+
readonly y: number;
|
|
153
|
+
}): number;
|
|
154
|
+
/**
|
|
155
|
+
* The ruler a rule measures with, chosen by name where the choice itself is data: a
|
|
156
|
+
* movement rule walks `chebyshev`, a blast falls off with `euclidean`, a four-way maze
|
|
157
|
+
* counts `manhattan`.
|
|
158
|
+
*/
|
|
159
|
+
export type DistanceMetric = 'euclidean' | 'manhattan' | 'chebyshev';
|
|
160
|
+
/**
|
|
161
|
+
* Measures `a` to `b` with the named ruler, so a rule authored as data (a table row, a
|
|
162
|
+
* authored profile) can pick its geometry without importing each ruler by name.
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```ts
|
|
166
|
+
* import { distance } from '@datamoc/mw_games/core';
|
|
167
|
+
*
|
|
168
|
+
* distance('chebyshev', { x: 0, y: 0 }, { x: 3, y: 4 }); // 4
|
|
169
|
+
* distance('euclidean', { x: 0, y: 0 }, { x: 3, y: 4 }); // 5
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
export declare function distance(metric: DistanceMetric, a: {
|
|
173
|
+
readonly x: number;
|
|
174
|
+
readonly y: number;
|
|
175
|
+
}, b: {
|
|
176
|
+
readonly x: number;
|
|
177
|
+
readonly y: number;
|
|
178
|
+
}): number;
|
|
64
179
|
//# sourceMappingURL=Grid.d.ts.map
|
package/dist/core/Grid.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../src/core/Grid.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../src/core/Grid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,yEAAyE;AACzE,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,yEAAyE;AACzE,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIxE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAKhE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAShE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAS5D,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CACxB,CAAC,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,CAAC,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CAER;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CACxB,CAAC,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,CAAC,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CAER;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACxB,CAAC,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,CAAC,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CAER;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACvB,MAAM,EAAE,cAAc,EACtB,CAAC,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,CAAC,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CAWR"}
|
package/dist/core/Grid.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* @example
|
|
17
17
|
* ```ts
|
|
18
18
|
* import { cellInside, cellIndex, cellX, cellY, cellKey, cellFromKey } from '@datamoc/mw_games/core';
|
|
19
|
+
* import { NEIGHBOURS4, NEIGHBOURS8, CIRCLE8, euclidean } from '@datamoc/mw_games/core';
|
|
19
20
|
*
|
|
20
21
|
* // a 4x3 board, row-major: y * width + x
|
|
21
22
|
* cellInside(4, 3, 3, 2); // true, the far corner
|
|
@@ -26,6 +27,11 @@
|
|
|
26
27
|
*
|
|
27
28
|
* const seen = new Set([cellKey(2, 1)]); // '2,1', for a Map or a Set
|
|
28
29
|
* cellFromKey('2,1'); // { x: 2, y: 1 }
|
|
30
|
+
*
|
|
31
|
+
* NEIGHBOURS8.length; // 8, the surrounding cells in row-major order
|
|
32
|
+
* CIRCLE8[0]; // [0, -1], the same ring clockwise from north
|
|
33
|
+
* NEIGHBOURS4.length; // 4, north/east/south/west
|
|
34
|
+
* euclidean({ x: 0, y: 0 }, { x: 3, y: 4 }); // 5
|
|
29
35
|
* ```
|
|
30
36
|
*/
|
|
31
37
|
/**
|
|
@@ -73,4 +79,123 @@ export function cellFromKey(key) {
|
|
|
73
79
|
return null;
|
|
74
80
|
return { x: Number(match[1]), y: Number(match[2]) };
|
|
75
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* The four axial neighbours of a cell: north, east, south, west, in that order.
|
|
84
|
+
*
|
|
85
|
+
* One frozen table shared by every square-grid algorithm, so a flood fill and a
|
|
86
|
+
* diffusion field visit neighbours in the same sequence without each keeping its
|
|
87
|
+
* own copy: `roguelike`'s `neighbourOffsets(4)` returns this same table.
|
|
88
|
+
*/
|
|
89
|
+
export const NEIGHBOURS4 = [
|
|
90
|
+
[0, -1],
|
|
91
|
+
[1, 0],
|
|
92
|
+
[0, 1],
|
|
93
|
+
[-1, 0],
|
|
94
|
+
];
|
|
95
|
+
/**
|
|
96
|
+
* The eight cells surrounding a cell, in row-major (reading) order, centre skipped.
|
|
97
|
+
*
|
|
98
|
+
* The same eight cells `CIRCLE8` carries, only the visit order differs: reading order
|
|
99
|
+
* suits first-found-wins scans, the ring suits directional work like knockback cursors.
|
|
100
|
+
*/
|
|
101
|
+
export const NEIGHBOURS8 = [
|
|
102
|
+
[-1, -1],
|
|
103
|
+
[0, -1],
|
|
104
|
+
[1, -1],
|
|
105
|
+
[-1, 0],
|
|
106
|
+
[1, 0],
|
|
107
|
+
[-1, 1],
|
|
108
|
+
[0, 1],
|
|
109
|
+
[1, 1],
|
|
110
|
+
];
|
|
111
|
+
/**
|
|
112
|
+
* The eight cells surrounding a cell as a clockwise ring starting north.
|
|
113
|
+
*
|
|
114
|
+
* The same sequence `roguelike`'s `neighbourOffsets(8)` has always returned, now shared
|
|
115
|
+
* from here instead of copied there.
|
|
116
|
+
*/
|
|
117
|
+
export const CIRCLE8 = [
|
|
118
|
+
[0, -1],
|
|
119
|
+
[1, -1],
|
|
120
|
+
[1, 0],
|
|
121
|
+
[1, 1],
|
|
122
|
+
[0, 1],
|
|
123
|
+
[-1, 1],
|
|
124
|
+
[-1, 0],
|
|
125
|
+
[-1, -1],
|
|
126
|
+
];
|
|
127
|
+
/**
|
|
128
|
+
* Euclidean ruler distance between two cells.
|
|
129
|
+
*
|
|
130
|
+
* The counterpart to `roguelike`'s `chebyshevDistance`, which charges a diagonal the
|
|
131
|
+
* same as a step: use this one when the true straight-line distance matters (blast
|
|
132
|
+
* falloff, census radius) and that one for roguelike range and movement.
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```ts
|
|
136
|
+
* import { euclidean } from '@datamoc/mw_games/core';
|
|
137
|
+
*
|
|
138
|
+
* euclidean({ x: 0, y: 0 }, { x: 3, y: 4 }); // 5
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export function euclidean(a, b) {
|
|
142
|
+
return Math.hypot(a.x - b.x, a.y - b.y);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Chebyshev ruler distance between two cells: the king-move count, a diagonal costing one step.
|
|
146
|
+
*
|
|
147
|
+
* The counterpart to `euclidean` above for grid movement and range, where a diagonal is a
|
|
148
|
+
* single step rather than 1.41 cells; `roguelike`
|
|
149
|
+
* `chebyshevDistance` is this same arithmetic through its own `Step` type.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* import { chebyshev } from '@datamoc/mw_games/core';
|
|
154
|
+
*
|
|
155
|
+
* chebyshev({ x: 0, y: 0 }, { x: 3, y: 4 }); // 4
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export function chebyshev(a, b) {
|
|
159
|
+
return Math.max(Math.abs(a.x - b.x), Math.abs(a.y - b.y));
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Manhattan ruler distance between two cells: the orthogonal-step count, no diagonals.
|
|
163
|
+
*
|
|
164
|
+
* The counterpart to `euclidean` and `chebyshev` for four-way movement and range, where
|
|
165
|
+
* every step is axis-aligned.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* import { manhattan } from '@datamoc/mw_games/core';
|
|
170
|
+
*
|
|
171
|
+
* manhattan({ x: 0, y: 0 }, { x: 3, y: 4 }); // 7
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
export function manhattan(a, b) {
|
|
175
|
+
return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Measures `a` to `b` with the named ruler, so a rule authored as data (a table row, a
|
|
179
|
+
* authored profile) can pick its geometry without importing each ruler by name.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```ts
|
|
183
|
+
* import { distance } from '@datamoc/mw_games/core';
|
|
184
|
+
*
|
|
185
|
+
* distance('chebyshev', { x: 0, y: 0 }, { x: 3, y: 4 }); // 4
|
|
186
|
+
* distance('euclidean', { x: 0, y: 0 }, { x: 3, y: 4 }); // 5
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
export function distance(metric, a, b) {
|
|
190
|
+
switch (metric) {
|
|
191
|
+
case 'euclidean':
|
|
192
|
+
return euclidean(a, b);
|
|
193
|
+
case 'manhattan':
|
|
194
|
+
return manhattan(a, b);
|
|
195
|
+
case 'chebyshev':
|
|
196
|
+
return chebyshev(a, b);
|
|
197
|
+
default:
|
|
198
|
+
throw new RangeError(`unknown distance metric: ${metric}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
76
201
|
//# sourceMappingURL=Grid.js.map
|
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":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Numeric leases for values a plain-data command cannot carry.
|
|
3
|
+
*
|
|
4
|
+
* A simulation command must survive `structuredClone`, so anything live (a
|
|
5
|
+
* callback, an externally-owned RNG stream, a world-query closure) travels as
|
|
6
|
+
* a numeric id resolved inside the rule. This is the one-line container for
|
|
7
|
+
* that recipe: `put` a value, carry the id in the command, `get` it in the
|
|
8
|
+
* rule, and `drop` it when done. `with` scopes the lease so the `drop` runs
|
|
9
|
+
* even when the rule throws.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { createHandles } from '@datamoc/mw_games/core';
|
|
14
|
+
*
|
|
15
|
+
* const handles = createHandles<() => number>();
|
|
16
|
+
* const result = handles.with(() => 7, (id) => {
|
|
17
|
+
* const fn = handles.get(id);
|
|
18
|
+
* return fn();
|
|
19
|
+
* });
|
|
20
|
+
* console.log(result); // 7
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export interface Handles<T> {
|
|
24
|
+
/** the number of values currently leased */
|
|
25
|
+
readonly size: number;
|
|
26
|
+
/** stores `value` and returns its numeric lease id */
|
|
27
|
+
put(value: T): number;
|
|
28
|
+
/** resolves a leased id; throws when the id is unknown or was dropped */
|
|
29
|
+
get(id: number): T;
|
|
30
|
+
/** ends a lease; unknown ids are ignored */
|
|
31
|
+
drop(id: number): void;
|
|
32
|
+
/** ends every lease */
|
|
33
|
+
clear(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Leases `value` for `body`, dropping the id afterwards even when `body`
|
|
36
|
+
* throws. The id is only valid inside `body`.
|
|
37
|
+
*/
|
|
38
|
+
with<R>(value: T, body: (id: number) => R): R;
|
|
39
|
+
}
|
|
40
|
+
/** Creates an empty numeric-lease table; ids start at 1 and are never reused. */
|
|
41
|
+
export declare function createHandles<T>(): Handles<T>;
|
|
42
|
+
//# sourceMappingURL=Handles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Handles.d.ts","sourceRoot":"","sources":["../../src/core/Handles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACtB,yEAAyE;IACzE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;IACnB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,uBAAuB;IACvB,KAAK,IAAI,IAAI,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;CAC9C;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAiC7C"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Creates an empty numeric-lease table; ids start at 1 and are never reused. */
|
|
2
|
+
export function createHandles() {
|
|
3
|
+
let next = 1;
|
|
4
|
+
const values = new Map();
|
|
5
|
+
return {
|
|
6
|
+
get size() {
|
|
7
|
+
return values.size;
|
|
8
|
+
},
|
|
9
|
+
put(value) {
|
|
10
|
+
const id = next++;
|
|
11
|
+
values.set(id, value);
|
|
12
|
+
return id;
|
|
13
|
+
},
|
|
14
|
+
get(id) {
|
|
15
|
+
const value = values.get(id);
|
|
16
|
+
if (value === undefined)
|
|
17
|
+
throw new Error(`unknown handle ${id}`);
|
|
18
|
+
return value;
|
|
19
|
+
},
|
|
20
|
+
drop(id) {
|
|
21
|
+
values.delete(id);
|
|
22
|
+
},
|
|
23
|
+
clear() {
|
|
24
|
+
values.clear();
|
|
25
|
+
},
|
|
26
|
+
with(value, body) {
|
|
27
|
+
const id = next++;
|
|
28
|
+
values.set(id, value);
|
|
29
|
+
try {
|
|
30
|
+
return body(id);
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
values.delete(id);
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=Handles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Handles.js","sourceRoot":"","sources":["../../src/core/Handles.ts"],"names":[],"mappings":"AAwCA,iFAAiF;AACjF,MAAM,UAAU,aAAa;IAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;IACpC,OAAO;QACN,IAAI,IAAI;YACP,OAAO,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;QACD,GAAG,CAAC,KAAQ;YACX,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,GAAG,CAAC,EAAU;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,EAAU;YACd,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,KAAK;YACJ,MAAM,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,CAAI,KAAQ,EAAE,IAAuB;YACxC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC;gBACJ,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;oBAAS,CAAC;gBACV,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;QACF,CAAC;KACD,CAAC;AACH,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":"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;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAgB,aAAa;IAOlC,YAAY,OAA6B,EAAE,KAAa;QACvD,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,uBAAuB,CAAC,CAAC;QACxE,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,KAAK,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2BAA2B,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,eAAe,CAAC,CAAC;IAC3F,CAAC;IAES,KAAK,CAAC,WAAW,CAAI,GAAwC;QACtE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC;YACJ,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACF,CAAC;IAED,uHAAuH;IAC7G,KAAK,CAAC,QAAQ,CAAC,QAAkB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACnE,IAAI,QAAQ,GAAG,KAAK;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,yBAAyB,KAAK,gBAAgB,QAAQ,SAAS,CAAC,CAAC;QAC/F,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,SAAS,CAAC;YACT,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;YACzB,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;gBAClB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,yBAAyB,KAAK,aAAa,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,sCAAsC;IAC5B,KAAK,CAAC,QAAQ,CAAC,QAAkB,EAAE,IAAY;QACxD,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAClD,QAAQ,EAAE,IAAI,CAAC,gBAAgB;YAC/B,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;SAC9B,CAAC,CAAC;IACJ,CAAC;CACD"}
|