@edv4h/usketch-plugin-map 0.10.0 → 0.11.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/base/base-layer.d.ts +3 -1
- package/dist/base/base-layer.d.ts.map +1 -1
- package/dist/base/base-layer.js +60 -43
- package/dist/base/base-layer.js.map +1 -1
- package/dist/base/territory-style.d.ts +63 -0
- package/dist/base/territory-style.d.ts.map +1 -0
- package/dist/base/territory-style.js +34 -0
- package/dist/base/territory-style.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/map-service.d.ts +14 -1
- package/dist/map-service.d.ts.map +1 -1
- package/dist/map-service.js +36 -1
- package/dist/map-service.js.map +1 -1
- package/dist/plugin.d.ts +7 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +4 -2
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { BoardStore, RenderMode } from "@edv4h/usketch-shared";
|
|
2
|
-
|
|
2
|
+
import type { ResolvedTerritoryStyle } from "./territory-style.js";
|
|
3
|
+
export declare function BaseAreaLayer({ store, renderMode, style, }: {
|
|
3
4
|
store: BoardStore;
|
|
4
5
|
renderMode?: RenderMode;
|
|
6
|
+
style: ResolvedTerritoryStyle;
|
|
5
7
|
}): import("react").JSX.Element | null;
|
|
6
8
|
//# sourceMappingURL=base-layer.d.ts.map
|
|
@@ -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;AAWpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AA4FnE,wBAAgB,aAAa,CAAC,EAC7B,KAAK,EACL,UAAU,EACV,KAAK,GACL,EAAE;IACF,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,EAAE,sBAAsB,CAAC;CAC9B,sCA0IA"}
|
package/dist/base/base-layer.js
CHANGED
|
@@ -8,14 +8,11 @@ import { useMapToolState } from "../tool-state.js";
|
|
|
8
8
|
import { baseRegionAnchors, getBaseMap } from "./base-ops.js";
|
|
9
9
|
import { useBaseState } from "./base-state.js";
|
|
10
10
|
import { computeTerritory } from "./territory.js";
|
|
11
|
-
const FILL_OPACITY = 0.24;
|
|
12
|
-
const BORDER_RATIO = 0.16; // border strip thickness, fraction of a tile
|
|
13
|
-
const BORDER_OPACITY = 0.85;
|
|
14
11
|
/** Full tier: per-cell translucent fill + base-coloured border on region edges. */
|
|
15
|
-
function renderFull(owner, bases, tile, visible) {
|
|
12
|
+
function renderFull(owner, bases, tile, visible, style) {
|
|
16
13
|
const nodes = [];
|
|
17
14
|
const asCells = owner; // exposedEdges only compares values
|
|
18
|
-
const bt =
|
|
15
|
+
const bt = style.border.ratio * tile;
|
|
19
16
|
const range = visibleCellRange(visible, tile);
|
|
20
17
|
const emit = (c, r) => {
|
|
21
18
|
const baseId = owner[`${c},${r}`];
|
|
@@ -26,9 +23,9 @@ function renderFull(owner, bases, tile, visible) {
|
|
|
26
23
|
return;
|
|
27
24
|
const x = c * tile;
|
|
28
25
|
const y = r * tile;
|
|
29
|
-
nodes.push(_jsx("rect", { x: x, y: y, width: tile, height: tile, fill: color, fillOpacity:
|
|
26
|
+
nodes.push(_jsx("rect", { x: x, y: y, width: tile, height: tile, fill: color, fillOpacity: style.fillOpacity }, `${c},${r}:f`));
|
|
30
27
|
const edge = exposedEdges(asCells, c, r);
|
|
31
|
-
const strip = (sx, sy, sw, sh, k) => (_jsx("rect", { x: sx, y: sy, width: sw, height: sh, fill: color, fillOpacity:
|
|
28
|
+
const strip = (sx, sy, sw, sh, k) => (_jsx("rect", { x: sx, y: sy, width: sw, height: sh, fill: color, fillOpacity: style.border.opacity }, k));
|
|
32
29
|
if (edge.n)
|
|
33
30
|
nodes.push(strip(x, y, tile, bt, `${c},${r}:n`));
|
|
34
31
|
if (edge.s)
|
|
@@ -52,7 +49,7 @@ function renderFull(owner, bases, tile, visible) {
|
|
|
52
49
|
return nodes;
|
|
53
50
|
}
|
|
54
51
|
/** Coarse tier: flat translucent blocks (downsampled by owning base). */
|
|
55
|
-
function renderCoarse(owner, bases, tile, screenTilePx, visible) {
|
|
52
|
+
function renderCoarse(owner, bases, tile, screenTilePx, visible, fillOpacity) {
|
|
56
53
|
const factor = blockFactor(screenTilePx);
|
|
57
54
|
const bt = factor * tile;
|
|
58
55
|
const nodes = [];
|
|
@@ -67,11 +64,11 @@ function renderCoarse(owner, bases, tile, screenTilePx, visible) {
|
|
|
67
64
|
(x > visible.right || y > visible.bottom || x + bt < visible.left || y + bt < visible.top)) {
|
|
68
65
|
continue;
|
|
69
66
|
}
|
|
70
|
-
nodes.push(_jsx("rect", { x: x, y: y, width: bt, height: bt, fill: color, fillOpacity:
|
|
67
|
+
nodes.push(_jsx("rect", { x: x, y: y, width: bt, height: bt, fill: color, fillOpacity: fillOpacity }, bk));
|
|
71
68
|
}
|
|
72
69
|
return nodes;
|
|
73
70
|
}
|
|
74
|
-
export function BaseAreaLayer({ store, renderMode, }) {
|
|
71
|
+
export function BaseAreaLayer({ store, renderMode, style, }) {
|
|
75
72
|
const tool = useMapToolState();
|
|
76
73
|
const baseState = useBaseState();
|
|
77
74
|
const [, force] = useState(0);
|
|
@@ -87,11 +84,12 @@ export function BaseAreaLayer({ store, renderMode, }) {
|
|
|
87
84
|
cancelAnimationFrame(rafRef.current);
|
|
88
85
|
};
|
|
89
86
|
}, [store]);
|
|
90
|
-
//
|
|
91
|
-
// submode) — mirrors the EnterBanner indicator gating.
|
|
92
|
-
//
|
|
87
|
+
// By default territory paint is only shown while editing bases (map tool + base
|
|
88
|
+
// submode) — mirrors the EnterBanner indicator gating. Hosts can opt into
|
|
89
|
+
// `show: "always"` to surface areas to end users. Check mode first so base-mode
|
|
90
|
+
// gating skips the shape scan in getBaseMap on every non-base-mode re-render.
|
|
93
91
|
const inBaseMode = store.getActiveToolId() === MAP_TOOL_ID && tool.mode === "base";
|
|
94
|
-
if (!inBaseMode)
|
|
92
|
+
if (style.show === "base-mode" && !inBaseMode)
|
|
95
93
|
return null;
|
|
96
94
|
const base = getBaseMap(store);
|
|
97
95
|
if (!base)
|
|
@@ -106,43 +104,62 @@ export function BaseAreaLayer({ store, renderMode, }) {
|
|
|
106
104
|
const screenTilePx = tile * vp.zoom;
|
|
107
105
|
const detail = tileDetail(screenTilePx, renderMode);
|
|
108
106
|
const cells = detail === "full"
|
|
109
|
-
? renderFull(territory, base.bases, tile, visible)
|
|
110
|
-
: renderCoarse(territory, base.bases, tile, screenTilePx, visible);
|
|
111
|
-
// Labels: HTML chips at screen coords (crisp, constant size). Hidden when coarse
|
|
112
|
-
|
|
107
|
+
? renderFull(territory, base.bases, tile, visible, style)
|
|
108
|
+
: renderCoarse(territory, base.bases, tile, screenTilePx, visible, style.fillOpacity);
|
|
109
|
+
// Labels: HTML chips at screen coords (crisp, constant size). Hidden when coarse
|
|
110
|
+
// or disabled via style.
|
|
111
|
+
const anchors = detail === "full" && style.label.enabled ? baseRegionAnchors(territory, base.bases, tile) : [];
|
|
113
112
|
// Radius rings around each base's beacon CELL. Full detail only; radius + colour
|
|
114
113
|
// come from the base registry (no icon shapes involved anymore).
|
|
115
114
|
const rings = [];
|
|
116
|
-
if (detail === "full") {
|
|
115
|
+
if (detail === "full" && style.ring.enabled) {
|
|
117
116
|
for (const [baseId, info] of Object.entries(base.bases)) {
|
|
118
117
|
if (!info.beaconCell)
|
|
119
118
|
continue;
|
|
120
119
|
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:
|
|
120
|
+
rings.push(_jsx("circle", { cx: (col + 0.5) * tile, cy: (row + 0.5) * tile, r: info.radius * tile, fill: "none", stroke: info.color, strokeWidth: style.ring.strokeWidth, strokeDasharray: style.ring.dash, opacity: style.ring.opacity, vectorEffect: "non-scaling-stroke" }, `ring-${baseId}`));
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
123
|
+
const labelRender = style.label.render;
|
|
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) => {
|
|
125
|
+
const left = a.x * vp.zoom + vp.x;
|
|
126
|
+
const top = a.y * vp.zoom + vp.y;
|
|
127
|
+
if (labelRender) {
|
|
128
|
+
// Host owns the chip; the layer only positions it at the region centre.
|
|
129
|
+
const custom = labelRender(a);
|
|
130
|
+
if (custom == null)
|
|
131
|
+
return null;
|
|
132
|
+
return (_jsx("div", { style: {
|
|
133
|
+
position: "absolute",
|
|
134
|
+
left,
|
|
135
|
+
top,
|
|
136
|
+
transform: "translate(-50%,-50%)",
|
|
137
|
+
pointerEvents: "none",
|
|
138
|
+
}, children: custom }, a.baseId));
|
|
139
|
+
}
|
|
140
|
+
return (_jsxs("div", { style: {
|
|
141
|
+
position: "absolute",
|
|
142
|
+
left,
|
|
143
|
+
top,
|
|
144
|
+
transform: "translate(-50%,-50%)",
|
|
145
|
+
display: "flex",
|
|
146
|
+
alignItems: "center",
|
|
147
|
+
gap: 5,
|
|
148
|
+
padding: "3px 9px",
|
|
149
|
+
background: "rgba(255,255,255,.9)",
|
|
150
|
+
border: `2px solid ${a.color}`,
|
|
151
|
+
borderRadius: 20,
|
|
152
|
+
font: "700 12px system-ui, sans-serif",
|
|
153
|
+
color: "#1c1c1c",
|
|
154
|
+
whiteSpace: "nowrap",
|
|
155
|
+
boxShadow: "0 2px 8px rgba(0,0,0,.14)",
|
|
156
|
+
}, children: [_jsx("span", { style: {
|
|
157
|
+
width: 10,
|
|
158
|
+
height: 10,
|
|
159
|
+
borderRadius: "50%",
|
|
160
|
+
background: a.color,
|
|
161
|
+
flex: "none",
|
|
162
|
+
} }), a.name] }, a.baseId));
|
|
163
|
+
})] }));
|
|
147
164
|
}
|
|
148
165
|
//# sourceMappingURL=base-layer.js.map
|
|
@@ -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,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;
|
|
1
|
+
{"version":3,"file":"base-layer.js","sourceRoot":"","sources":["../../src/base/base-layer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { BaseRegionAnchor } from "./base-ops.js";
|
|
3
|
+
/**
|
|
4
|
+
* Host-facing appearance options for the base "territory" (領域) overlay drawn by
|
|
5
|
+
* BaseAreaLayer. Everything is optional and merges over the defaults, so passing
|
|
6
|
+
* `{}` keeps the stock look. Pass via `createMapPlugin({ territory })`.
|
|
7
|
+
*/
|
|
8
|
+
export interface TerritoryStyle {
|
|
9
|
+
/** Per-cell translucent fill opacity (default 0.24). */
|
|
10
|
+
fillOpacity?: number;
|
|
11
|
+
/** Base-coloured strip drawn on the exposed edges of each region. */
|
|
12
|
+
border?: {
|
|
13
|
+
/** Strip thickness as a fraction of a tile (default 0.16). */
|
|
14
|
+
ratio?: number;
|
|
15
|
+
opacity?: number;
|
|
16
|
+
};
|
|
17
|
+
/** Dashed radius ring around each base's beacon cell. */
|
|
18
|
+
ring?: {
|
|
19
|
+
enabled?: boolean;
|
|
20
|
+
strokeWidth?: number;
|
|
21
|
+
/** SVG `stroke-dasharray` (default `"8 6"`). */
|
|
22
|
+
dash?: string;
|
|
23
|
+
opacity?: number;
|
|
24
|
+
};
|
|
25
|
+
/** Name-chip label at each region's centre. */
|
|
26
|
+
label?: {
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Custom label content for a region. The layer positions the returned node
|
|
30
|
+
* at the region centre (screen space); you own its look. Return `null` to
|
|
31
|
+
* draw no label for that region. Omit for the stock pill.
|
|
32
|
+
*/
|
|
33
|
+
render?: (anchor: BaseRegionAnchor) => ReactNode;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* When to paint the territory overlay:
|
|
37
|
+
* - `"base-mode"` (default) — only while editing bases (map tool + base submode),
|
|
38
|
+
* - `"always"` — whenever any territory exists (e.g. showing areas to end users).
|
|
39
|
+
*/
|
|
40
|
+
show?: "base-mode" | "always";
|
|
41
|
+
}
|
|
42
|
+
export interface ResolvedTerritoryStyle {
|
|
43
|
+
fillOpacity: number;
|
|
44
|
+
border: {
|
|
45
|
+
ratio: number;
|
|
46
|
+
opacity: number;
|
|
47
|
+
};
|
|
48
|
+
ring: {
|
|
49
|
+
enabled: boolean;
|
|
50
|
+
strokeWidth: number;
|
|
51
|
+
dash: string;
|
|
52
|
+
opacity: number;
|
|
53
|
+
};
|
|
54
|
+
label: {
|
|
55
|
+
enabled: boolean;
|
|
56
|
+
render?: (anchor: BaseRegionAnchor) => ReactNode;
|
|
57
|
+
};
|
|
58
|
+
show: "base-mode" | "always";
|
|
59
|
+
}
|
|
60
|
+
/** The stock territory look (matches what shipped before the style option). */
|
|
61
|
+
export declare const DEFAULT_TERRITORY_STYLE: ResolvedTerritoryStyle;
|
|
62
|
+
export declare function resolveTerritoryStyle(style?: TerritoryStyle): ResolvedTerritoryStyle;
|
|
63
|
+
//# sourceMappingURL=territory-style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"territory-style.d.ts","sourceRoot":"","sources":["../../src/base/territory-style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,MAAM,CAAC,EAAE;QACR,8DAA8D;QAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,yDAAyD;IACzD,IAAI,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gDAAgD;QAChD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,+CAA+C;IAC/C,KAAK,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;;;WAIG;QACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,SAAS,CAAC;KACjD,CAAC;IACF;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,SAAS,CAAA;KAAE,CAAC;IAC9E,IAAI,EAAE,WAAW,GAAG,QAAQ,CAAC;CAC7B;AAED,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,EAAE,sBAMrC,CAAC;AAOF,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,sBAAsB,CAoBpF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** The stock territory look (matches what shipped before the style option). */
|
|
2
|
+
export const DEFAULT_TERRITORY_STYLE = {
|
|
3
|
+
fillOpacity: 0.24,
|
|
4
|
+
border: { ratio: 0.16, opacity: 0.85 },
|
|
5
|
+
ring: { enabled: true, strokeWidth: 2, dash: "8 6", opacity: 0.7 },
|
|
6
|
+
label: { enabled: true },
|
|
7
|
+
show: "base-mode",
|
|
8
|
+
};
|
|
9
|
+
/** Keep the default whenever an override value is `undefined` (avoids NaN downstream). */
|
|
10
|
+
function pick(base, override) {
|
|
11
|
+
return override === undefined ? base : override;
|
|
12
|
+
}
|
|
13
|
+
export function resolveTerritoryStyle(style) {
|
|
14
|
+
const d = DEFAULT_TERRITORY_STYLE;
|
|
15
|
+
return {
|
|
16
|
+
fillOpacity: pick(d.fillOpacity, style?.fillOpacity),
|
|
17
|
+
border: {
|
|
18
|
+
ratio: pick(d.border.ratio, style?.border?.ratio),
|
|
19
|
+
opacity: pick(d.border.opacity, style?.border?.opacity),
|
|
20
|
+
},
|
|
21
|
+
ring: {
|
|
22
|
+
enabled: pick(d.ring.enabled, style?.ring?.enabled),
|
|
23
|
+
strokeWidth: pick(d.ring.strokeWidth, style?.ring?.strokeWidth),
|
|
24
|
+
dash: pick(d.ring.dash, style?.ring?.dash),
|
|
25
|
+
opacity: pick(d.ring.opacity, style?.ring?.opacity),
|
|
26
|
+
},
|
|
27
|
+
label: {
|
|
28
|
+
enabled: pick(d.label.enabled, style?.label?.enabled),
|
|
29
|
+
render: style?.label?.render,
|
|
30
|
+
},
|
|
31
|
+
show: pick(d.show, style?.show),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=territory-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"territory-style.js","sourceRoot":"","sources":["../../src/base/territory-style.ts"],"names":[],"mappings":"AAmDA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC9D,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACtC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;IAClE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACxB,IAAI,EAAE,WAAW;CACjB,CAAC;AAEF,0FAA0F;AAC1F,SAAS,IAAI,CAAI,IAAO,EAAE,QAAuB;IAChD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAsB;IAC3D,MAAM,CAAC,GAAG,uBAAuB,CAAC;IAClC,OAAO;QACN,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;QACpD,MAAM,EAAE;YACP,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;YACjD,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;SACvD;QACD,IAAI,EAAE;YACL,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;YACnD,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC;YAC/D,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;SACnD;QACD,KAAK,EAAE;YACN,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;YACrD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;SAC5B;QACD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;KAC/B,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { BASE_MAP_TYPE, type BaseInfo, type BaseMapShapeData, } from "./base/base-map-shape.js";
|
|
2
|
+
export { type BaseRegionAnchor, baseIdAtWorld, baseRegionAnchors, getBaseMap, } from "./base/base-ops.js";
|
|
2
3
|
export { type BaseToolState, baseStateStore, useBaseState } from "./base/base-state.js";
|
|
3
4
|
export { computeTerritory, type Territory } from "./base/territory.js";
|
|
5
|
+
export { DEFAULT_TERRITORY_STYLE, type ResolvedTerritoryStyle, resolveTerritoryStyle, type TerritoryStyle, } from "./base/territory-style.js";
|
|
4
6
|
export { type BaseGenParams, baseTerrainAt, DEFAULT_BASE_GEN } from "./base-terrain.js";
|
|
5
7
|
export { type GenState, genStateStore, useGenState, type WorldRect } from "./gen-state.js";
|
|
6
8
|
export { resolveTilemap } from "./generate.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,gBAAgB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,gBAAgB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,KAAK,gBAAgB,EACrB,aAAa,EACb,iBAAiB,EACjB,UAAU,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EACN,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,KAAK,cAAc,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,KAAK,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3F,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACN,UAAU,EACV,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAMpE,OAAO,EACN,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,4BAA4B,EACjC,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,eAAe,GACf,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EACN,KAAK,iBAAiB,EACtB,eAAe,EACf,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAMhC,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACN,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACN,YAAY,EACZ,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,EACZ,KAAK,gBAAgB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,SAAS,EACT,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,cAAc,EACd,eAAe,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,uBAAuB,EAC5B,kBAAkB,GAClB,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export { BASE_MAP_TYPE, } from "./base/base-map-shape.js";
|
|
2
|
+
export { baseIdAtWorld, baseRegionAnchors, getBaseMap, } from "./base/base-ops.js";
|
|
2
3
|
export { baseStateStore, useBaseState } from "./base/base-state.js";
|
|
3
4
|
export { computeTerritory } from "./base/territory.js";
|
|
5
|
+
// ── Territory (領域) overlay appearance — pass via `createMapPlugin({ territory })`.
|
|
6
|
+
export { DEFAULT_TERRITORY_STYLE, resolveTerritoryStyle, } from "./base/territory-style.js";
|
|
4
7
|
export { baseTerrainAt, DEFAULT_BASE_GEN } from "./base-terrain.js";
|
|
5
8
|
export { genStateStore, useGenState } from "./gen-state.js";
|
|
6
9
|
// NOTE: `resolveTilemap` returns the FIRST tilemap in iteration order (or creates
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,GAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAsB,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAsB,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAiB,aAAa,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAC3F,kFAAkF;AAClF,gFAAgF;AAChF,wEAAwE;AACxE,qEAAqE;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACN,UAAU,GAIV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAmC,MAAM,YAAY,CAAC;AACpE,iEAAiE;AACjE,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,mFAAmF;AACnF,OAAO,EACN,qBAAqB,EACrB,sBAAsB,EAEtB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,eAAe,GACf,MAAM,uBAAuB,CAAC;AAC/B,8EAA8E;AAC9E,kFAAkF;AAClF,kFAAkF;AAClF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAe,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAyB,MAAM,aAAa,CAAC;AACrE,OAAO,EAEN,eAAe,EACf,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAGN,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAoC,MAAM,cAAc,CAAC;AAC1E,OAAO,EACN,YAAY,EACZ,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,GAEZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,SAAS,EAGT,cAAc,EACd,eAAe,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEN,kBAAkB,GAClB,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,GAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEN,aAAa,EACb,iBAAiB,EACjB,UAAU,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAsB,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AACvE,oFAAoF;AACpF,OAAO,EACN,uBAAuB,EAEvB,qBAAqB,GAErB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAsB,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAiB,aAAa,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAC3F,kFAAkF;AAClF,gFAAgF;AAChF,wEAAwE;AACxE,qEAAqE;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACN,UAAU,GAIV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAmC,MAAM,YAAY,CAAC;AACpE,iEAAiE;AACjE,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,mFAAmF;AACnF,OAAO,EACN,qBAAqB,EACrB,sBAAsB,EAEtB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,eAAe,GACf,MAAM,uBAAuB,CAAC;AAC/B,8EAA8E;AAC9E,kFAAkF;AAClF,kFAAkF;AAClF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAe,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAyB,MAAM,aAAa,CAAC;AACrE,OAAO,EAEN,eAAe,EACf,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAGN,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAoC,MAAM,cAAc,CAAC;AAC1E,OAAO,EACN,YAAY,EACZ,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,GAEZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,SAAS,EAGT,cAAc,EACd,eAAe,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEN,kBAAkB,GAClB,MAAM,2BAA2B,CAAC"}
|
package/dist/map-service.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { type BoardStore, type ServiceRegistry } from "@edv4h/usketch-shared";
|
|
2
|
+
import type { BaseInfo } from "./base/base-map-shape.js";
|
|
3
|
+
import { type BaseRegionAnchor } from "./base/base-ops.js";
|
|
4
|
+
import { type Territory } from "./base/territory.js";
|
|
2
5
|
import { type EnableInfiniteTerrainOptions } from "./infinite-terrain.js";
|
|
3
6
|
import type { ReactiveStore } from "./reactive-store.js";
|
|
4
7
|
import { type MapRenderConfig } from "./render-config.js";
|
|
@@ -13,13 +16,23 @@ export interface MapApi {
|
|
|
13
16
|
isInfiniteTerrainEnabled(): boolean;
|
|
14
17
|
/** A number enables/re-seeds, `null` disables. */
|
|
15
18
|
setInfiniteSeed(seed: number | null): void;
|
|
19
|
+
/** The full derived territory: `cellKey("c,r") → baseId`. */
|
|
20
|
+
getTerritory(): Territory;
|
|
21
|
+
/** Base id owning the cell at a world point, or `null`. */
|
|
22
|
+
getBaseAt(x: number, y: number): string | null;
|
|
23
|
+
/** The base registry: `baseId → { name, color, radius, beaconCell }`. */
|
|
24
|
+
getBases(): Record<string, BaseInfo>;
|
|
25
|
+
/** One anchor per base that owns cells: centre (world), colour, name, cell count. */
|
|
26
|
+
getBaseRegions(): BaseRegionAnchor[];
|
|
27
|
+
/** Fire `listener` whenever the territory could have changed (shapes / exclude set). Returns an unsubscribe. */
|
|
28
|
+
onTerritoryChange(listener: () => void): () => void;
|
|
16
29
|
toolState: ReactiveStore<MapToolState>;
|
|
17
30
|
renderConfig: ReactiveStore<MapRenderConfig>;
|
|
18
31
|
}
|
|
19
32
|
/** Typed service handle for the map API. Provide in `setup`, get via {@link getMapApi}. */
|
|
20
33
|
export declare const mapService: import("@edv4h/usketch-shared").ServiceHandle<MapApi>;
|
|
21
34
|
/** Build the API bound to a specific board store (called in the plugin's setup). */
|
|
22
|
-
export declare function createMapApi(store: BoardStore): MapApi;
|
|
35
|
+
export declare function createMapApi(store: BoardStore, defaultTile?: number): MapApi;
|
|
23
36
|
/**
|
|
24
37
|
* Host accessor: `getMapApi(app.services)?.enableInfiniteTerrain({ seed })`. Returns
|
|
25
38
|
* `undefined` when the map plugin isn't active. Works with `ctx.services` too.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-service.d.ts","sourceRoot":"","sources":["../src/map-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAiB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAEN,KAAK,4BAA4B,EAKjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"map-service.d.ts","sourceRoot":"","sources":["../src/map-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAiB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACN,KAAK,gBAAgB,EAIrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAEN,KAAK,4BAA4B,EAKjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,iBAAiB,CAAC;AAEpE,6DAA6D;AAC7D,MAAM,WAAW,MAAM;IAEtB,kFAAkF;IAClF,qBAAqB,CAAC,IAAI,CAAC,EAAE,4BAA4B,GAAG,MAAM,CAAC;IACnE,sBAAsB,IAAI,IAAI,CAAC;IAC/B,uDAAuD;IACvD,eAAe,IAAI,MAAM,GAAG,IAAI,CAAC;IACjC,wBAAwB,IAAI,OAAO,CAAC;IACpC,kDAAkD;IAClD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAG3C,6DAA6D;IAC7D,YAAY,IAAI,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,yEAAyE;IACzE,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,qFAAqF;IACrF,cAAc,IAAI,gBAAgB,EAAE,CAAC;IACrC,gHAAgH;IAChH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAKpD,SAAS,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACvC,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;CAC7C;AAED,2FAA2F;AAC3F,eAAO,MAAM,UAAU,uDAA8C,CAAC;AAEtE,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,SAAe,GAAG,MAAM,CAyClF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAEvE"}
|
package/dist/map-service.js
CHANGED
|
@@ -4,19 +4,54 @@
|
|
|
4
4
|
// in docs/plugin-system-design.md: operation logic lives in plain functions, the
|
|
5
5
|
// HUD/actions call them, and the same functions are bundled into a service.
|
|
6
6
|
import { defineService } from "@edv4h/usketch-shared";
|
|
7
|
+
import { baseIdAtWorld, baseRegionAnchors, getBaseMap, } from "./base/base-ops.js";
|
|
8
|
+
import { baseStateStore } from "./base/base-state.js";
|
|
9
|
+
import { computeTerritory } from "./base/territory.js";
|
|
7
10
|
import { disableInfiniteTerrain, enableInfiniteTerrain, getInfiniteSeed, isInfiniteTerrainEnabled, setInfiniteSeed, } from "./infinite-terrain.js";
|
|
8
11
|
import { renderConfigStore } from "./render-config.js";
|
|
12
|
+
import { DEFAULT_TILE } from "./tilemap-shape.js";
|
|
9
13
|
import { toolStateStore } from "./tool-state.js";
|
|
10
14
|
/** Typed service handle for the map API. Provide in `setup`, get via {@link getMapApi}. */
|
|
11
15
|
export const mapService = defineService("usketch-plugin-map");
|
|
12
16
|
/** Build the API bound to a specific board store (called in the plugin's setup). */
|
|
13
|
-
export function createMapApi(store) {
|
|
17
|
+
export function createMapApi(store, defaultTile = DEFAULT_TILE) {
|
|
18
|
+
// Resolve the base-map, its tile, and the derived territory ONCE per call — the
|
|
19
|
+
// base-map carries its own tile (fall back to the configured one). computeTerritory
|
|
20
|
+
// is memoised, but getBaseMap is a shape scan, so share it across the readout.
|
|
21
|
+
const snapshot = () => {
|
|
22
|
+
const baseMap = getBaseMap(store);
|
|
23
|
+
const tile = baseMap?.tile ?? defaultTile;
|
|
24
|
+
const territory = computeTerritory(store, tile, new Set(baseStateStore.get().excludeTerrains));
|
|
25
|
+
return { baseMap, tile, territory };
|
|
26
|
+
};
|
|
14
27
|
return {
|
|
15
28
|
enableInfiniteTerrain: (opts) => enableInfiniteTerrain(store, opts),
|
|
16
29
|
disableInfiniteTerrain: () => disableInfiniteTerrain(store),
|
|
17
30
|
getInfiniteSeed: () => getInfiniteSeed(store),
|
|
18
31
|
isInfiniteTerrainEnabled: () => isInfiniteTerrainEnabled(store),
|
|
19
32
|
setInfiniteSeed: (seed) => setInfiniteSeed(store, seed),
|
|
33
|
+
getTerritory: () => snapshot().territory,
|
|
34
|
+
getBaseAt: (x, y) => {
|
|
35
|
+
const { territory, tile } = snapshot();
|
|
36
|
+
return baseIdAtWorld(territory, x, y, tile);
|
|
37
|
+
},
|
|
38
|
+
getBases: () => getBaseMap(store)?.bases ?? {},
|
|
39
|
+
getBaseRegions: () => {
|
|
40
|
+
const { baseMap, tile, territory } = snapshot();
|
|
41
|
+
return baseRegionAnchors(territory, baseMap?.bases ?? {}, tile);
|
|
42
|
+
},
|
|
43
|
+
onTerritoryChange: (listener) => {
|
|
44
|
+
// Territory derives from the base-map + tilemap shapes and the exclude set.
|
|
45
|
+
const offShapes = store.onMutation((e) => {
|
|
46
|
+
if (e.type === "shape:added" || e.type === "shape:removed" || e.type === "shape:updated")
|
|
47
|
+
listener();
|
|
48
|
+
});
|
|
49
|
+
const offExclude = baseStateStore.subscribe(listener);
|
|
50
|
+
return () => {
|
|
51
|
+
offShapes();
|
|
52
|
+
offExclude();
|
|
53
|
+
};
|
|
54
|
+
},
|
|
20
55
|
toolState: toolStateStore,
|
|
21
56
|
renderConfig: renderConfigStore,
|
|
22
57
|
};
|
package/dist/map-service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-service.js","sourceRoot":"","sources":["../src/map-service.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AACjF,4EAA4E;AAC5E,OAAO,EAAmB,aAAa,EAAwB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"map-service.js","sourceRoot":"","sources":["../src/map-service.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AACjF,4EAA4E;AAC5E,OAAO,EAAmB,aAAa,EAAwB,MAAM,uBAAuB,CAAC;AAE7F,OAAO,EAEN,aAAa,EACb,iBAAiB,EACjB,UAAU,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EACN,sBAAsB,EAEtB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,eAAe,GACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAwB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAqB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAiCpE,2FAA2F;AAC3F,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAS,oBAAoB,CAAC,CAAC;AAEtE,oFAAoF;AACpF,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,WAAW,GAAG,YAAY;IACzE,gFAAgF;IAChF,oFAAoF;IACpF,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,GAAG,EAAE;QACrB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,WAAW,CAAC;QAC1C,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACrC,CAAC,CAAC;IACF,OAAO;QACN,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;QACnE,sBAAsB,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAC3D,eAAe,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;QAC7C,wBAAwB,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC;QAC/D,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;QACvD,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS;QACxC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;YACvC,OAAO,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE;QAC9C,cAAc,EAAE,GAAG,EAAE;YACpB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,CAAC;YAChD,OAAO,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;QACD,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC/B,4EAA4E;YAC5E,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe;oBACvF,QAAQ,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACtD,OAAO,GAAG,EAAE;gBACX,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;YACd,CAAC,CAAC;QACH,CAAC;QACD,SAAS,EAAE,cAAc;QACzB,YAAY,EAAE,iBAAiB;KAC/B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,QAAyB;IAClD,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { UsketchPlugin } from "@edv4h/usketch-shared";
|
|
2
|
+
import { type TerritoryStyle } from "./base/territory-style.js";
|
|
2
3
|
import type { ColorMode } from "./palette.js";
|
|
3
4
|
import { type LineStyle } from "./render-config.js";
|
|
4
5
|
import { type TerrainKey } from "./terrain.js";
|
|
@@ -13,6 +14,12 @@ export interface MapPluginOptions {
|
|
|
13
14
|
* HUD "空きマス" setting.
|
|
14
15
|
*/
|
|
15
16
|
emptyTerrain?: TerrainKey;
|
|
17
|
+
/**
|
|
18
|
+
* Appearance of the base "territory" (領域) overlay — fill / border / ring /
|
|
19
|
+
* label, plus whether to show it only while editing bases (`"base-mode"`,
|
|
20
|
+
* default) or always. Merges over the defaults; omit for the stock look.
|
|
21
|
+
*/
|
|
22
|
+
territory?: TerritoryStyle;
|
|
16
23
|
}
|
|
17
24
|
export declare function createMapPlugin(options?: MapPluginOptions): UsketchPlugin;
|
|
18
25
|
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI1E,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAcvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,WAAW,gBAAgB;IAChC,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;CAC3B;AAOD,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,aAAa,CA2L7E"}
|
package/dist/plugin.js
CHANGED
|
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { BaseAreaLayer } from "./base/base-layer.js";
|
|
3
3
|
import { BASE_MAP_TYPE, createBaseMapShapeDefinition } from "./base/base-map-shape.js";
|
|
4
4
|
import { EnterBanner } from "./base/enter-banner.js";
|
|
5
|
+
import { resolveTerritoryStyle } from "./base/territory-style.js";
|
|
5
6
|
import { genStateStore } from "./gen-state.js";
|
|
6
7
|
import { registerMapHud } from "./hud/register-map-hud.js";
|
|
7
8
|
import { disableInfiniteTerrain, enableInfiniteTerrain, getInfiniteSeed, isInfiniteTerrainEnabled, } from "./infinite-terrain.js";
|
|
@@ -20,6 +21,7 @@ const ICON_LAYER_ID = "usketch-map:icons";
|
|
|
20
21
|
const ENTER_BANNER_ID = "usketch-map:enter-banner";
|
|
21
22
|
export function createMapPlugin(options = {}) {
|
|
22
23
|
const tile = options.tile ?? DEFAULT_TILE;
|
|
24
|
+
const territoryStyle = resolveTerritoryStyle(options.territory);
|
|
23
25
|
if (options.defaultColorMode || options.defaultLineStyle || options.emptyTerrain) {
|
|
24
26
|
renderConfigStore.set({
|
|
25
27
|
colorMode: options.defaultColorMode,
|
|
@@ -48,7 +50,7 @@ export function createMapPlugin(options = {}) {
|
|
|
48
50
|
id: BASE_LAYER_ID,
|
|
49
51
|
order: 42,
|
|
50
52
|
fixed: true,
|
|
51
|
-
render: (lctx) => _jsx(BaseAreaLayer, { store: ctx.store, renderMode: lctx.renderMode }),
|
|
53
|
+
render: (lctx) => (_jsx(BaseAreaLayer, { store: ctx.store, renderMode: lctx.renderMode, style: territoryStyle })),
|
|
52
54
|
});
|
|
53
55
|
// ── World-layer icons (grid data on the tilemap). Order 44: above terrain
|
|
54
56
|
// (40) and base areas (42), below host resource shapes (DOM shapes=50) —
|
|
@@ -184,7 +186,7 @@ export function createMapPlugin(options = {}) {
|
|
|
184
186
|
// Provided LAST, after every throw-prone registration above, so a setup
|
|
185
187
|
// failure can't leak the service (createApp only rolls back a returned
|
|
186
188
|
// teardown). ──
|
|
187
|
-
const unprovideService = mapService.provide(ctx.services, createMapApi(ctx.store));
|
|
189
|
+
const unprovideService = mapService.provide(ctx.services, createMapApi(ctx.store, tile));
|
|
188
190
|
return () => {
|
|
189
191
|
unprovideService();
|
|
190
192
|
ctx.layers.unregister(TERRAIN_LAYER_ID);
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAkB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAmB,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
|