Editor (WolfensteinEditor.js):
- Decouple the board from grid size: fixed 900px viewport with independent
pan (right-drag / WASD / arrows) and zoom (wheel / +/- / F to fit)
instead of squeezing the whole grid in; add a whole-level map overview
minimap with click-to-jump.
- Grids up to 1000 cells/side (was 48); painting past the edge auto-grows
the grid (preserving content, re-sealing borders) instead of being refused.
- Rebuild the toolbar as a categorized DOM radio + dropdown panel (Wall /
Door / Pickup / Enemy / Patrol / Zone / Erase) instead of a flat list.
- Add a Patrol tool: select a guard, then click tiles to add/remove
waypoints; routes are drawn (dim for all, highlighted for the selection).
- Throttle the reachability validate during paint-drag; flush it before
Test Play / Export; queue game assets in preload() like ZumaEditor.
Doors (WolfensteinLogic.js, WolfensteinRaycaster.js, WolfensteinView.js):
- Player now opens doors by pressing Space (HUD "[SPACE] Open" prompt when
one is in range); enemies still shove them open. Doors animate open/closed
via a slide value (400ms) instead of popping, and stay solid for
gameplay until fully open.
- Render doors as recessed mid-cell geometry (real depth, producing the "H"
doorway shape) via a door-aware render-only raycast — collision/LOS are
unchanged; the door visibly slides sideways into a dark socket as it opens.
Enemy AI (WolfensteinLogic.js):
- Idle enemies with an authored patrol route ping-pong along
[home, ...nodes] until they spot the player; validate patrol nodes.
Rendering (WolfensteinView.js, assets, data):
- Add textured wall rendering: per-column 1px source-texel sampling from
the new walls.png spritesheet, darkened with a 'multiply' grey to match
the existing side/fog shading, with per-wall-type flat-color fallback.
- Wire in assets/images/wolfenstein/walls.png and point the art manifest at it.
Misc:
- level-e1m1.json: reworked to a taller (20-row) map exercising the new
wall/door types; playerRadius 0.25 -> 0.35.
- sprites.md: document exact wall-sheet size, the sliding/recessed door
behavior, guard sheet usage, and standalone image sizes/proportions.