@edv4h/usketch-plugin-map 0.8.0 → 0.10.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/dist/autotile.d.ts +4 -0
- package/dist/autotile.d.ts.map +1 -1
- package/dist/autotile.js +7 -3
- package/dist/autotile.js.map +1 -1
- package/dist/base/base-layer.d.ts.map +1 -1
- package/dist/base/base-layer.js +6 -12
- package/dist/base/base-layer.js.map +1 -1
- package/dist/base/base-map-shape.d.ts +3 -2
- package/dist/base/base-map-shape.d.ts.map +1 -1
- package/dist/base/base-map-shape.js.map +1 -1
- package/dist/base/base-ops.d.ts +6 -8
- package/dist/base/base-ops.d.ts.map +1 -1
- package/dist/base/base-ops.js +15 -63
- package/dist/base/base-ops.js.map +1 -1
- package/dist/base/territory.d.ts.map +1 -1
- package/dist/base/territory.js +11 -17
- package/dist/base/territory.js.map +1 -1
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +6 -4
- package/dist/generate.js.map +1 -1
- package/dist/icon-render.d.ts +10 -0
- package/dist/icon-render.d.ts.map +1 -0
- package/dist/icon-render.js +26 -0
- package/dist/icon-render.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/map-icon-layer.d.ts +9 -0
- package/dist/map-icon-layer.d.ts.map +1 -0
- package/dist/map-icon-layer.js +55 -0
- package/dist/map-icon-layer.js.map +1 -0
- package/dist/map-service.d.ts +28 -0
- package/dist/map-service.d.ts.map +1 -0
- package/dist/map-service.js +31 -0
- package/dist/map-service.js.map +1 -0
- package/dist/map-tool.d.ts.map +1 -1
- package/dist/map-tool.js +89 -54
- package/dist/map-tool.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +23 -3
- package/dist/plugin.js.map +1 -1
- package/dist/tilemap-shape.d.ts +15 -3
- package/dist/tilemap-shape.d.ts.map +1 -1
- package/dist/tilemap-shape.js +40 -14
- package/dist/tilemap-shape.js.map +1 -1
- package/package.json +3 -3
- package/dist/map-icon-shape.d.ts +0 -17
- package/dist/map-icon-shape.d.ts.map +0 -1
- package/dist/map-icon-shape.js +0 -106
- package/dist/map-icon-shape.js.map +0 -1
package/dist/autotile.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { BoundingBox } from "@edv4h/usketch-shared";
|
|
2
2
|
import type { TerrainKey } from "./terrain.js";
|
|
3
3
|
export type Cells = Record<string, TerrainKey>;
|
|
4
|
+
/** Sparse grid of world-layer icons: cellKey → iconKey (one icon per cell). */
|
|
5
|
+
export type IconCells = Record<string, string>;
|
|
4
6
|
/** Sparse-map key for a cell. */
|
|
5
7
|
export declare function cellKey(col: number, row: number): string;
|
|
6
8
|
export declare function parseCellKey(key: string): [col: number, row: number];
|
|
@@ -12,6 +14,8 @@ export declare function worldToCell(x: number, y: number, tile: number): [col: n
|
|
|
12
14
|
* when the cell is unset and no fallback is given.
|
|
13
15
|
*/
|
|
14
16
|
export declare function terrainAtCell(cells: Cells, col: number, row: number, empty?: TerrainKey | null): TerrainKey | undefined;
|
|
17
|
+
/** Bounding box (world units) enclosing all given cell keys. Empty → zero box. */
|
|
18
|
+
export declare function keysBounds(keys: Iterable<string>, tile: number): BoundingBox;
|
|
15
19
|
/** Bounding box (world units) enclosing all painted cells. Empty → zero box. */
|
|
16
20
|
export declare function cellsBounds(cells: Cells, tile: number): BoundingBox;
|
|
17
21
|
export interface ExposedEdges {
|
package/dist/autotile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autotile.d.ts","sourceRoot":"","sources":["../src/autotile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAE/C,iCAAiC;AACjC,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAGpE;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAE1F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,GACvB,UAAU,GAAG,SAAS,CAExB;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"autotile.d.ts","sourceRoot":"","sources":["../src/autotile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC/C,+EAA+E;AAC/E,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE/C,iCAAiC;AACjC,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAGpE;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAE1F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,GACvB,UAAU,GAAG,SAAS,CAExB;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAmB5E;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAEnE;AAED,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;CACX;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,GACvB,YAAY,CASd;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,OAAO,GACX,MAAM,EAAE,CAuBV;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5B,GAAG,CAAC,EAAE,OAAO,GACX,MAAM,EAAE,CAIV;AAED,mFAAmF;AACnF,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,kBAAkB;IAClC,kFAAkF;IAClF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACd,kBAAkB,CAiCpB"}
|
package/dist/autotile.js
CHANGED
|
@@ -18,13 +18,13 @@ export function worldToCell(x, y, tile) {
|
|
|
18
18
|
export function terrainAtCell(cells, col, row, empty) {
|
|
19
19
|
return cells[cellKey(col, row)] ?? empty ?? undefined;
|
|
20
20
|
}
|
|
21
|
-
/** Bounding box (world units) enclosing all
|
|
22
|
-
export function
|
|
21
|
+
/** Bounding box (world units) enclosing all given cell keys. Empty → zero box. */
|
|
22
|
+
export function keysBounds(keys, tile) {
|
|
23
23
|
let minC = Infinity;
|
|
24
24
|
let minR = Infinity;
|
|
25
25
|
let maxC = -Infinity;
|
|
26
26
|
let maxR = -Infinity;
|
|
27
|
-
for (const key of
|
|
27
|
+
for (const key of keys) {
|
|
28
28
|
const [c, r] = parseCellKey(key);
|
|
29
29
|
if (c < minC)
|
|
30
30
|
minC = c;
|
|
@@ -44,6 +44,10 @@ export function cellsBounds(cells, tile) {
|
|
|
44
44
|
height: (maxR - minR + 1) * tile,
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
|
+
/** Bounding box (world units) enclosing all painted cells. Empty → zero box. */
|
|
48
|
+
export function cellsBounds(cells, tile) {
|
|
49
|
+
return keysBounds(Object.keys(cells), tile);
|
|
50
|
+
}
|
|
47
51
|
/**
|
|
48
52
|
* Which sides of cell (c,r) border a different terrain. Unset neighbours count as
|
|
49
53
|
* `empty` (the fallback terrain), so e.g. a water tile next to unpainted space
|
package/dist/autotile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autotile.js","sourceRoot":"","sources":["../src/autotile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"autotile.js","sourceRoot":"","sources":["../src/autotile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-layer.d.ts","sourceRoot":"","sources":["../../src/base/base-layer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-layer.d.ts","sourceRoot":"","sources":["../../src/base/base-layer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAwGpE,wBAAgB,aAAa,CAAC,EAC7B,KAAK,EACL,UAAU,GACV,EAAE;IACF,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB,sCA8GA"}
|
package/dist/base/base-layer.js
CHANGED
|
@@ -2,7 +2,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect, useRef, useState } from "react";
|
|
3
3
|
import { exposedEdges, parseCellKey } from "../autotile.js";
|
|
4
4
|
import { blockFactor, downsampleCells, tileDetail } from "../lod.js";
|
|
5
|
-
import { MAP_ICON_TYPE } from "../map-icon-shape.js";
|
|
6
5
|
import { visibleCellRange, visibleWorldRect } from "../map-layer.js";
|
|
7
6
|
import { MAP_TOOL_ID } from "../map-tool-id.js";
|
|
8
7
|
import { useMapToolState } from "../tool-state.js";
|
|
@@ -111,20 +110,15 @@ export function BaseAreaLayer({ store, renderMode, }) {
|
|
|
111
110
|
: renderCoarse(territory, base.bases, tile, screenTilePx, visible);
|
|
112
111
|
// Labels: HTML chips at screen coords (crisp, constant size). Hidden when coarse.
|
|
113
112
|
const anchors = detail === "full" ? baseRegionAnchors(territory, base.bases, tile) : [];
|
|
114
|
-
// Radius rings
|
|
113
|
+
// Radius rings around each base's beacon CELL. Full detail only; radius + colour
|
|
114
|
+
// come from the base registry (no icon shapes involved anymore).
|
|
115
115
|
const rings = [];
|
|
116
116
|
if (detail === "full") {
|
|
117
|
-
for (const [,
|
|
118
|
-
if (
|
|
117
|
+
for (const [baseId, info] of Object.entries(base.bases)) {
|
|
118
|
+
if (!info.beaconCell)
|
|
119
119
|
continue;
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
continue;
|
|
123
|
-
const info = base.bases[meta.baseId];
|
|
124
|
-
if (!info)
|
|
125
|
-
continue;
|
|
126
|
-
const color = info.color;
|
|
127
|
-
rings.push(_jsx("circle", { cx: s.x + s.width / 2, cy: s.y + s.height / 2, r: info.radius * tile, fill: "none", stroke: color, strokeWidth: 2, strokeDasharray: "8 6", opacity: 0.7, vectorEffect: "non-scaling-stroke" }, `ring-${s.id}`));
|
|
120
|
+
const [col, row] = parseCellKey(info.beaconCell);
|
|
121
|
+
rings.push(_jsx("circle", { cx: (col + 0.5) * tile, cy: (row + 0.5) * tile, r: info.radius * tile, fill: "none", stroke: info.color, strokeWidth: 2, strokeDasharray: "8 6", opacity: 0.7, vectorEffect: "non-scaling-stroke" }, `ring-${baseId}`));
|
|
128
122
|
}
|
|
129
123
|
}
|
|
130
124
|
return (_jsxs("div", { style: { position: "absolute", inset: 0, pointerEvents: "none", overflow: "hidden" }, children: [_jsx("svg", { width: "100%", height: "100%", style: { display: "block", overflow: "visible" }, children: _jsxs("g", { transform: `translate(${vp.x} ${vp.y}) scale(${vp.zoom})`, children: [cells, rings] }) }), anchors.map((a) => (_jsxs("div", { style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-layer.js","sourceRoot":"","sources":["../../src/base/base-layer.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAc,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"base-layer.js","sourceRoot":"","sources":["../../src/base/base-layer.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAc,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAmB,UAAU,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAkB,MAAM,gBAAgB,CAAC;AAElE,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,6CAA6C;AACxE,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,mFAAmF;AACnF,SAAS,UAAU,CAClB,KAAgB,EAChB,KAA+B,EAC/B,IAAY,EACZ,OAA+B;IAE/B,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,KAAyB,CAAC,CAAC,oCAAoC;IAC/E,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACnB,KAAK,CAAC,IAAI,CACT,eAEC,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,YAAY,IANpB,GAAG,CAAC,IAAI,CAAC,IAAI,CAOjB,CACF,CAAC;QACF,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,CAAS,EAAE,EAAE,CAAC,CAC5E,eAEC,CAAC,EAAE,EAAE,EACL,CAAC,EAAE,EAAE,EACL,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,cAAc,IANtB,CAAC,CAOL,CACF,CAAC;QACF,IAAI,IAAI,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE;YACxC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACP,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACZ,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,yEAAyE;AACzE,SAAS,YAAY,CACpB,KAAgB,EAChB,KAA+B,EAC/B,IAAY,EACZ,YAAoB,EACpB,OAA+B;IAE/B,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAyB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAClB,IACC,OAAO;YACP,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EACzF,CAAC;YACF,SAAS;QACV,CAAC;QACD,KAAK,CAAC,IAAI,CACT,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,IAA7E,EAAE,CAA+E,CAC5F,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC7B,KAAK,EACL,UAAU,GAIV;IACA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEzB,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC;QACF,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACX,CAAC,EAAE,CAAC;YACJ,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,6EAA6E;IAC7E,+EAA+E;IAC/E,yEAAyE;IACzE,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,EAAE,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;IACnF,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAEvB,gFAAgF;IAChF,MAAM,SAAS,GAAc,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/F,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErD,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;IACpC,MAAM,MAAM,GAAe,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,KAAK,GACV,MAAM,KAAK,MAAM;QAChB,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;QAClD,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAErE,kFAAkF;IAClF,MAAM,OAAO,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExF,iFAAiF;IACjF,iEAAiE;IACjE,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CACT,iBAEC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EACtB,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EACtB,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,EACrB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,IAAI,CAAC,KAAK,EAClB,WAAW,EAAE,CAAC,EACd,eAAe,EAAC,KAAK,EACrB,OAAO,EAAE,GAAG,EACZ,YAAY,EAAC,oBAAoB,IAT5B,QAAQ,MAAM,EAAE,CAUpB,CACF,CAAC;QACH,CAAC;IACF,CAAC;IAED,OAAO,CACN,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aACxF,cAAK,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAC/E,aAAG,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,aAC1D,KAAK,EACL,KAAK,IACH,GACC,EACL,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACnB,eAEC,KAAK,EAAE;oBACN,QAAQ,EAAE,UAAU;oBACpB,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;oBAC1B,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;oBACzB,SAAS,EAAE,sBAAsB;oBACjC,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,CAAC;oBACN,OAAO,EAAE,SAAS;oBAClB,UAAU,EAAE,sBAAsB;oBAClC,MAAM,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE;oBAC9B,YAAY,EAAE,EAAE;oBAChB,IAAI,EAAE,gCAAgC;oBACtC,KAAK,EAAE,SAAS;oBAChB,UAAU,EAAE,QAAQ;oBACpB,SAAS,EAAE,2BAA2B;iBACtC,aAED,eACC,KAAK,EAAE;4BACN,KAAK,EAAE,EAAE;4BACT,MAAM,EAAE,EAAE;4BACV,YAAY,EAAE,KAAK;4BACnB,UAAU,EAAE,CAAC,CAAC,KAAK;4BACnB,IAAI,EAAE,MAAM;yBACZ,GACA,EACD,CAAC,CAAC,IAAI,KA5BF,CAAC,CAAC,MAAM,CA6BR,CACN,CAAC,IACG,CACN,CAAC;AACH,CAAC"}
|
|
@@ -5,8 +5,9 @@ export interface BaseInfo {
|
|
|
5
5
|
color: string;
|
|
6
6
|
/** Territory radius in tiles around the beacon (the core is always owned). */
|
|
7
7
|
radius: number;
|
|
8
|
-
/** The single beacon: the
|
|
9
|
-
|
|
8
|
+
/** The single beacon: the grid cell (`cellKey("c,r")`) whose centre seeds this
|
|
9
|
+
* base's core disk. Undefined until the user places a beacon in base mode. */
|
|
10
|
+
beaconCell?: string;
|
|
10
11
|
}
|
|
11
12
|
export declare const DEFAULT_BASE_RADIUS = 5;
|
|
12
13
|
export interface BaseMapShapeData extends ShapeData {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-map-shape.d.ts","sourceRoot":"","sources":["../../src/base/base-map-shape.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAe,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIrF,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf
|
|
1
|
+
{"version":3,"file":"base-map-shape.d.ts","sourceRoot":"","sources":["../../src/base/base-map-shape.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAe,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIrF,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf;mFAC+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAClD,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAChC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,gBAAgB,CAErE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAa1D;AAED,wBAAgB,4BAA4B,CAAC,IAAI,GAAE,MAAqB,GAAG,eAAe,CA4BzF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-map-shape.js","sourceRoot":"","sources":["../../src/base/base-map-shape.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"base-map-shape.js","sourceRoot":"","sources":["../../src/base/base-map-shape.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AAYxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAQrC,MAAM,UAAU,SAAS,CAAC,KAAgB;IACzC,OAAO,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACvC,OAAO;QACN,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,UAAU;QAChB,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACjF,IAAI;QACJ,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,IAAI;KACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAI,GAAW,YAAY;IACvE,OAAO;QACN,MAAM,EAAE,GAAG,EAAE,CAAC,aAAK;QACnB,YAAY,EAAE,KAAK;QACnB,2EAA2E;QAC3E,yCAAyC;QACzC,SAAS,EAAE,GAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;QACpB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,CAAC,IAAI,EAAa,EAAE,CAAC,IAAI;QACjC,aAAa,EAAE,CAAC,MAAM,EAAa,EAAE,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC/E,cAAc,EAAE,CAAC,IAAI,EAA2B,EAAE;YACjD,MAAM,CAAC,GAAG,IAAwB,CAAC;YACnC,OAAO;gBACN,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM;gBAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACtD,CAAC;QACH,CAAC;QACD,WAAW,EAAE,CAAC,IAAI,EAA2B,EAAE;YAC9C,MAAM,CAAC,GAAG,IAAwB,CAAC;YACnC,OAAO;gBACN,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;qBACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;qBAClB,IAAI,CAAC,IAAI,CAAC;aACZ,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/base/base-ops.d.ts
CHANGED
|
@@ -28,16 +28,14 @@ export declare function getBaseMap(store: BoardStore): BaseMapShapeData | undefi
|
|
|
28
28
|
/** Create a new base (name + colour, default radius); returns its id. Undoable. */
|
|
29
29
|
export declare function createBase(deps: BaseDeps, name: string, color: string): string;
|
|
30
30
|
/**
|
|
31
|
-
* Make `
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* base or icon is missing, or the icon is already this base's beacon.
|
|
31
|
+
* Make `cell` (a `cellKey("c,r")`) the (single) beacon of `baseId`. Enforces 1:1 —
|
|
32
|
+
* any other base that used the same cell is detached. Undoable. No-op if the base
|
|
33
|
+
* is missing or is already beaconed at `cell`.
|
|
35
34
|
*/
|
|
36
|
-
export declare function setBeacon(deps: BaseDeps,
|
|
35
|
+
export declare function setBeacon(deps: BaseDeps, cell: string, baseId: string): void;
|
|
37
36
|
/**
|
|
38
|
-
* Remove a base from the registry (its derived territory disappears).
|
|
39
|
-
*
|
|
40
|
-
* Undoable. No-op if the base doesn't exist.
|
|
37
|
+
* Remove a base from the registry (its derived territory disappears). Undoable.
|
|
38
|
+
* No-op if the base doesn't exist.
|
|
41
39
|
*/
|
|
42
40
|
export declare function deleteBase(deps: BaseDeps, baseId: string): void;
|
|
43
41
|
//# sourceMappingURL=base-ops.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-ops.d.ts","sourceRoot":"","sources":["../../src/base/base-ops.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAW,eAAe,EAAa,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-ops.d.ts","sourceRoot":"","sources":["../../src/base/base-ops.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAW,eAAe,EAAa,MAAM,uBAAuB,CAAC;AAG7F,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAIrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACb;AAID,yDAAyD;AACzD,wBAAgB,aAAa,CAC5B,SAAS,EAAE,SAAS,EACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAGf;AAED,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACd;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC/B,IAAI,EAAE,MAAM,GACV,gBAAgB,EAAE,CA+BpB;AAID,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAOhG;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAG1E;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAe9E;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAqB5E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiB/D"}
|
package/dist/base/base-ops.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { generateId } from "@edv4h/usketch-shared";
|
|
2
2
|
import { cellKey, parseCellKey, worldToCell } from "../autotile.js";
|
|
3
|
-
import { MAP_ICON_TYPE } from "../map-icon-shape.js";
|
|
4
3
|
import { DEFAULT_BASE_RADIUS, isBaseMap, makeBaseMap, } from "./base-map-shape.js";
|
|
5
4
|
// ── Pure ─────────────────────────────────────────────────────────────────────
|
|
6
5
|
/** Base id owning the cell at a world point, or null. */
|
|
@@ -75,66 +74,38 @@ export function createBase(deps, name, color) {
|
|
|
75
74
|
return baseId;
|
|
76
75
|
}
|
|
77
76
|
/**
|
|
78
|
-
* Make `
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* base or icon is missing, or the icon is already this base's beacon.
|
|
77
|
+
* Make `cell` (a `cellKey("c,r")`) the (single) beacon of `baseId`. Enforces 1:1 —
|
|
78
|
+
* any other base that used the same cell is detached. Undoable. No-op if the base
|
|
79
|
+
* is missing or is already beaconed at `cell`.
|
|
82
80
|
*/
|
|
83
|
-
export function setBeacon(deps,
|
|
81
|
+
export function setBeacon(deps, cell, baseId) {
|
|
84
82
|
const { id } = resolveBaseMap(deps.store, deps.tile);
|
|
85
83
|
const shape = deps.store.getShape(id);
|
|
86
84
|
const base = shape?.bases[baseId];
|
|
87
85
|
if (!shape || !base)
|
|
88
86
|
return;
|
|
89
|
-
|
|
90
|
-
if (!icon || icon.type !== MAP_ICON_TYPE)
|
|
91
|
-
return;
|
|
92
|
-
if (base.beaconIconId === iconId)
|
|
87
|
+
if (base.beaconCell === cell)
|
|
93
88
|
return; // no change
|
|
94
89
|
const prevBases = shape.bases;
|
|
95
|
-
|
|
96
|
-
// New registry: set this base's beacon, and clear `iconId` from any other base.
|
|
90
|
+
// Set this base's beacon cell; clear the same cell from any other base.
|
|
97
91
|
const nextBases = {};
|
|
98
92
|
for (const [bid, info] of Object.entries(prevBases)) {
|
|
99
93
|
if (bid === baseId)
|
|
100
|
-
nextBases[bid] = { ...info,
|
|
101
|
-
else if (info.
|
|
102
|
-
nextBases[bid] = { ...info,
|
|
94
|
+
nextBases[bid] = { ...info, beaconCell: cell };
|
|
95
|
+
else if (info.beaconCell === cell)
|
|
96
|
+
nextBases[bid] = { ...info, beaconCell: undefined };
|
|
103
97
|
else
|
|
104
98
|
nextBases[bid] = info;
|
|
105
99
|
}
|
|
106
|
-
// Icon meta edits: link the new beacon; unlink the base's previous beacon.
|
|
107
|
-
const edits = [
|
|
108
|
-
{ id: iconId, prev: icon.meta, next: { ...icon.meta, baseId } },
|
|
109
|
-
];
|
|
110
|
-
if (prevBeaconId && prevBeaconId !== iconId) {
|
|
111
|
-
const prevIcon = deps.store.getShape(prevBeaconId);
|
|
112
|
-
if (prevIcon) {
|
|
113
|
-
edits.push({
|
|
114
|
-
id: prevBeaconId,
|
|
115
|
-
prev: prevIcon.meta,
|
|
116
|
-
next: { ...prevIcon.meta, baseId: undefined },
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
100
|
const command = {
|
|
121
|
-
execute: () => {
|
|
122
|
-
|
|
123
|
-
for (const e of edits)
|
|
124
|
-
deps.store.updateShape(e.id, { meta: e.next });
|
|
125
|
-
},
|
|
126
|
-
undo: () => {
|
|
127
|
-
deps.store.updateShape(id, { bases: prevBases });
|
|
128
|
-
for (const e of edits)
|
|
129
|
-
deps.store.updateShape(e.id, { meta: e.prev });
|
|
130
|
-
},
|
|
101
|
+
execute: () => deps.store.updateShape(id, { bases: nextBases }),
|
|
102
|
+
undo: () => deps.store.updateShape(id, { bases: prevBases }),
|
|
131
103
|
};
|
|
132
104
|
deps.commands.execute(command);
|
|
133
105
|
}
|
|
134
106
|
/**
|
|
135
|
-
* Remove a base from the registry (its derived territory disappears).
|
|
136
|
-
*
|
|
137
|
-
* Undoable. No-op if the base doesn't exist.
|
|
107
|
+
* Remove a base from the registry (its derived territory disappears). Undoable.
|
|
108
|
+
* No-op if the base doesn't exist.
|
|
138
109
|
*/
|
|
139
110
|
export function deleteBase(deps, baseId) {
|
|
140
111
|
const { id } = resolveBaseMap(deps.store, deps.tile);
|
|
@@ -148,28 +119,9 @@ export function deleteBase(deps, baseId) {
|
|
|
148
119
|
if (bid !== baseId)
|
|
149
120
|
nextBases[bid] = info;
|
|
150
121
|
}
|
|
151
|
-
const edits = [];
|
|
152
|
-
if (base.beaconIconId) {
|
|
153
|
-
const icon = deps.store.getShape(base.beaconIconId);
|
|
154
|
-
if (icon && icon.type === MAP_ICON_TYPE) {
|
|
155
|
-
edits.push({
|
|
156
|
-
id: base.beaconIconId,
|
|
157
|
-
prev: icon.meta,
|
|
158
|
-
next: { ...icon.meta, baseId: undefined },
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
122
|
const command = {
|
|
163
|
-
execute: () => {
|
|
164
|
-
|
|
165
|
-
for (const e of edits)
|
|
166
|
-
deps.store.updateShape(e.id, { meta: e.next });
|
|
167
|
-
},
|
|
168
|
-
undo: () => {
|
|
169
|
-
deps.store.updateShape(id, { bases: prevBases });
|
|
170
|
-
for (const e of edits)
|
|
171
|
-
deps.store.updateShape(e.id, { meta: e.prev });
|
|
172
|
-
},
|
|
123
|
+
execute: () => deps.store.updateShape(id, { bases: nextBases }),
|
|
124
|
+
undo: () => deps.store.updateShape(id, { bases: prevBases }),
|
|
173
125
|
};
|
|
174
126
|
deps.commands.execute(command);
|
|
175
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-ops.js","sourceRoot":"","sources":["../../src/base/base-ops.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"base-ops.js","sourceRoot":"","sources":["../../src/base/base-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"territory.d.ts","sourceRoot":"","sources":["../../src/base/territory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"territory.d.ts","sourceRoot":"","sources":["../../src/base/territory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKxD,qFAAqF;AACrF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAqG/C;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC1B,SAAS,CAuBX"}
|
package/dist/base/territory.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { cellKey, worldToCell } from "../autotile.js";
|
|
2
|
-
import { MAP_ICON_TYPE } from "../map-icon-shape.js";
|
|
1
|
+
import { cellKey, parseCellKey, worldToCell } from "../autotile.js";
|
|
3
2
|
import { isTileMap } from "../tilemap-shape.js";
|
|
4
3
|
import { isBaseMap } from "./base-map-shape.js";
|
|
5
4
|
const EMPTY_CELLS = {};
|
|
@@ -17,23 +16,18 @@ function findTilemap(store) {
|
|
|
17
16
|
return s;
|
|
18
17
|
return undefined;
|
|
19
18
|
}
|
|
20
|
-
function collectBeacons(
|
|
21
|
-
const icons = new Map();
|
|
22
|
-
for (const [, s] of store.getShapes()) {
|
|
23
|
-
if (s.type === MAP_ICON_TYPE)
|
|
24
|
-
icons.set(s.id, s);
|
|
25
|
-
}
|
|
19
|
+
function collectBeacons(bases, tile) {
|
|
26
20
|
const out = [];
|
|
27
21
|
for (const [baseId, info] of Object.entries(bases)) {
|
|
28
|
-
if (!info.
|
|
29
|
-
continue;
|
|
30
|
-
const icon = icons.get(info.beaconIconId);
|
|
31
|
-
if (!icon)
|
|
22
|
+
if (!info.beaconCell)
|
|
32
23
|
continue;
|
|
24
|
+
const [col, row] = parseCellKey(info.beaconCell);
|
|
25
|
+
// Seed the core disk from the cell CENTRE (world coords), so the existing
|
|
26
|
+
// distance-based rasterization in build() is unchanged.
|
|
33
27
|
out.push({
|
|
34
28
|
baseId,
|
|
35
|
-
cx:
|
|
36
|
-
cy:
|
|
29
|
+
cx: (col + 0.5) * tile,
|
|
30
|
+
cy: (row + 0.5) * tile,
|
|
37
31
|
radius: info.radius,
|
|
38
32
|
});
|
|
39
33
|
}
|
|
@@ -103,13 +97,13 @@ export function computeTerritory(store, tile, exclude) {
|
|
|
103
97
|
const base = findBaseMap(store);
|
|
104
98
|
if (!base || Object.keys(base.bases).length === 0)
|
|
105
99
|
return {};
|
|
106
|
-
const beacons = collectBeacons(store, base.bases);
|
|
107
|
-
if (beacons.length === 0)
|
|
108
|
-
return {};
|
|
109
100
|
const tilemap = findTilemap(store);
|
|
110
101
|
const cells = tilemap?.cells ?? EMPTY_CELLS;
|
|
111
102
|
const handPaint = tilemap?.handPaint ?? EMPTY_HAND_PAINT;
|
|
112
103
|
const t = tilemap?.tile ?? tile;
|
|
104
|
+
const beacons = collectBeacons(base.bases, t);
|
|
105
|
+
if (beacons.length === 0)
|
|
106
|
+
return {};
|
|
113
107
|
const sig = signature(beacons, exclude);
|
|
114
108
|
// Keyed by the `cells` object: it gets a fresh identity on every paint/generate
|
|
115
109
|
// commit, and `handPaint` always changes alongside it, so this stays correct.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"territory.js","sourceRoot":"","sources":["../../src/base/territory.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"territory.js","sourceRoot":"","sources":["../../src/base/territory.ts"],"names":[],"mappings":"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"}
|
package/dist/generate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAW,eAAe,EAAa,MAAM,uBAAuB,CAAC;AAE7F,OAAO,EAAE,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAW,eAAe,EAAa,MAAM,uBAAuB,CAAC;AAE7F,OAAO,EAAE,KAAK,OAAO,EAAuB,MAAM,eAAe,CAAC;AAQlE,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACb;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAOhG;AAED,iFAAiF;AACjF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAc9C;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAcxE;AAED,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,GAAG,EAAE,OAAO,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CA4D9E"}
|
package/dist/generate.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createAddShapeCommand } from "@edv4h/usketch-store";
|
|
2
|
-
import { cellKey
|
|
2
|
+
import { cellKey } from "./autotile.js";
|
|
3
3
|
import { genStateStore } from "./gen-state.js";
|
|
4
4
|
import { GENERATORS_BY_ID } from "./generators/index.js";
|
|
5
|
-
import { isTileMap, makeTileMap } from "./tilemap-shape.js";
|
|
5
|
+
import { isTileMap, makeTileMap, tilemapBounds } from "./tilemap-shape.js";
|
|
6
6
|
/** Hard cap so a zoomed-out "view" generation can't explode into millions of cells. */
|
|
7
7
|
const MAX_BOX_DIM = 256;
|
|
8
8
|
/** The single shared tilemap, creating it (live) if none exists yet. */
|
|
@@ -79,8 +79,10 @@ export function generateIntoBox(deps, req) {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
Object.assign(next, gen.generate({ box, seed: req.seed, params: req.params }));
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
// Bounds enclose the shape's placed icons too, so generating terrain doesn't
|
|
83
|
+
// clip an icon-only cell out of the box.
|
|
84
|
+
const prevBounds = tilemapBounds(prev, shape.icons, tile);
|
|
85
|
+
const nextBounds = tilemapBounds(next, shape.icons, tile);
|
|
84
86
|
if (created) {
|
|
85
87
|
// Newly created this action: commit as an add so undo deletes it and redo
|
|
86
88
|
// re-adds it (updateShape on a deleted id would no-op, breaking redo).
|
package/dist/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAA4B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Render the icon `iconKey` filling the cell `(col,row)` on a `tile`-sized grid,
|
|
4
|
+
* i.e. the world rect `{ x: col*tile, y: row*tile, width: tile, height: tile }`.
|
|
5
|
+
* Returns `null` for an unknown icon key. Same transform chain as the old
|
|
6
|
+
* `MapIconBody`: translate to the cell, scale the viewBox to the tile, offset a
|
|
7
|
+
* non-zero viewBox origin.
|
|
8
|
+
*/
|
|
9
|
+
export declare function renderIconAt(iconKey: string, col: number, row: number, tile: number, keyPrefix?: string): ReactElement | null;
|
|
10
|
+
//# sourceMappingURL=icon-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-render.d.ts","sourceRoot":"","sources":["../src/icon-render.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAS1C;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC3B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,SAAS,SAAK,GACZ,YAAY,GAAG,IAAI,CAgBrB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ICONS_BY_KEY } from "./icons.js";
|
|
3
|
+
import { renderSvgNodes } from "./svg-nodes.js";
|
|
4
|
+
function parseViewBox(vb) {
|
|
5
|
+
const p = vb.split(/[\s,]+/).map(Number);
|
|
6
|
+
return [p[0] || 0, p[1] || 0, p[2] || 48, p[3] || 48];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Render the icon `iconKey` filling the cell `(col,row)` on a `tile`-sized grid,
|
|
10
|
+
* i.e. the world rect `{ x: col*tile, y: row*tile, width: tile, height: tile }`.
|
|
11
|
+
* Returns `null` for an unknown icon key. Same transform chain as the old
|
|
12
|
+
* `MapIconBody`: translate to the cell, scale the viewBox to the tile, offset a
|
|
13
|
+
* non-zero viewBox origin.
|
|
14
|
+
*/
|
|
15
|
+
export function renderIconAt(iconKey, col, row, tile, keyPrefix = "") {
|
|
16
|
+
const icon = ICONS_BY_KEY.get(iconKey);
|
|
17
|
+
if (!icon)
|
|
18
|
+
return null;
|
|
19
|
+
const [vx, vy, vw, vh] = parseViewBox(icon.viewBox);
|
|
20
|
+
const sx = tile / vw;
|
|
21
|
+
const sy = tile / vh;
|
|
22
|
+
const x = col * tile;
|
|
23
|
+
const y = row * tile;
|
|
24
|
+
return (_jsx("g", { transform: `translate(${x} ${y}) scale(${sx} ${sy}) translate(${-vx} ${-vy})`, children: renderSvgNodes(icon.nodes, `icon-${icon.key}-${col}-${row}`) }, `${keyPrefix}${col},${row}`));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=icon-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-render.js","sourceRoot":"","sources":["../src/icon-render.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,SAAS,YAAY,CAAC,EAAU;IAC/B,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC3B,OAAe,EACf,GAAW,EACX,GAAW,EACX,IAAY,EACZ,SAAS,GAAG,EAAE;IAEd,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;IACrB,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IACrB,OAAO,CACN,YAEC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,YAE5E,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,IAHxD,GAAG,SAAS,GAAG,GAAG,IAAI,GAAG,EAAE,CAI7B,CACJ,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,9 +5,10 @@ export { type BaseGenParams, baseTerrainAt, DEFAULT_BASE_GEN } from "./base-terr
|
|
|
5
5
|
export { type GenState, genStateStore, useGenState, type WorldRect } from "./gen-state.js";
|
|
6
6
|
export { resolveTilemap } from "./generate.js";
|
|
7
7
|
export { GENERATORS, type GenContext, type GenParam, type MapGenerator, } from "./generators/index.js";
|
|
8
|
+
export { renderIconAt } from "./icon-render.js";
|
|
8
9
|
export { ICONS, type IconCategory, type IconDef } from "./icons.js";
|
|
9
10
|
export { DEFAULT_INFINITE_SEED, disableInfiniteTerrain, type EnableInfiniteTerrainOptions, enableInfiniteTerrain, getInfiniteSeed, isInfiniteTerrainEnabled, setInfiniteSeed, } from "./infinite-terrain.js";
|
|
10
|
-
export {
|
|
11
|
+
export { createMapApi, getMapApi, type MapApi, mapService } from "./map-service.js";
|
|
11
12
|
export { MAP_TOOL_ID } from "./map-tool-id.js";
|
|
12
13
|
export type { ColorMode } from "./palette.js";
|
|
13
14
|
export { createMapPlugin, type MapPluginOptions } from "./plugin.js";
|