Hexcrawl H4c: site interior (Enter → area map) — completes the toolkit#64
Merged
Conversation
…crawlSiteArea/generateSiteInterior (H4c)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
H4c — Site interior ("Enter")
Final slice of the generic Hexcrawl toolkit. The site detail card (H4b) gains an Enter
button → a small interior area map for the site, inline on the World map. Two paths, mirroring
H2/H3/H4a/H4b: Crawl (reveal one area at a time) and Full (generate a fresh N-area interior,
clamp 3..12). Areas stored on the hex (
HexCell.siteAreas), NEVERMapState.rooms. Gated by theopt-in
hexcrawlflag.What's in it
build_hexcrawl.py— authoredsiteAreaTypes(10), withverify()coverage. Assetregenerated; verified in-sync.
HexcrawlData.siteAreaTypesgetter.SiteAreamodel ({x, y, name}) +HexCell.siteAreas(omit-when-empty JSON, tolerantmaybeFromJson,copyWithclearSiteAreas).rollSiteArea+nextSiteAreaPosition— a small grid-placement parallel tonextRoomPosition, reusing the shared_roomDirs(BFS, first area at origin, no overlap, seeded).Dungeon placement code untouched.
MapNotifier.crawlSiteArea/generateSiteInterior— operate on the hex at (col,row), storedon the hex (Dungeon tab independent). Crawl appends one; Full regenerates a fresh clamped interior;
both no-op on site-less / absent hexes.
interior_HexZoommode; the card's Enter button (gated to sited hexes) opensit;
siteAreasrender through the existing_DungeonPainter(synthetic rooms, no corridors)with Reveal area / Generate interior (N) / Back + a count stepper. No modal — canvas
switches via the
_zoomenum.CLAUDE.md— marks the hexcrawl toolkit complete.Verification
dart analyze: clean.flutter test: 767 passing (+8: model round-trip,rollSiteArea,nextSiteAreaPositionno-overlap,
crawlSiteArea/generateSiteInteriorincl. clamp + no-op, 3 widget tests drivingcanvas-tap → Enter → generate → painted area map).
siteAreaTypes(10) confirmed bundled (HTTP 200).Plan:
docs/superpowers/plans/2026-06-14-hexcrawl-site-interior.md🏁 Toolkit complete
Two paths (crawl/full) × four granularity levels: Region (H2) · Dungeon (H3) ·
Local zoom 7-hex flower (H4a) · Site detail card (H4b) + interior (H4c). All authored,
system-agnostic,
hexcrawl-gated.🤖 Generated with Claude Code