mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2026-04-02 21:47:24 +02:00
feat: Implement RuntimeDefsModule for managing shared runtime definitions and update related components
This commit is contained in:
parent
f928f9d101
commit
73d6d664fc
14 changed files with 126 additions and 43 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Story 1.6: Move Shared Defs Resources to the Dedicated Host
|
||||
|
||||
Status: ready-for-dev
|
||||
Status: review
|
||||
|
||||
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
||||
|
||||
|
|
@ -17,19 +17,19 @@ so that split surfaces can keep using stable IDs for filters, masks, symbols, ma
|
|||
|
||||
## Tasks / Subtasks
|
||||
|
||||
- [ ] Establish one runtime defs owner.
|
||||
- [ ] Create a narrow defs host module or equivalent runtime owner on top of the host introduced in Story 1.1.
|
||||
- [ ] Distinguish runtime-generated defs from the static asset library already stored in `#defElements`.
|
||||
- [ ] Migrate the current runtime writers for shared defs-backed resources.
|
||||
- [ ] Move feature paths and masks now written through `defs.select(...)` to the dedicated host.
|
||||
- [ ] Move text path registration used by state labels to the dedicated host.
|
||||
- [ ] Move runtime masks, markers, or other shared resources that must survive split surfaces.
|
||||
- [ ] Preserve stable IDs and references.
|
||||
- [ ] Keep existing IDs intact wherever possible so current `url(#id)` and `href="#id"` references continue to resolve.
|
||||
- [ ] Avoid duplicating identical resources into per-layer surfaces.
|
||||
- [ ] Keep export work out of scope for this story.
|
||||
- [ ] Do not redesign the export assembler here.
|
||||
- [ ] Only make the runtime defs placement compatible with later export assembly.
|
||||
- [x] Establish one runtime defs owner.
|
||||
- [x] Create a narrow defs host module or equivalent runtime owner on top of the host introduced in Story 1.1.
|
||||
- [x] Distinguish runtime-generated defs from the static asset library already stored in `#defElements`.
|
||||
- [x] Migrate the current runtime writers for shared defs-backed resources.
|
||||
- [x] Move feature paths and masks now written through `defs.select(...)` to the dedicated host.
|
||||
- [x] Move text path registration used by state labels to the dedicated host.
|
||||
- [x] Move runtime masks, markers, or other shared resources that must survive split surfaces.
|
||||
- [x] Preserve stable IDs and references.
|
||||
- [x] Keep existing IDs intact wherever possible so current `url(#id)` and `href="#id"` references continue to resolve.
|
||||
- [x] Avoid duplicating identical resources into per-layer surfaces.
|
||||
- [x] Keep export work out of scope for this story.
|
||||
- [x] Do not redesign the export assembler here.
|
||||
- [x] Only make the runtime defs placement compatible with later export assembly.
|
||||
- [ ] Perform manual smoke verification.
|
||||
- [ ] Filters, masks, symbols, markers, patterns, and text-path-backed labels still render.
|
||||
- [ ] Mixed runtime resources still resolve after startup and after loading a saved map.
|
||||
|
|
@ -106,12 +106,40 @@ so that split surfaces can keep using stable IDs for filters, masks, symbols, ma
|
|||
|
||||
### Agent Model Used
|
||||
|
||||
TBD
|
||||
Claude Sonnet 4.6
|
||||
|
||||
### Debug Log References
|
||||
|
||||
None.
|
||||
|
||||
### Completion Notes List
|
||||
|
||||
- Story context prepared on 2026-03-13.
|
||||
- Created `src/modules/defs.ts`: new `RuntimeDefsModule` class with `getFeaturePaths()`, `getLandMask()`, `getWaterMask()`, `getTextPaths()`, and `purgeMapDefStubs()`. Instance assigned to `window.RuntimeDefs`.
|
||||
- Removed `#featurePaths`, `#textPaths`, `#land`, `#water` from `#deftemp` in `src/index.html`; `#fog`, `#statePaths`, `#defs-emblems` remain in `#deftemp`.
|
||||
- `purgeMapDefStubs()` is called in `load.js` after D3 global re-bindings and before data parsing, ensuring saved-map stubs don't create duplicate IDs with runtime-defs entries.
|
||||
- `auto-update.js` v1.1 and v1.106 migration blocks updated to use `RuntimeDefs` instead of `defs.select` for the migrated elements.
|
||||
- Three legacy UI editors (`coastline-editor.js`, `lakes-editor.js`) now use `d3.select("#featurePaths > ...")` (document-scoped); `heightmap-editor.js` uses `RuntimeDefs.get*()` directly. `tools.js` burg-label writer updated to `RuntimeDefs.getTextPaths()`.
|
||||
- `#fog` mask intentionally left in `#deftemp` — too many legacy callers (`states-editor.js`, `provinces-editor.js`) depend on `defs.select("#fog ...")`.
|
||||
- TypeScript: `tsc --noEmit` passes with zero errors.
|
||||
|
||||
### File List
|
||||
|
||||
- `src/modules/defs.ts` — NEW: `RuntimeDefsModule` owner for shared runtime defs
|
||||
- `src/modules/index.ts` — added `import "./defs"` after `import "./scene"`
|
||||
- `src/types/global.ts` — added `RuntimeDefsModule` import and `var RuntimeDefs: RuntimeDefsModule`
|
||||
- `src/renderers/draw-features.ts` — migrated `#featurePaths`, `#land`, `#water` writes to `RuntimeDefs`
|
||||
- `src/renderers/draw-state-labels.ts` — migrated `#textPaths` access to `RuntimeDefs.getTextPaths()`
|
||||
- `src/index.html` — removed `<g id="featurePaths">`, `<g id="textPaths">`, `<mask id="land">`, `<mask id="water">` from `#deftemp`
|
||||
- `public/modules/io/load.js` — added `RuntimeDefs.purgeMapDefStubs()` after global D3 rebindings
|
||||
- `public/modules/dynamic/auto-update.js` — fixed v1.1 and v1.106 migration to use `RuntimeDefs`
|
||||
- `public/modules/ui/coastline-editor.js` — `defs.select("#featurePaths > ...")` → `d3.select(...)`
|
||||
- `public/modules/ui/lakes-editor.js` — `defs.select("#featurePaths > ...")` → `d3.select(...)`
|
||||
- `public/modules/ui/heightmap-editor.js` — `defs.selectAll`/`defs.select` → `RuntimeDefs.get*()`
|
||||
- `public/modules/ui/tools.js` — `defs.select("#textPaths")` → `RuntimeDefs.getTextPaths()`
|
||||
|
||||
### Change Log
|
||||
|
||||
| Date | Description |
|
||||
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 2026-03-13 | Initial implementation of Story 1.6: migrated shared runtime defs (`#featurePaths`, `#land`, `#water`, `#textPaths`) from `#deftemp` to dedicated `runtime-defs-host` via new `RuntimeDefsModule`. |
|
||||
|
|
|
|||
|
|
@ -41,12 +41,12 @@ story_location: /Users/azgaar/Fantasy-Map-Generator/_bmad-output/implementation-
|
|||
|
||||
development_status:
|
||||
epic-1: in-progress
|
||||
1-1-bootstrap-scene-container-and-defs-host: in-progress
|
||||
1-2-add-scene-module-for-shared-camera-state: in-progress
|
||||
1-3-add-layers-registry-as-the-ordering-source-of-truth: in-progress
|
||||
1-4-add-layer-surface-lifecycle-ownership: done
|
||||
1-5-add-compatibility-lookups-for-legacy-single-svg-callers: ready-for-dev
|
||||
1-6-move-shared-defs-resources-to-the-dedicated-host: ready-for-dev
|
||||
1-1-bootstrap-scene-container-and-defs-host: done
|
||||
1-2-add-scene-module-for-shared-camera-state: review
|
||||
1-3-add-layers-registry-as-the-ordering-source-of-truth: review
|
||||
1-4-add-layer-surface-lifecycle-ownership: review
|
||||
1-5-add-compatibility-lookups-for-legacy-single-svg-callers: review
|
||||
1-6-move-shared-defs-resources-to-the-dedicated-host: review
|
||||
epic-1-retrospective: optional
|
||||
|
||||
epic-2: backlog
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue