Compare commits
23 Commits
5a3f633ab2
...
v0.3.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
451da04cbd | ||
|
|
bde1f7acfa | ||
|
|
2734efa1a9 | ||
|
|
340dd5f700 | ||
|
|
46d1e78758 | ||
|
|
51138e257f | ||
|
|
6eacde3eaa | ||
|
|
e745be8d07 | ||
|
|
f06ef5e2cb | ||
|
|
398d3b4dd9 | ||
|
|
1945e91441 | ||
|
|
107eade2fa | ||
|
|
f2123ba79c | ||
|
|
9213d3f91b | ||
|
|
211056ac8c | ||
|
|
b5afe35df8 | ||
|
|
2c3015685c | ||
|
|
2eebd3d2d5 | ||
|
|
1a9daa8ce1 | ||
|
|
6956919414 | ||
|
|
15159d7fd5 | ||
|
|
e373aa8a1f | ||
|
|
1bf5f46924 |
40
README.md
40
README.md
@@ -113,3 +113,43 @@ SPOREL_CI=1 ./Sporel.exe --module=map-editor # exits with rc=0 after ~0.5 s
|
|||||||
- Design paper: `docs/design/2026-05-28-autotile-blob-styles-design.md`
|
- Design paper: `docs/design/2026-05-28-autotile-blob-styles-design.md`
|
||||||
§11 in `sporel-meta`
|
§11 in `sporel-meta`
|
||||||
- Plan: `docs/superpowers/plans/2026-05-28-map-editor-blob-v2.md`
|
- Plan: `docs/superpowers/plans/2026-05-28-map-editor-blob-v2.md`
|
||||||
|
|
||||||
|
## Menu UI (v0.3.0)
|
||||||
|
|
||||||
|
Top toolbar replaced with a seven-category menu bar (File, Edit, View,
|
||||||
|
Map, Tools, Window, Help) plus a sticky two-segment Mode-pill on the
|
||||||
|
right end. Item types: action, modal, toggle, submenu, separator;
|
||||||
|
items can be conditionally disabled. A single-stack modal framework
|
||||||
|
hosts the existing Cheatsheet (I) and three new modals: Save As, Map
|
||||||
|
Properties (read-only), About. The Esc key cascades modal -> menu ->
|
||||||
|
quit.
|
||||||
|
|
||||||
|
New Map and Open Map appear in the File menu as disabled placeholders
|
||||||
|
pending a v3-aware maps.create and an engine.asset.list_dir in a
|
||||||
|
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.
|
||||||
|
|||||||
17
manifest.launcher.md
Normal file
17
manifest.launcher.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
{"summary":"Map editor — vertical layer-chip overlay + atlas-tile picker","author":"calic","tags":["tool","map-editor"],"teaser_images":[]}
|
||||||
|
---
|
||||||
|
|
||||||
|
# Map Editor
|
||||||
|
|
||||||
|
Click-to-paint tile editor with collapsible atlas/tile-picker. Vertical layer-chip overlay (left), atlas+tile picker (bottom-left), status chip (bottom-right).
|
||||||
|
|
||||||
|
## Controls
|
||||||
|
|
||||||
|
- Mouse-left on grid: paint
|
||||||
|
- Mouse-left on layer-chip: switch active layer
|
||||||
|
- Mouse-right on layer-chip: toggle visibility
|
||||||
|
- E: erase mode
|
||||||
|
- R: rotate
|
||||||
|
- S: save
|
||||||
|
- ESC: quit to launcher
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"id": "map-editor",
|
"id": "map-editor",
|
||||||
"version": "0.2.0c.4",
|
"version": "0.3.3",
|
||||||
"kind": "module",
|
"kind": "module",
|
||||||
"api": "^0.1",
|
"api": "^0.1",
|
||||||
"ci_frames": 30,
|
"ci_frames": 30,
|
||||||
@@ -9,8 +9,9 @@
|
|||||||
"blob_rect_stone": "lib-asset.prototype-blob-geom"
|
"blob_rect_stone": "lib-asset.prototype-blob-geom"
|
||||||
},
|
},
|
||||||
"deps": [
|
"deps": [
|
||||||
{"id":"lib-core.maps","version":"0.5.6"},
|
{"id":"lib-core.maps","version":"0.5.7"},
|
||||||
{"id":"lib-core.render","version":"0.1.0"},
|
{"id":"lib-core.render","version":"0.2.0"},
|
||||||
|
{"id":"lib-core.composition","version":"0.1.0"},
|
||||||
{"id":"lib-core.camera","version":"0.3.0"},
|
{"id":"lib-core.camera","version":"0.3.0"},
|
||||||
{"id":"lib-core.input","version":"0.4.0"},
|
{"id":"lib-core.input","version":"0.4.0"},
|
||||||
{"id":"lib-asset.prototype-blob-geom","version":"0.1.0"}
|
{"id":"lib-asset.prototype-blob-geom","version":"0.1.0"}
|
||||||
|
|||||||
Reference in New Issue
Block a user