diff --git a/README.md b/README.md index b3eb61a..90ca027 100644 --- a/README.md +++ b/README.md @@ -131,3 +131,25 @@ future engine + lib slice. All previous hotkeys (Tab, S, E, R, H, 0, D, G, I, Esc) continue to work; their bindings are documented in the items where applicable and in the in-editor Cheatsheet modal. + +## Cell-Tile Mode (v0.3.1) + +Third painting mechanic alongside Auto-Tile and Direct. LMB paints a +per-cell material flag at the cursor cell; RMB clears it. The +renderer uses the classical 47-blob 8-neighbour bitmask for +cell-tile cells, unlocking the 9 atlas slots that Auto-Tile's +dual-grid 4-corner rule structurally cannot reach (isolated, end, +corner_open, straight, tee_open, tee_half, cross_open, cross_q1, +cross_q2adj). + +Auto-Tile (vertex-paint, 5 reachable slots, dual-grid look) and +Direct (manual override placement, all 14 slots via explicit pick) +are unchanged. Tab cycles through all three modes. + +For clean visuals, use a single painting mode per layer. Mixing +Vertex-Tile and Cell-Tile material in the same layer is allowed but +produces an asymmetric seam at the boundary because vertex-tile +cells are structurally blind to their cell-tile neighbours. + +See `sporel-meta/docs/superpowers/specs/2026-06-01-map-editor-cell-tile-mode-design.md` +for the full design rationale and the Boris-taxonomy background. diff --git a/init.lua b/init.lua index 7a537fd..219da21 100644 --- a/init.lua +++ b/init.lua @@ -1,4 +1,4 @@ --- sporel-module-map-editor v0.3.0 +-- sporel-module-map-editor v0.3.1 -- Interactive map editor — Rev 4 UX architecture (see design paper -- 2026-05-28-autotile-blob-styles-design.md §11 + plan stub -- 2026-05-28-map-editor-blob-v2.md). 0.2.0b adds the bottom palette @@ -613,7 +613,7 @@ local ui = (function() -- Cheatsheet content (rendered into the modal). local CHEATSHEET = { - { key="Tab", action="Toggle mode (Auto-Tile / Direct)" }, + { key="Tab", action="Cycle mode (Auto-Tile / Cell-Tile / Direct)" }, { key="I", action="Show / hide this cheatsheet" }, { key="S", action="Save current map to work.map.json" }, { key="E", action="Erase tile at mouse cell" }, @@ -1513,7 +1513,7 @@ input.bind("reset_transform", { "0" }) -- 0.2.0c input.bind("toggle_debug_overlay", { "d" }) -- 0.2.0c.3 input.bind("toggle_world_overlay", { "g" }) -- 0.2.0c.4 -engine.print("map-editor v0.3.0: ready. Tab=cycle mode, I=help, G=grid, D=debug, S=save, E=erase, R=rotate, H=flip, 0=reset, ESC=quit / close") +engine.print("map-editor v0.3.1: ready. Tab=cycle mode (Auto/Cell/Direct), I=help, G=grid, D=debug, S=save, E=erase, R=rotate, H=flip, 0=reset, ESC=quit / close") -- ===================================================================== -- 0.3.0: self-tests (Spec §7.1). Run once on the first CI frame. diff --git a/manifest.module b/manifest.module index a723fc6..c5a1c88 100644 --- a/manifest.module +++ b/manifest.module @@ -1,6 +1,6 @@ { "id": "map-editor", - "version": "0.3.0", + "version": "0.3.1", "kind": "module", "api": "^0.1", "ci_frames": 30,