//! The vocabulary of generation [`crate::pass::Pass`] implementations.
//!
//! Each concrete pass is its own submodule, added by Tasks 7–11. Passes never
//! call each other; they communicate **only** through the
//! [`crate::pass::GenContext`] fields (`tiles`, `regions`, `graph`,
//! `blackboard`). This module's job is to host them and to document the
//! integration contract below.
//!
//! # Inter-Pass Data Contract (v1 dungeon)
//!
//! This is the integration contract for the v1 dungeon recipe. Each pass reads
//! certain `GenContext` state and writes others; the table is the single source
//! of truth so the five passes can be implemented and unit-tested in parallel,
//! each by constructing a `GenContext` in its required input state.
//!
//! | Pass | Reads | Writes |
//! |------|-------|--------|
//! | `BspPartition` | (empty grid) | `ctx.regions`: one placeholder `Region { kind: Room, bounds: <leaf rect>, cells: [] }` per BSP leaf |
//! | `RoomCarver` | `ctx.regions` (placeholder Rooms) | carves `Floor` into `ctx.tiles`; shrinks each Room's `bounds` to its actual room rect and fills `cells` |
//! | `MstConnect` | `ctx.regions` (kind=Room, non-empty `cells`) centers | `ctx.graph`: edges `{ a, b, at: None }` forming an MST over rooms + a few extra loop edges |
//! | `CorridorCarver` | `ctx.graph` edges + Room region bounds/centers | carves L-shaped `Floor` corridors into `ctx.tiles`; appends `Region { kind: Corridor, .. }` per corridor |
//! | `DoorPlacer` | `ctx.tiles` + `ctx.regions` + `ctx.graph` | converts boundary `Wall` cells (room↔corridor) to `Door`; sets the corresponding `edge.at = Some(point)` |
//!
//! Submodule declarations are appended here by Tasks 7–11.

pub mod bsp;
pub use bsp::{BspConfig, BspPartition};

pub mod room;
pub use room::{RoomCarver, RoomConfig, ShapeWeights};

pub mod cave;
pub use cave::{CaveConfig, CaveShaper};

pub mod connect;
pub use connect::{ConnectConfig, MstConnect};

pub mod corridor;
pub use corridor::CorridorCarver;

pub mod door;
pub use door::{DoorConfig, DoorPlacer};

pub mod pool;
pub use pool::{PoolConfig, PoolDecorator};

pub mod pillar;
pub use pillar::{PillarConfig, PillarPlacer};

pub mod room_themer;
pub use room_themer::{RoomThemer, ThemeConfig};

pub mod entity_placer;
pub use entity_placer::{EntityConfig, EntityPlacer};
