38 lines
2.5 KiB
Markdown
38 lines
2.5 KiB
Markdown
# Task 13: reikhelm-viz Renderer
|
|
|
|
**Depends on:** Task 5, Task 12
|
|
|
|
## Context Files
|
|
- `.dev/2026-05-28-procgen-map-core/spec/design.md` — §6 (viz crate), §3 (`Map` contract — renderer reads data only).
|
|
- `reikhelm-core/src/map.rs` — `Map`, `Tile` (Task 5).
|
|
- `reikhelm-core/src/recipes/dungeon.rs` — `dungeon()`, `DungeonConfig` (Task 12).
|
|
- `reikhelm-core/src/pass.rs` — `Pipeline::run` / `run_with_snapshots` (Task 6).
|
|
- `reikhelm-viz/Cargo.toml` — `macroquad` dependency (Task 1).
|
|
|
|
## Files
|
|
- Modify: `reikhelm-viz/src/main.rs` — macroquad window rendering a `Map`.
|
|
|
|
## What to Build
|
|
The interactive renderer (spec §6). A macroquad binary that builds a dungeon from the `dungeon` recipe at a fixed `DungeonConfig`, then each frame draws one colored rectangle per cell, colored by `Tile` (e.g. `Wall` dark, `Floor` light, `Door` accent). Pressing the reroll key (Space) increments the seed and regenerates; the current seed is drawn on screen. Cell pixel size derives from window size / map dimensions.
|
|
|
|
**Stretch (in scope if straightforward):** generate via `run_with_snapshots` and let Left/Right arrows scrub through the generation stages, drawing the snapshot at the current index (and a label). Because snapshots carry regions + edges too, the partition and connect stages are visible even though they don't change tiles — draw region outlines / edges for those frames.
|
|
|
|
The renderer must contain **no generation logic** and reach into no engine internals beyond the public `Map`/recipe API (spec §3, §6) — that boundary is the proof the architecture holds.
|
|
|
|
## Interface Dependencies
|
|
- **Consumes:** `dungeon()`, `DungeonConfig` (Task 12); `Map`, `Tile` (Task 5); `Pipeline::run`/`run_with_snapshots` (Task 6).
|
|
- **Produces:** the `reikhelm-viz` binary.
|
|
|
|
## Tests
|
|
- Rendering is interactive/visual — no unit tests required. Validation is manual via the success criteria below.
|
|
- (Optional) a `color_of(Tile) -> Color` helper can have a trivial unit test if extracted.
|
|
|
|
## Success Criteria
|
|
- [ ] `cargo run -p reikhelm-viz` opens a window showing a dungeon as colored tiles.
|
|
- [ ] Pressing Space generates a new dungeon (new seed); the seed is visible on screen.
|
|
- [ ] `reikhelm-viz` contains no generation logic and uses only `reikhelm-core`'s public API.
|
|
- [ ] `cargo build` of the whole workspace succeeds.
|
|
- [ ] (Stretch) Left/Right scrub generation stages, with partition/connect stages visibly distinct.
|
|
|
|
## Commit
|
|
`"feat(viz): macroquad dungeon renderer with seed reroll"`
|