@edv4h/usketch-plugin-map 0.6.0 → 0.7.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/README.md CHANGED
@@ -42,3 +42,37 @@ const plugins = [
42
42
  | `tile` | `40` | タイル辺(world 単位) |
43
43
  | `defaultColorMode` | `"color"` | 初期配色(`color` / `mono`) |
44
44
  | `defaultLineStyle` | `"wobble"` | 初期線種(`wobble` / `clean`) |
45
+
46
+ ## ツール状態の公開 API(#927 / v0.6.0)
47
+
48
+ Control HUD(`debug-hud`)以外の**ホスト独自 UI**(ActionRing / ラジアルメニュー / 独自ツールバー)
49
+ からツールの mode / terrain / icon を切り替えられるよう、内部の app-local reactive store を公開している。
50
+ `renderConfigStore` と同じ **public reactive store(`get()` / `set(patch)` / `subscribe()`)** パターン。
51
+ いずれも同期対象外(presentation/interaction state)。
52
+
53
+ | export | 内容 |
54
+ |---|---|
55
+ | `toolStateStore` / `MapToolState` / `useMapToolState()` | `mode` / `terrain` / `iconKey` / `excludeTerrains` |
56
+ | `MAP_MODES` | モードの順序付き配列(`brush\|eraser\|fill\|region\|stamp\|generate\|base`)。`MapMode` はここから派生(実行時に列挙可能) |
57
+ | `rangeEraseStore` / `RangeEraseTargets` / `useRangeEraseTargets()` | 範囲消しの対象 |
58
+ | `genStateStore` / `GenState` / `WorldRect` / `useGenState()` | 生成 UI(アルゴリズム / seed / params / ドラッグ矩形) |
59
+ | `baseStateStore` / `BaseToolState` / `useBaseState()` | 拠点ツールの選択状態 |
60
+ | `ReactiveStore` | 各 store の共通インターフェース |
61
+ | `TERRAINS` / `ICONS` | 既存 export(terrain / icon の定義一覧) |
62
+
63
+ ```tsx
64
+ import { toolStateStore, MAP_MODES, TERRAINS, useMapToolState } from "@edv4h/usketch-plugin-map";
65
+
66
+ // 独自 ActionRing から直接セット
67
+ toolStateStore.set({ mode: "brush", terrain: "grass" });
68
+
69
+ // React で購読
70
+ function ModePicker() {
71
+ const { mode } = useMapToolState();
72
+ return MAP_MODES.map((m) => (
73
+ <button key={m} aria-pressed={m === mode} onClick={() => toolStateStore.set({ mode: m })}>
74
+ {m}
75
+ </button>
76
+ ));
77
+ }
78
+ ```
@@ -49,4 +49,26 @@ export declare function floodFill(cells: Cells, startCol: number, startRow: numb
49
49
  * e.g. water, untouched).
50
50
  */
51
51
  export declare function regionFillCells(cells: Cells, startCol: number, startRow: number, exclude: ReadonlySet<string>, box?: CellBox): string[];
52
+ /** A terrain lookup for any cell (override ?? base ?? empty); may be undefined. */
53
+ export type CellSampler = (col: number, row: number) => TerrainKey | undefined;
54
+ export interface SamplerFloodResult {
55
+ /** Cell keys forming the connected region (empty when the start is undefined). */
56
+ cells: string[];
57
+ /**
58
+ * `true` if the flood hit `maxCells` before the region closed — i.e. the region
59
+ * is not enclosed (or is larger than the cap). Callers should treat this as
60
+ * "cannot fill" rather than filling an arbitrary blob.
61
+ */
62
+ truncated: boolean;
63
+ }
64
+ /**
65
+ * Flood fill over a **sampler** (override ?? base ?? empty) rather than the sparse
66
+ * override map — this is what makes region fill work on the infinite base terrain,
67
+ * where unpainted cells still have a real (generated) terrain. Because that field
68
+ * is boundless, the flood is capped by `maxCells` and uses **breadth-first** order
69
+ * so a capped result is a compact blob around the start. If it hits the cap before
70
+ * the region closes, `truncated` is set and the caller aborts (the region is open,
71
+ * e.g. an infinite ocean). An `undefined` start terrain yields an empty region.
72
+ */
73
+ export declare function samplerFloodFill(sample: CellSampler, startCol: number, startRow: number, maxCells: number): SamplerFloodResult;
52
74
  //# sourceMappingURL=autotile.d.ts.map
@@ -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,CAmBnE;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"}
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,CAmBnE;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
@@ -108,4 +108,50 @@ export function regionFillCells(cells, startCol, startRow, exclude, box) {
108
108
  return [];
109
109
  return floodFill(cells, startCol, startRow, box);
110
110
  }
111
+ /**
112
+ * Flood fill over a **sampler** (override ?? base ?? empty) rather than the sparse
113
+ * override map — this is what makes region fill work on the infinite base terrain,
114
+ * where unpainted cells still have a real (generated) terrain. Because that field
115
+ * is boundless, the flood is capped by `maxCells` and uses **breadth-first** order
116
+ * so a capped result is a compact blob around the start. If it hits the cap before
117
+ * the region closes, `truncated` is set and the caller aborts (the region is open,
118
+ * e.g. an infinite ocean). An `undefined` start terrain yields an empty region.
119
+ */
120
+ export function samplerFloodFill(sample, startCol, startRow, maxCells) {
121
+ const target = sample(startCol, startRow);
122
+ if (target === undefined)
123
+ return { cells: [], truncated: false };
124
+ // Non-positive cap: nothing can be filled. Return a deterministic empty result
125
+ // rather than reporting a bogus truncation.
126
+ if (maxCells <= 0)
127
+ return { cells: [], truncated: false };
128
+ const out = [];
129
+ const seen = new Set([cellKey(startCol, startRow)]);
130
+ const queue = [[startCol, startRow]];
131
+ let head = 0;
132
+ while (head < queue.length) {
133
+ const [c, r] = queue[head++];
134
+ if (sample(c, r) !== target)
135
+ continue;
136
+ // A matching cell we have no room for ⇒ the region extends past the cap, so
137
+ // it is not (provably) enclosed. A region of *exactly* maxCells cells closes
138
+ // with no matching cell left to dequeue, and is correctly reported enclosed.
139
+ if (out.length >= maxCells)
140
+ return { cells: out, truncated: true };
141
+ out.push(cellKey(c, r));
142
+ for (const [nc, nr] of [
143
+ [c + 1, r],
144
+ [c - 1, r],
145
+ [c, r + 1],
146
+ [c, r - 1],
147
+ ]) {
148
+ const k = cellKey(nc, nr);
149
+ if (!seen.has(k)) {
150
+ seen.add(k);
151
+ queue.push([nc, nr]);
152
+ }
153
+ }
154
+ }
155
+ return { cells: out, truncated: false };
156
+ }
111
157
  //# sourceMappingURL=autotile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autotile.js","sourceRoot":"","sources":["../src/autotile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autotile.js","sourceRoot":"","sources":["../src/autotile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { type Cells } from "./autotile.js";
2
+ import type { TerrainKey } from "./terrain.js";
3
+ /**
4
+ * Parameters that fully pin the infinite base terrain's appearance. Recorded on
5
+ * the tilemap shape (see `TileMapShapeData.baseGen`) so a board's world is FROZEN
6
+ * at creation: tuning these defaults later — or swapping the algorithm — will not
7
+ * silently mutate existing boards, because each carries the exact inputs it was
8
+ * generated with. `version` selects the generation *algorithm* implementation
9
+ * (kept around per version for backward-compat); the rest are its tunable inputs.
10
+ *
11
+ * - `scale` base frequency of the elevation field (smaller ⇒ larger continents)
12
+ * - `seaLevel` fraction of the normalised range below which is water
13
+ * - `gMin/gMax` fixed global contrast window: measured `fbm` output is ~[-0.4, 0.4]
14
+ * centred near 0, so this window stretches its bulk to [0,1], giving `seaLevel`
15
+ * a stable meaning AND keeping bands continuous across the whole infinite plane
16
+ * (a box-local stretch would seam at chunk borders).
17
+ */
18
+ export interface BaseGenParams {
19
+ version: number;
20
+ scale: number;
21
+ seaLevel: number;
22
+ gMin: number;
23
+ gMax: number;
24
+ }
25
+ /** Current generation-algorithm version. Bump when the algorithm changes shape. */
26
+ export declare const BASE_GEN_VERSION = 1;
27
+ /**
28
+ * Params stamped onto NEW boards. Points at the current recommended version and
29
+ * may advance later; a shape's own recorded `baseGen` always wins over this, so
30
+ * advancing the default never touches an existing board.
31
+ */
32
+ export declare const DEFAULT_BASE_GEN: BaseGenParams;
33
+ /**
34
+ * Resolve a shape's (possibly `undefined`) `baseGen` to concrete params. A missing
35
+ * value means the shape predates versioning ⇒ it is v1 by definition. `baseGen` is
36
+ * untrusted synced/persisted data, so it is also **validated**: corrupted params
37
+ * (NaN/Infinity, `gMin >= gMax`, `seaLevel`/`scale` out of range) or an
38
+ * unsupported `version` fall back to the FROZEN v1 params rather than producing a
39
+ * NaN-normalised, all-"snow" base across the whole infinite plane.
40
+ */
41
+ export declare function resolveBaseGen(gen: BaseGenParams | undefined): BaseGenParams;
42
+ /**
43
+ * Base terrain for a world cell — deterministic for a given `seed`, defined for
44
+ * every integer coord, and seamless (sampled in continuous world space).
45
+ */
46
+ export declare function baseTerrainAt(seed: number, col: number, row: number, gen?: BaseGenParams): TerrainKey;
47
+ /** Drop all cached chunks (e.g. on seed change). */
48
+ export declare function clearBaseCache(): void;
49
+ /**
50
+ * A terrain sampler for one render: a painted override wins, otherwise the
51
+ * generated base (when `baseSeed` is set), otherwise the flat `empty` fallback.
52
+ * With a `baseSeed` it is **total** (always returns a terrain) — that is what
53
+ * lets rendering fill the whole viewport and lets autotiling resolve every
54
+ * neighbour without a chunk-boundary gap.
55
+ */
56
+ export type TerrainSampler = (col: number, row: number) => TerrainKey | undefined;
57
+ export declare function makeTerrainSampler(cells: Cells, baseSeed: number | null, empty: TerrainKey | null, gen?: BaseGenParams): TerrainSampler;
58
+ //# sourceMappingURL=base-terrain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-terrain.d.ts","sourceRoot":"","sources":["../src/base-terrain.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAW,MAAM,eAAe,CAAC;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACb;AAED,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAWlC;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAsB,CAAC;AAKtD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,aAAa,CAc5E;AA+CD;;;GAGG;AACH,wBAAgB,aAAa,CAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,aAAgC,GACnC,UAAU,CAGZ;AAED,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;AAElF,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,KAAK,EAAE,UAAU,GAAG,IAAI,EACxB,GAAG,GAAE,aAAgC,GACnC,cAAc,CAKhB"}
@@ -0,0 +1,107 @@
1
+ // Deterministic, infinite base terrain — a pure function of (seed, world cell).
2
+ // Because every cell is defined for any integer coord, the map can be panned
3
+ // forever (no stored data for unedited space) AND autotiling never sees an
4
+ // "unset" neighbour at a chunk boundary (there are no boundaries in the field).
5
+ import { cellKey } from "./autotile.js";
6
+ import { elevationToTerrain } from "./generators/index.js";
7
+ import { fbm } from "./generators/noise.js";
8
+ /** Current generation-algorithm version. Bump when the algorithm changes shape. */
9
+ export const BASE_GEN_VERSION = 1;
10
+ /** The v1 parameter set — FROZEN. Never edit these values; add a new version. */
11
+ const V1_GEN = {
12
+ version: 1,
13
+ scale: 0.05,
14
+ seaLevel: 0.42,
15
+ gMin: -0.25,
16
+ gMax: 0.25,
17
+ };
18
+ /**
19
+ * Params stamped onto NEW boards. Points at the current recommended version and
20
+ * may advance later; a shape's own recorded `baseGen` always wins over this, so
21
+ * advancing the default never touches an existing board.
22
+ */
23
+ export const DEFAULT_BASE_GEN = V1_GEN;
24
+ /** Generation versions this build knows how to render. */
25
+ const SUPPORTED_VERSIONS = new Set([1]);
26
+ /**
27
+ * Resolve a shape's (possibly `undefined`) `baseGen` to concrete params. A missing
28
+ * value means the shape predates versioning ⇒ it is v1 by definition. `baseGen` is
29
+ * untrusted synced/persisted data, so it is also **validated**: corrupted params
30
+ * (NaN/Infinity, `gMin >= gMax`, `seaLevel`/`scale` out of range) or an
31
+ * unsupported `version` fall back to the FROZEN v1 params rather than producing a
32
+ * NaN-normalised, all-"snow" base across the whole infinite plane.
33
+ */
34
+ export function resolveBaseGen(gen) {
35
+ if (!gen)
36
+ return V1_GEN;
37
+ const { version, scale, seaLevel, gMin, gMax } = gen;
38
+ const valid = SUPPORTED_VERSIONS.has(version) &&
39
+ Number.isFinite(scale) &&
40
+ scale > 0 &&
41
+ Number.isFinite(seaLevel) &&
42
+ seaLevel >= 0 &&
43
+ seaLevel <= 1 &&
44
+ Number.isFinite(gMin) &&
45
+ Number.isFinite(gMax) &&
46
+ gMin < gMax;
47
+ return valid ? gen : V1_GEN;
48
+ }
49
+ const clamp01 = (v) => (v < 0 ? 0 : v > 1 ? 1 : v);
50
+ // ── Per-chunk cache ──
51
+ // `baseTerrainAt` is called per visible cell every frame; caching a chunk's
52
+ // terrains once and evicting far chunks (LRU) keeps it cheap while panning.
53
+ const CHUNK = 16;
54
+ const MAX_CHUNKS = 1024;
55
+ const cache = new Map();
56
+ /** Compact signature so chunks generated with different params never collide. */
57
+ const genSig = (g) => `${g.version}|${g.scale}|${g.seaLevel}|${g.gMin}|${g.gMax}`;
58
+ function chunkGrid(seed, cx, cy, gen) {
59
+ const key = `${genSig(gen)}:${seed}:${cx}:${cy}`;
60
+ const hit = cache.get(key);
61
+ if (hit) {
62
+ // LRU touch: re-insert so it's most-recently-used.
63
+ cache.delete(key);
64
+ cache.set(key, hit);
65
+ return hit;
66
+ }
67
+ const grid = new Array(CHUNK * CHUNK);
68
+ const baseC = cx * CHUNK;
69
+ const baseR = cy * CHUNK;
70
+ // v1 is the only algorithm today; `gen.version` is recorded so a future
71
+ // version can branch here while old boards keep rendering via their own params.
72
+ for (let r = 0; r < CHUNK; r++) {
73
+ for (let c = 0; c < CHUNK; c++) {
74
+ const e = fbm(seed, baseC + c, baseR + r, gen.scale);
75
+ const n = clamp01((e - gen.gMin) / (gen.gMax - gen.gMin));
76
+ grid[r * CHUNK + c] = elevationToTerrain(n, gen.seaLevel);
77
+ }
78
+ }
79
+ if (cache.size >= MAX_CHUNKS) {
80
+ const oldest = cache.keys().next().value;
81
+ if (oldest !== undefined)
82
+ cache.delete(oldest);
83
+ }
84
+ cache.set(key, grid);
85
+ return grid;
86
+ }
87
+ /** Positive modulo so negative world coords index into a chunk correctly. */
88
+ const mod = (n, m) => ((n % m) + m) % m;
89
+ /**
90
+ * Base terrain for a world cell — deterministic for a given `seed`, defined for
91
+ * every integer coord, and seamless (sampled in continuous world space).
92
+ */
93
+ export function baseTerrainAt(seed, col, row, gen = DEFAULT_BASE_GEN) {
94
+ const grid = chunkGrid(seed, Math.floor(col / CHUNK), Math.floor(row / CHUNK), gen);
95
+ return grid[mod(row, CHUNK) * CHUNK + mod(col, CHUNK)];
96
+ }
97
+ /** Drop all cached chunks (e.g. on seed change). */
98
+ export function clearBaseCache() {
99
+ cache.clear();
100
+ }
101
+ export function makeTerrainSampler(cells, baseSeed, empty, gen = DEFAULT_BASE_GEN) {
102
+ if (baseSeed != null) {
103
+ return (col, row) => cells[cellKey(col, row)] ?? baseTerrainAt(baseSeed, col, row, gen);
104
+ }
105
+ return (col, row) => cells[cellKey(col, row)] ?? empty ?? undefined;
106
+ }
107
+ //# sourceMappingURL=base-terrain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-terrain.js","sourceRoot":"","sources":["../src/base-terrain.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * fractal Brownian motion: sum of octaves of value noise. `scale` sets the base
3
- * frequency (world-cell → noise space). Returns a value normalised to [0,1].
3
+ * frequency (world-cell → noise space). The amplitude-weighted average keeps the
4
+ * output in the same **zero-centred ~[-0.5, 0.5)** domain as the value noise
5
+ * (empirically ≈[-0.41, 0.40] at the default scale) — it is NOT [0, 1].
4
6
  */
5
7
  export declare function fbm(seed: number, cx: number, cy: number, scale: number, octaves?: number): number;
6
8
  //# sourceMappingURL=noise.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../../src/generators/noise.ts"],"names":[],"mappings":"AAuBA;;;GAGG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,MAAM,CAa5F"}
1
+ {"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../../src/generators/noise.ts"],"names":[],"mappings":"AA0BA;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,MAAM,CAa5F"}
@@ -1,10 +1,13 @@
1
1
  // Deterministic value-noise elevation field (fBm) — no external deps.
2
- // Elevation is sampled per cell and normalised to [0,1].
2
+ // Elevation is sampled per cell. `hash2` is zero-centred (~[-0.5, 0.5)), so the
3
+ // noise and fBm below are likewise **centred on 0** (roughly [-0.5, 0.5)), NOT
4
+ // [0, 1). Consumers that want a band split apply their own contrast window.
3
5
  import { hash2 } from "./rng.js";
4
6
  function smoothstep(t) {
5
7
  return t * t * (3 - 2 * t);
6
8
  }
7
- /** Bilinear value noise at (x,y) using a seeded integer lattice. Range ~[0,1). */
9
+ /** Bilinear value noise at (x,y) using a seeded integer lattice. Zero-centred,
10
+ * range ~[-0.5, 0.5) (inherited from `hash2`). */
8
11
  function valueNoise2D(seed, x, y) {
9
12
  const x0 = Math.floor(x);
10
13
  const y0 = Math.floor(y);
@@ -20,7 +23,9 @@ function valueNoise2D(seed, x, y) {
20
23
  }
21
24
  /**
22
25
  * fractal Brownian motion: sum of octaves of value noise. `scale` sets the base
23
- * frequency (world-cell → noise space). Returns a value normalised to [0,1].
26
+ * frequency (world-cell → noise space). The amplitude-weighted average keeps the
27
+ * output in the same **zero-centred ~[-0.5, 0.5)** domain as the value noise
28
+ * (empirically ≈[-0.41, 0.40] at the default scale) — it is NOT [0, 1].
24
29
  */
25
30
  export function fbm(seed, cx, cy, scale, octaves = 4) {
26
31
  let amp = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"noise.js","sourceRoot":"","sources":["../../src/generators/noise.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,yDAAyD;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,SAAS,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,kFAAkF;AAClF,SAAS,YAAY,CAAC,IAAY,EAAE,CAAS,EAAE,CAAS;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACtC,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAU,EAAE,KAAa,EAAE,OAAO,GAAG,CAAC;IACnF,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,mDAAmD;QACnD,GAAG,IAAI,GAAG,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACjE,IAAI,IAAI,GAAG,CAAC;QACZ,GAAG,IAAI,GAAG,CAAC;QACX,IAAI,IAAI,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"noise.js","sourceRoot":"","sources":["../../src/generators/noise.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,SAAS,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED;kDACkD;AAClD,SAAS,YAAY,CAAC,IAAY,EAAE,CAAS,EAAE,CAAS;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACtC,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAU,EAAE,KAAa,EAAE,OAAO,GAAG,CAAC;IACnF,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,mDAAmD;QACnD,GAAG,IAAI,GAAG,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACjE,IAAI,IAAI,GAAG,CAAC;QACZ,GAAG,IAAI,GAAG,CAAC;QACX,IAAI,IAAI,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC"}
@@ -2,6 +2,11 @@
2
2
  export declare function mulberry32(seed: number): () => number;
3
3
  /** Coerce a user-entered seed (number or string) to a 32-bit unsigned int. */
4
4
  export declare function hashSeed(seed: number | string): number;
5
- /** Stable per-lattice-point value in [0,1) from (seed, x, y) — no allocation. */
5
+ /**
6
+ * Stable per-lattice-point value from (seed, x, y) — no allocation.
7
+ * NOTE: the final `h ^ (h >>> 16)` is a JS bitwise op, so it yields a *signed*
8
+ * int32; divided by 2^32 the result is **centred on 0 in ~[-0.5, 0.5)**, not
9
+ * [0, 1). Callers (value noise / fBm) rely on this zero-centring.
10
+ */
6
11
  export declare function hash2(seed: number, x: number, y: number): number;
7
12
  //# sourceMappingURL=rng.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rng.d.ts","sourceRoot":"","sources":["../../src/generators/rng.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,MAAM,CASrD;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQtD;AAED,iFAAiF;AACjF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhE"}
1
+ {"version":3,"file":"rng.d.ts","sourceRoot":"","sources":["../../src/generators/rng.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,MAAM,CASrD;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQtD;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKhE"}
@@ -22,10 +22,16 @@ export function hashSeed(seed) {
22
22
  }
23
23
  return h >>> 0;
24
24
  }
25
- /** Stable per-lattice-point value in [0,1) from (seed, x, y) — no allocation. */
25
+ /**
26
+ * Stable per-lattice-point value from (seed, x, y) — no allocation.
27
+ * NOTE: the final `h ^ (h >>> 16)` is a JS bitwise op, so it yields a *signed*
28
+ * int32; divided by 2^32 the result is **centred on 0 in ~[-0.5, 0.5)**, not
29
+ * [0, 1). Callers (value noise / fBm) rely on this zero-centring.
30
+ */
26
31
  export function hash2(seed, x, y) {
27
32
  let h = (seed ^ Math.imul(x | 0, 374761393) ^ Math.imul(y | 0, 668265263)) >>> 0;
28
33
  h = Math.imul(h ^ (h >>> 13), 1274126177) >>> 0;
34
+ // Signed int32 (top bit → negative) / 2^32 ⇒ ~[-0.5, 0.5).
29
35
  return (h ^ (h >>> 16)) / 4294967296;
30
36
  }
31
37
  //# sourceMappingURL=rng.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rng.js","sourceRoot":"","sources":["../../src/generators/rng.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,qDAAqD;AAErD,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;IACnB,OAAO,GAAG,EAAE;QACX,CAAC,IAAI,CAAC,CAAC;QACP,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC9C,CAAC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,QAAQ,CAAC,IAAqB;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,SAAS;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AAChB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,CAAS,EAAE,CAAS;IACvD,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"rng.js","sourceRoot":"","sources":["../../src/generators/rng.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,qDAAqD;AAErD,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;IACnB,OAAO,GAAG,EAAE;QACX,CAAC,IAAI,CAAC,CAAC;QACP,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC9C,CAAC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,QAAQ,CAAC,IAAqB;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,SAAS;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,CAAS,EAAE,CAAS;IACvD,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAChD,2DAA2D;IAC3D,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;AACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"map-layer.d.ts","sourceRoot":"","sources":["../src/map-layer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAWpE,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAsDhD,UAAU,SAAS;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACX;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC3C,IAAI,EAAE,MAAM,GACV,SAAS,GAAG,IAAI,CAQlB;AA6FD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI,CAS1E;AAED,wBAAgB,eAAe,CAAC,EAC/B,KAAK,EACL,UAAU,EACV,IAAI,EAAE,WAAW,GACjB,EAAE;IACF,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;CACb,+BA0GA"}
1
+ {"version":3,"file":"map-layer.d.ts","sourceRoot":"","sources":["../src/map-layer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkBpE,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAsDhD,UAAU,SAAS;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACX;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC3C,IAAI,EAAE,MAAM,GACV,SAAS,GAAG,IAAI,CAQlB;AA8LD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI,CAS1E;AAED,wBAAgB,eAAe,CAAC,EAC/B,KAAK,EACL,UAAU,EACV,IAAI,EAAE,WAAW,GACjB,EAAE;IACF,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;CACb,+BA6JA"}
package/dist/map-layer.js CHANGED
@@ -1,13 +1,14 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from "react";
3
3
  import { cellKey, exposedEdges, parseCellKey } from "./autotile.js";
4
+ import { baseTerrainAt, makeTerrainSampler, resolveBaseGen, } from "./base-terrain.js";
4
5
  import { genStateStore } from "./gen-state.js";
5
6
  import { blockFactor, downsampleCells, tileDetail } from "./lod.js";
6
7
  import { terrainCssVars } from "./palette.js";
7
8
  import { renderConfigStore } from "./render-config.js";
8
9
  import { renderSvgNodes } from "./svg-nodes.js";
9
10
  import { TERRAINS, terrainDarkVar, terrainPatternId } from "./terrain.js";
10
- import { isTileMap } from "./tilemap-shape.js";
11
+ import { isTileMap, seededTilemap } from "./tilemap-shape.js";
11
12
  export const WOBBLE_FILTER_ID = "uskmap-wobble";
12
13
  const GRID_PATTERN_ID = "uskmap-grid";
13
14
  const EDGE_RATIO = 0.22; // dark "one shade darker" ring thickness, fraction of a tile
@@ -103,6 +104,74 @@ function renderCells(cells, tile, detail, screenTilePx, visible, empty) {
103
104
  return renderFullCells(cells, tile, visible, empty);
104
105
  return renderCoarseCells(cells, tile, screenTilePx, visible);
105
106
  }
107
+ /**
108
+ * Infinite base terrain, full tier. Walks the visible cell RANGE and fills EVERY
109
+ * cell from `sample` (painted override, else generated base — always defined), so
110
+ * unpainted space shows generated terrain. Autotile edges compare `sample`d
111
+ * neighbours, which are total, so band borders read correctly with no gaps.
112
+ */
113
+ function renderInfiniteFull(sample, tile, visible) {
114
+ const range = visibleCellRange(visible, tile);
115
+ if (!range)
116
+ return [];
117
+ const nodes = [];
118
+ const t = EDGE_RATIO * tile;
119
+ for (let r = range.r0; r <= range.r1; r++) {
120
+ for (let c = range.c0; c <= range.c1; c++) {
121
+ const terrain = sample(c, r);
122
+ if (!terrain)
123
+ continue;
124
+ const x = c * tile;
125
+ const y = r * tile;
126
+ const k = cellKey(c, r);
127
+ nodes.push(_jsx("rect", { x: x, y: y, width: tile, height: tile, fill: `url(#${terrainPatternId(terrain)})`, stroke: CELL_LINE, strokeWidth: 1 }, `${k}:base`));
128
+ const dark = terrainDarkVar(terrain);
129
+ const strip = (sx, sy, sw, sh, sk) => (_jsx("rect", { x: sx, y: sy, width: sw, height: sh, fill: dark, opacity: EDGE_OPACITY }, sk));
130
+ if (sample(c, r - 1) !== terrain)
131
+ nodes.push(strip(x, y, tile, t, `${k}:n`));
132
+ if (sample(c, r + 1) !== terrain)
133
+ nodes.push(strip(x, y + tile - t, tile, t, `${k}:s`));
134
+ if (sample(c - 1, r) !== terrain)
135
+ nodes.push(strip(x, y, t, tile, `${k}:w`));
136
+ if (sample(c + 1, r) !== terrain)
137
+ nodes.push(strip(x + tile - t, y, t, tile, `${k}:e`));
138
+ }
139
+ }
140
+ return nodes;
141
+ }
142
+ /**
143
+ * Infinite base terrain, coarse tier. Flat-colour blocks over the visible block
144
+ * range sampled from the base field (bounded by on-screen blocks, not map size),
145
+ * with painted overrides downsampled on top.
146
+ */
147
+ function renderInfiniteCoarse(overrides, seed, tile, screenTilePx, visible, gen) {
148
+ if (!visible)
149
+ return [];
150
+ const factor = blockFactor(screenTilePx);
151
+ const bt = factor * tile;
152
+ const half = factor >> 1;
153
+ const nodes = [];
154
+ const bc0 = Math.floor(visible.left / bt);
155
+ const bc1 = Math.ceil(visible.right / bt) - 1;
156
+ const br0 = Math.floor(visible.top / bt);
157
+ const br1 = Math.ceil(visible.bottom / bt) - 1;
158
+ for (let br = br0; br <= br1; br++) {
159
+ for (let bc = bc0; bc <= bc1; bc++) {
160
+ const terrain = baseTerrainAt(seed, bc * factor + half, br * factor + half, gen);
161
+ nodes.push(_jsx("rect", { x: bc * bt, y: br * bt, width: bt, height: bt, fill: `var(--t-${terrain})` }, `b:${bc},${br}`));
162
+ }
163
+ }
164
+ // Painted overrides on top (only the edited area; bounded).
165
+ for (const [bk, terrain] of Object.entries(downsampleCells(overrides, factor))) {
166
+ const [bc, br] = parseCellKey(bk);
167
+ const x = bc * bt;
168
+ const y = br * bt;
169
+ if (culled(x, y, bt, visible))
170
+ continue;
171
+ nodes.push(_jsx("rect", { x: x, y: y, width: bt, height: bt, fill: `var(--t-${terrain})` }, `o:${bk}`));
172
+ }
173
+ return nodes;
174
+ }
106
175
  /** Visible world rect from the current viewport (best-effort, window-sized). */
107
176
  export function visibleWorldRect(store) {
108
177
  if (typeof window === "undefined")
@@ -149,6 +218,35 @@ export function MapTerrainLayer({ store, renderMode, tile: defaultTile, }) {
149
218
  const bgCoarse = tileDetail(defaultTile * vp.zoom, renderMode) === "coarse";
150
219
  // Match painted tiles: wobble the empty background + grid too at full detail.
151
220
  const bgWobble = cfg.lineStyle === "wobble" && !bgCoarse;
221
+ // Infinite base terrain: one pass fills the whole viewport from the base field
222
+ // (+ painted overrides + autotile), replacing the flat empty background and the
223
+ // per-tilemap render. The seed lives on the tilemap SHAPE (persisted + synced),
224
+ // so the generated world survives reloads and is shared with everyone on the
225
+ // board. Chosen deterministically (by id) so every synced client renders the
226
+ // same world even if several seeded tilemaps coexist.
227
+ const seededTm = seededTilemap(tilemaps);
228
+ const baseSeed = seededTm?.baseSeed ?? null;
229
+ // Generation params are frozen on the shape; missing ⇒ v1 (resolveBaseGen).
230
+ const baseGen = resolveBaseGen(seededTm?.baseGen);
231
+ const baseActive = baseSeed != null && !!visible;
232
+ let baseNodes = [];
233
+ let baseWobble = false;
234
+ if (baseActive && visible && baseSeed != null) {
235
+ // Overrides for the sampler. The common case is a single shared tilemap —
236
+ // reuse its `cells` directly (read-only here) to avoid copying every RAF
237
+ // frame; only allocate + merge when several tilemaps coexist. Merge in
238
+ // id order so overlapping cells resolve deterministically (highest id
239
+ // wins) — insertion order isn't consistent across synced clients.
240
+ const merged = tilemaps.length === 1
241
+ ? tilemaps[0].cells
242
+ : Object.assign({}, ...[...tilemaps].sort((a, b) => (a.id < b.id ? -1 : 1)).map((tm) => tm.cells));
243
+ const detail = tileDetail(defaultTile * vp.zoom, renderMode);
244
+ baseWobble = cfg.lineStyle === "wobble" && detail === "full";
245
+ baseNodes =
246
+ detail === "full"
247
+ ? renderInfiniteFull(makeTerrainSampler(merged, baseSeed, empty, baseGen), defaultTile, visible)
248
+ : renderInfiniteCoarse(merged, baseSeed, defaultTile, defaultTile * vp.zoom, visible, baseGen);
249
+ }
152
250
  return (_jsx("div", { style: {
153
251
  position: "absolute",
154
252
  inset: 0,
@@ -156,12 +254,12 @@ export function MapTerrainLayer({ store, renderMode, tile: defaultTile, }) {
156
254
  height: "100%",
157
255
  pointerEvents: "none",
158
256
  overflow: "hidden",
159
- }, children: _jsxs("svg", { width: "100%", height: "100%", style: { display: "block", overflow: "visible", ...cssVars }, children: [_jsx(MapDefs, { tile: defaultTile }), _jsxs("g", { transform: `translate(${vp.x} ${vp.y}) scale(${vp.zoom})`, children: [empty && visible && (_jsxs("g", { filter: bgWobble ? `url(#${WOBBLE_FILTER_ID})` : undefined, children: [_jsx("rect", { x: visible.left, y: visible.top, width: visible.width, height: visible.height, fill: bgCoarse ? `var(--t-${empty})` : `url(#${terrainPatternId(empty)})` }), !bgCoarse && (_jsx("rect", { x: visible.left, y: visible.top, width: visible.width, height: visible.height, fill: `url(#${GRID_PATTERN_ID})` }))] })), tilemaps.map((tm) => {
160
- const screenTilePx = tm.tile * vp.zoom;
161
- const detail = tileDetail(screenTilePx, renderMode);
162
- // Wobble only pays off (and is only visible) at full detail.
163
- const useWobble = cfg.lineStyle === "wobble" && detail === "full";
164
- return (_jsx("g", { filter: useWobble ? `url(#${WOBBLE_FILTER_ID})` : undefined, children: renderCells(tm.cells, tm.tile, detail, screenTilePx, visible, empty) }, tm.id));
165
- }), pending && (pending.w > 0 || pending.h > 0) && (_jsx("rect", { x: pending.x, y: pending.y, width: pending.w, height: pending.h, fill: "rgba(74,127,184,.14)", stroke: "#4A7FB8", strokeWidth: 2, strokeDasharray: "8 6", vectorEffect: "non-scaling-stroke" }))] })] }) }));
257
+ }, children: _jsxs("svg", { width: "100%", height: "100%", style: { display: "block", overflow: "visible", ...cssVars }, children: [_jsx(MapDefs, { tile: defaultTile }), _jsxs("g", { transform: `translate(${vp.x} ${vp.y}) scale(${vp.zoom})`, children: [baseActive ? (_jsx("g", { filter: baseWobble ? `url(#${WOBBLE_FILTER_ID})` : undefined, children: baseNodes })) : (_jsxs(_Fragment, { children: [empty && visible && (_jsxs("g", { filter: bgWobble ? `url(#${WOBBLE_FILTER_ID})` : undefined, children: [_jsx("rect", { x: visible.left, y: visible.top, width: visible.width, height: visible.height, fill: bgCoarse ? `var(--t-${empty})` : `url(#${terrainPatternId(empty)})` }), !bgCoarse && (_jsx("rect", { x: visible.left, y: visible.top, width: visible.width, height: visible.height, fill: `url(#${GRID_PATTERN_ID})` }))] })), tilemaps.map((tm) => {
258
+ const screenTilePx = tm.tile * vp.zoom;
259
+ const detail = tileDetail(screenTilePx, renderMode);
260
+ // Wobble only pays off (and is only visible) at full detail.
261
+ const useWobble = cfg.lineStyle === "wobble" && detail === "full";
262
+ return (_jsx("g", { filter: useWobble ? `url(#${WOBBLE_FILTER_ID})` : undefined, children: renderCells(tm.cells, tm.tile, detail, screenTilePx, visible, empty) }, tm.id));
263
+ })] })), pending && (pending.w > 0 || pending.h > 0) && (_jsx("rect", { x: pending.x, y: pending.y, width: pending.w, height: pending.h, fill: "rgba(74,127,184,.14)", stroke: "#4A7FB8", strokeWidth: 2, strokeDasharray: "8 6", vectorEffect: "non-scaling-stroke" }))] })] }) }));
166
264
  }
167
265
  //# sourceMappingURL=map-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"map-layer.js","sourceRoot":"","sources":["../src/map-layer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map-layer.js","sourceRoot":"","sources":["../src/map-layer.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"map-tool.d.ts","sourceRoot":"","sources":["../src/map-tool.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAKX,cAAc,EACd,MAAM,uBAAuB,CAAC;AA2D/B,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,MAAqB,GAAG,cAAc,CA0SnF"}
1
+ {"version":3,"file":"map-tool.d.ts","sourceRoot":"","sources":["../src/map-tool.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAKX,cAAc,EACd,MAAM,uBAAuB,CAAC;AAmE/B,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,MAAqB,GAAG,cAAc,CA4WnF"}
package/dist/map-tool.js CHANGED
@@ -1,14 +1,19 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createAddShapeCommand, createDeleteWithChildrenCommand, isEffectivelyHidden, isEffectivelyLocked, } from "@edv4h/usketch-store";
3
- import { cellKey, cellsBounds, floodFill, regionFillCells, worldToCell, } from "./autotile.js";
3
+ import { cellKey, cellsBounds, floodFill, regionFillCells, samplerFloodFill, worldToCell, } from "./autotile.js";
4
4
  import { createBase, getBaseMap, setBeacon } from "./base/base-ops.js";
5
5
  import { baseStateStore } from "./base/base-state.js";
6
+ import { makeTerrainSampler, resolveBaseGen } from "./base-terrain.js";
6
7
  import { genStateStore } from "./gen-state.js";
7
8
  import { generateIntoBox, resolveTilemap } from "./generate.js";
8
9
  import { ICONS_BY_KEY } from "./icons.js";
9
10
  import { MAP_ICON_TYPE, makeMapIcon } from "./map-icon-shape.js";
10
- import { DEFAULT_TILE } from "./tilemap-shape.js";
11
+ import { DEFAULT_TILE, isTileMap, seededTilemap } from "./tilemap-shape.js";
11
12
  import { toolStateStore } from "./tool-state.js";
13
+ // Hard cap on a single sampler-based fill over the infinite base terrain. A truly
14
+ // enclosed region terminates well below this; hitting it means the region is open
15
+ // (e.g. an infinite ocean), so the fill is aborted rather than painting a blob.
16
+ const MAX_FILL_CELLS = 8192;
12
17
  // Default colours cycled through when a base is auto-created on first beacon.
13
18
  const BASE_PALETTE = [
14
19
  "#EF5350",
@@ -72,24 +77,80 @@ export function createMapToolDefinition(tile = DEFAULT_TILE) {
72
77
  }
73
78
  applyCells(ctx, stroke.tilemapId, cells);
74
79
  }
80
+ /** The board's infinite-base config (seed + frozen gen), or null when off. */
81
+ function baseConfig(ctx) {
82
+ const tm = seededTilemap(ctx.store.getShapes().values());
83
+ return tm?.baseSeed != null ? { seed: tm.baseSeed, gen: resolveBaseGen(tm.baseGen) } : null;
84
+ }
85
+ /**
86
+ * Painted overrides as the RENDERER sees them: every tilemap's cells merged in
87
+ * id order (highest id wins), matching `map-layer`. The fill sampler must read
88
+ * this — not just the stroke tilemap — so the flooded region agrees with the
89
+ * terrain the user actually clicked when several tilemaps coexist.
90
+ */
91
+ function mergedOverrides(ctx) {
92
+ const tms = [...ctx.store.getShapes().values()].filter(isTileMap);
93
+ if (tms.length <= 1)
94
+ return tms[0] ? { ...tms[0].cells } : {};
95
+ return Object.assign({}, ...[...tms].sort((a, b) => (a.id < b.id ? -1 : 1)).map((tm) => tm.cells));
96
+ }
97
+ /**
98
+ * Region isn't enclosed (open terrain, e.g. infinite ocean) — don't paint an
99
+ * arbitrary capped blob. Emit an event so a HUD can surface a message (no toast
100
+ * yet), and no-op the fill. Intentionally no console output: an aborted open
101
+ * fill is an expected user outcome, not a warning.
102
+ */
103
+ function abortFill(ctx, scanned) {
104
+ ctx.events.emit("map:fill-aborted", { reason: "not-enclosed", scanned });
105
+ }
106
+ /** Painted-cell bounds as a flood box, or undefined for an empty tilemap. */
107
+ function paintedBox(cells) {
108
+ if (Object.keys(cells).length === 0)
109
+ return undefined;
110
+ const b = cellsBounds(cells, tile);
111
+ return {
112
+ minC: Math.floor(b.x / tile),
113
+ minR: Math.floor(b.y / tile),
114
+ maxC: Math.floor(b.x / tile) + b.width / tile - 1,
115
+ maxR: Math.floor(b.y / tile) + b.height / tile - 1,
116
+ };
117
+ }
118
+ /** Write `terrain` into every region key that differs; returns whether anything changed. */
119
+ function paintRegion(cells, keys, terrain) {
120
+ let changed = false;
121
+ for (const k of keys) {
122
+ if (cells[k] === terrain)
123
+ continue;
124
+ cells[k] = terrain;
125
+ changed = true;
126
+ }
127
+ return changed;
128
+ }
75
129
  function doFill(ctx, event) {
76
130
  if (!stroke)
77
131
  return;
78
132
  const [c, r] = worldToCell(event.worldPoint.x, event.worldPoint.y, tile);
79
133
  const { terrain } = toolStateStore.get();
80
134
  const cells = currentCells(ctx, stroke.tilemapId);
81
- // Empty-cell fills are bounded to the current painted region so the flood
82
- // is finite; painted-cell fills are naturally bounded by the region.
83
- const b = cellsBounds(cells, tile);
84
- const box = Object.keys(cells).length === 0
85
- ? undefined
86
- : {
87
- minC: Math.floor(b.x / tile),
88
- minR: Math.floor(b.y / tile),
89
- maxC: Math.floor(b.x / tile) + b.width / tile - 1,
90
- maxR: Math.floor(b.y / tile) + b.height / tile - 1,
91
- };
92
- const keys = floodFill(cells, c, r, box);
135
+ const base = baseConfig(ctx);
136
+ if (base) {
137
+ // Infinite base: flood over the SAMPLED terrain (merged overrides ?? base)
138
+ // so the click's visible terrain is honoured, capped + aborted when not
139
+ // enclosed. Read the merged view (all tilemaps) but write to the stroke one.
140
+ const sample = makeTerrainSampler(mergedOverrides(ctx), base.seed, null, base.gen);
141
+ const res = samplerFloodFill(sample, c, r, MAX_FILL_CELLS);
142
+ if (res.truncated) {
143
+ abortFill(ctx, res.cells.length);
144
+ return;
145
+ }
146
+ if (!paintRegion(cells, res.cells, terrain))
147
+ return;
148
+ applyCells(ctx, stroke.tilemapId, cells);
149
+ return;
150
+ }
151
+ // Finite board: empty-cell fills are bounded to the current painted region
152
+ // so the flood is finite; painted-cell fills are naturally bounded.
153
+ const keys = floodFill(cells, c, r, paintedBox(cells));
93
154
  if (keys.length === 0)
94
155
  return;
95
156
  for (const k of keys)
@@ -109,23 +170,25 @@ export function createMapToolDefinition(tile = DEFAULT_TILE) {
109
170
  const { terrain, excludeTerrains } = toolStateStore.get();
110
171
  const exclude = new Set(excludeTerrains);
111
172
  const cells = currentCells(ctx, stroke.tilemapId);
112
- const b = cellsBounds(cells, tile);
113
- const box = Object.keys(cells).length === 0
114
- ? undefined
115
- : {
116
- minC: Math.floor(b.x / tile),
117
- minR: Math.floor(b.y / tile),
118
- maxC: Math.floor(b.x / tile) + b.width / tile - 1,
119
- maxR: Math.floor(b.y / tile) + b.height / tile - 1,
120
- };
121
- let changed = false;
122
- for (const k of regionFillCells(cells, c, r, exclude, box)) {
123
- if (cells[k] === terrain)
124
- continue;
125
- cells[k] = terrain;
126
- changed = true;
173
+ const base = baseConfig(ctx);
174
+ if (base) {
175
+ const sample = makeTerrainSampler(mergedOverrides(ctx), base.seed, null, base.gen);
176
+ const start = sample(c, r);
177
+ // Clicking a protected (or empty) terrain is a no-op; since the flood only
178
+ // spreads across `start`, it can never reach a protected cell.
179
+ if (start === undefined || exclude.has(start))
180
+ return;
181
+ const res = samplerFloodFill(sample, c, r, MAX_FILL_CELLS);
182
+ if (res.truncated) {
183
+ abortFill(ctx, res.cells.length);
184
+ return;
185
+ }
186
+ if (!paintRegion(cells, res.cells, terrain))
187
+ return;
188
+ applyCells(ctx, stroke.tilemapId, cells);
189
+ return;
127
190
  }
128
- if (!changed)
191
+ if (!paintRegion(cells, regionFillCells(cells, c, r, exclude, paintedBox(cells)), terrain))
129
192
  return;
130
193
  applyCells(ctx, stroke.tilemapId, cells);
131
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"map-tool.js","sourceRoot":"","sources":["../src/map-tool.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map-tool.js","sourceRoot":"","sources":["../src/map-tool.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAS1E,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;CAC1B;AAMD,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,aAAa,CA+G7E"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAY1E,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;AAWzD,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;CAC1B;AAMD,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,aAAa,CAmL7E"}
package/dist/plugin.js CHANGED
@@ -2,6 +2,9 @@ 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 { DEFAULT_BASE_GEN } from "./base-terrain.js";
6
+ import { genStateStore } from "./gen-state.js";
7
+ import { resolveTilemap } from "./generate.js";
5
8
  import { registerMapHud } from "./hud/register-map-hud.js";
6
9
  import { MAP_ICON_TYPE, mapIconShapeDefinition } from "./map-icon-shape.js";
7
10
  import { MapTerrainLayer } from "./map-layer.js";
@@ -10,7 +13,7 @@ import { MAP_TOOL_ID } from "./map-tool-id.js";
10
13
  import { createRangeEraseToolDefinition, RANGE_ERASE_TOOL_ID } from "./range-erase-tool.js";
11
14
  import { renderConfigStore } from "./render-config.js";
12
15
  import { TERRAINS } from "./terrain.js";
13
- import { createTileMapShapeDefinition, DEFAULT_TILE, TILEMAP_TYPE } from "./tilemap-shape.js";
16
+ import { createTileMapShapeDefinition, DEFAULT_TILE, isTileMap, lowestTilemap, seededTilemap, TILEMAP_TYPE, } from "./tilemap-shape.js";
14
17
  const TERRAIN_LAYER_ID = "usketch-map:terrain";
15
18
  const BASE_LAYER_ID = "usketch-map:base";
16
19
  const ENTER_BANNER_ID = "usketch-map:enter-banner";
@@ -57,6 +60,10 @@ export function createMapPlugin(options = {}) {
57
60
  // ── Controls: all map operations live on the Control HUD (no bespoke
58
61
  // on-canvas palette). Toggle the HUD with the backtick key. ──
59
62
  const unregisterMapHud = registerMapHud(ctx, tile);
63
+ // The infinite-terrain seed is read from the seeded tilemap shape (board
64
+ // data — persisted + synced), not from app-local render config. Chosen
65
+ // deterministically so the HUD agrees with the renderer and across clients.
66
+ const currentBaseSeed = () => seededTilemap(ctx.store.getShapes().values())?.baseSeed ?? null;
60
67
  // ── Tweaks as declarative HUD settings ──
61
68
  const unregisterHud = ctx.hud.registerSettings({
62
69
  id: "usketch-map:tweaks",
@@ -90,10 +97,20 @@ export function createMapPlugin(options = {}) {
90
97
  ...TERRAINS.map((t) => ({ value: t.key, label: t.name })),
91
98
  ],
92
99
  },
100
+ // Infinite procedurally-generated base terrain: fills all unpainted
101
+ // space deterministically so the world can be panned forever.
102
+ { name: "infinite", label: "無限地形", type: "boolean" },
103
+ { name: "seed", label: "シード", type: "number", min: 0, max: 999999, step: 1 },
93
104
  ],
94
105
  get: (name) => {
95
106
  if (name === "emptyTerrain")
96
107
  return renderConfigStore.get().emptyTerrain ?? "none";
108
+ // infinite/seed live on the tilemap SHAPE (persisted + synced), not on the
109
+ // app-local render config — so the generated world survives reload.
110
+ if (name === "infinite")
111
+ return currentBaseSeed() != null;
112
+ if (name === "seed")
113
+ return currentBaseSeed() ?? genStateStore.get().seed;
97
114
  return renderConfigStore.get()[name];
98
115
  },
99
116
  set: (name, value) => {
@@ -107,8 +124,62 @@ export function createMapPlugin(options = {}) {
107
124
  renderConfigStore.set({
108
125
  emptyTerrain: value === "none" ? null : value,
109
126
  });
127
+ else if (name === "infinite") {
128
+ const on = value === true || value === "true";
129
+ if (on) {
130
+ // Stamp the seed onto a tilemap so it persists + syncs. Target the
131
+ // same shape every client would: an already-seeded tilemap if present,
132
+ // else the lowest-id existing tilemap; only create one when the board
133
+ // is blank. (resolveTilemap's insertion-order pick isn't stable across
134
+ // synced peers, so it's the last resort.)
135
+ const seed = currentBaseSeed() ?? genStateStore.get().seed;
136
+ const target = seededTilemap(ctx.store.getShapes().values()) ??
137
+ lowestTilemap(ctx.store.getShapes().values());
138
+ const id = target?.id ?? resolveTilemap(ctx.store, tile).id;
139
+ // Freeze the generation contract on the shape. Reuse the target's own
140
+ // recorded gen if it has one (so an off→on toggle keeps the same world
141
+ // even after the default advances); else stamp the current default.
142
+ ctx.store.updateShape(id, {
143
+ baseSeed: seed,
144
+ baseGen: target?.baseGen ?? DEFAULT_BASE_GEN,
145
+ });
146
+ }
147
+ else {
148
+ for (const [id, s] of ctx.store.getShapes())
149
+ if (isTileMap(s) && s.baseSeed != null)
150
+ ctx.store.updateShape(id, { baseSeed: undefined });
151
+ }
152
+ }
153
+ else if (name === "seed") {
154
+ // Coerce to a finite integer (matches step:1); ignore junk so a bad
155
+ // value can't turn baseSeed into NaN → NaN elevations everywhere.
156
+ const seed = Math.trunc(Number(value));
157
+ if (!Number.isFinite(seed))
158
+ return;
159
+ // Remember on the gen store, and re-seed any tilemap that already has a base.
160
+ genStateStore.set({ seed });
161
+ for (const [id, s] of ctx.store.getShapes())
162
+ if (isTileMap(s) && s.baseSeed != null)
163
+ ctx.store.updateShape(id, { baseSeed: seed });
164
+ }
165
+ },
166
+ // Re-read on look-and-feel changes (renderConfig) AND shape mutations (the
167
+ // tilemap shape now carries infinite/seed), so the toggle reflects the shape
168
+ // even when edited elsewhere or by another client. Filter to shape events —
169
+ // not viewport/selection — so panning/zooming doesn't re-evaluate the HUD.
170
+ subscribe: (listener) => {
171
+ const unsubConfig = renderConfigStore.subscribe(listener);
172
+ const unsubStore = ctx.store.onMutation((e) => {
173
+ if (e.type === "shape:added" ||
174
+ e.type === "shape:removed" ||
175
+ e.type === "shape:updated")
176
+ listener();
177
+ });
178
+ return () => {
179
+ unsubConfig();
180
+ unsubStore();
181
+ };
110
182
  },
111
- subscribe: renderConfigStore.subscribe,
112
183
  });
113
184
  return () => {
114
185
  ctx.layers.unregister(TERRAIN_LAYER_ID);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { BoundingBox, ShapeData, ShapeDefinition } from "@edv4h/usketch-shared";
2
2
  import { type Cells } from "./autotile.js";
3
+ import type { BaseGenParams } from "./base-terrain.js";
3
4
  export declare const TILEMAP_TYPE = "tilemap";
4
5
  export declare const DEFAULT_TILE = 40;
5
6
  export interface TileMapShapeData extends ShapeData {
@@ -13,8 +14,37 @@ export interface TileMapShapeData extends ShapeData {
13
14
  * subset of `cells`.
14
15
  */
15
16
  handPaint?: Record<string, true>;
17
+ /**
18
+ * Seed for the infinite procedurally-generated base terrain. When set, every
19
+ * unpainted cell is filled by `baseTerrainAt(baseSeed, col, row)`. Stored on the
20
+ * shape (not app-local render config) so the generated world **persists across
21
+ * reloads and syncs to everyone** on the board. `undefined` = no base.
22
+ */
23
+ baseSeed?: number;
24
+ /**
25
+ * Generation version + parameters the base terrain was created with, recorded
26
+ * so the board's world is **frozen**: tuning the defaults or changing the
27
+ * algorithm later won't retroactively alter existing boards. `undefined` on an
28
+ * older seeded shape means v1 (see `resolveBaseGen`). Paired with `baseSeed`.
29
+ */
30
+ baseGen?: BaseGenParams;
16
31
  }
17
32
  export declare function isTileMap(shape: ShapeData): shape is TileMapShapeData;
33
+ /**
34
+ * The tilemap that owns the infinite-terrain seed, chosen **deterministically**
35
+ * (lowest `id`) so every synced client resolves the same seed even if several
36
+ * seeded tilemaps coexist — `getShapes()` insertion order is not guaranteed
37
+ * identical across peers, so we must not rely on "first found". Returns `null`
38
+ * when no tilemap carries a seed.
39
+ */
40
+ export declare function seededTilemap(shapes: Iterable<ShapeData>): TileMapShapeData | null;
41
+ /**
42
+ * The lowest-`id` tilemap on the board (of any kind), or `null` if there are
43
+ * none. Used to pick a **deterministic** stamp target when enabling the infinite
44
+ * base — `resolveTilemap`'s "first in insertion order" isn't stable across synced
45
+ * clients, so two peers could otherwise seed different tilemaps.
46
+ */
47
+ export declare function lowestTilemap(shapes: Iterable<ShapeData>): TileMapShapeData | null;
18
48
  /** Create a new empty tilemap (locked substrate). */
19
49
  export declare function makeTileMap(tile: number): TileMapShapeData;
20
50
  /** Bounds patch to keep x/y/width/height in sync with the painted cells. */
@@ -1 +1 @@
1
- {"version":3,"file":"tilemap-shape.d.ts","sourceRoot":"","sources":["../src/tilemap-shape.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,KAAK,KAAK,EAAsC,MAAM,eAAe,CAAC;AAG/E,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAClD,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACjC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,gBAAgB,CAErE;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAe1D;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAEnE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,GAAE,MAAqB,GAAG,eAAe,CA8CzF"}
1
+ {"version":3,"file":"tilemap-shape.d.ts","sourceRoot":"","sources":["../src/tilemap-shape.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,KAAK,KAAK,EAAsC,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAClD,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,gBAAgB,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAgBlF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAIlF;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAe1D;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAEnE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,GAAE,MAAqB,GAAG,eAAe,CA8CzF"}
@@ -6,6 +6,41 @@ export const DEFAULT_TILE = 40;
6
6
  export function isTileMap(shape) {
7
7
  return shape.type === TILEMAP_TYPE;
8
8
  }
9
+ /**
10
+ * The tilemap that owns the infinite-terrain seed, chosen **deterministically**
11
+ * (lowest `id`) so every synced client resolves the same seed even if several
12
+ * seeded tilemaps coexist — `getShapes()` insertion order is not guaranteed
13
+ * identical across peers, so we must not rely on "first found". Returns `null`
14
+ * when no tilemap carries a seed.
15
+ */
16
+ export function seededTilemap(shapes) {
17
+ let best = null;
18
+ // Require an INTEGER seed (step:1): synced shape data could carry NaN/Infinity
19
+ // (→ HUD garbage, `fbm(NaN, …)` behaves as seed 0) or a fraction like 1.9,
20
+ // which the HUD shows verbatim but `hash2` truncates to 1 via ToInt32 — the
21
+ // two would disagree. Integer-only keeps the display and the effective seed in
22
+ // sync.
23
+ for (const s of shapes)
24
+ if (isTileMap(s) &&
25
+ s.baseSeed != null &&
26
+ Number.isInteger(s.baseSeed) &&
27
+ (best === null || s.id < best.id))
28
+ best = s;
29
+ return best;
30
+ }
31
+ /**
32
+ * The lowest-`id` tilemap on the board (of any kind), or `null` if there are
33
+ * none. Used to pick a **deterministic** stamp target when enabling the infinite
34
+ * base — `resolveTilemap`'s "first in insertion order" isn't stable across synced
35
+ * clients, so two peers could otherwise seed different tilemaps.
36
+ */
37
+ export function lowestTilemap(shapes) {
38
+ let best = null;
39
+ for (const s of shapes)
40
+ if (isTileMap(s) && (best === null || s.id < best.id))
41
+ best = s;
42
+ return best;
43
+ }
9
44
  /** Create a new empty tilemap (locked substrate). */
10
45
  export function makeTileMap(tile) {
11
46
  const bounds = { x: 0, y: 0, width: 0, height: 0 };
@@ -1 +1 @@
1
- {"version":3,"file":"tilemap-shape.js","sourceRoot":"","sources":["../src/tilemap-shape.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tilemap-shape.js","sourceRoot":"","sources":["../src/tilemap-shape.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edv4h/usketch-plugin-map",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",