# Paradigm Shift: Explicit Rotations & Corridors ## Goal To eliminate dynamic rotation calculations which caused alignment issues, specifically for asymmetric tiles like Corridors (2x6). We will implement explicit exit definitions for all 4 rotations for Corridors, just like we did for Rooms. ## Steps ### 1. Update `TileDefinitions.js` - Modify `corridor_straight` and `corridor_steps`. - Change `exitConfigurations` from an array of simple arrays to an array of objects. - Each object will represent a configuration (Straight, Corner-Left, Corner-Right) but will contain `exitsByRotation` for `NORTH`, `EAST`, `SOUTH`, `WEST`. - Pre-calculate coordinates for these rotations based on the 2x6 layout. ### 2. Rewrite `DungeonGenerator.js` - **Simplify `step()`**: - Iterate through `TileDefinitions` that might apply. - Handle `pendingExits`. - **New Alignment Logic**: - Pick a card. - If it has `exitConfigurations` (Corridors), iterate them. - Inside, iterate 4 Rotations. - Inside, iterate Exits. - If it has simple definitions (Rooms), iterate 4 Rotations. - Inside, iterate Exits. - **Placement**: - Calculate `GlobalPos = TargetConnection - LocalExitPos`. - Check Validity (Opposite Direction). - Check `canPlace`. - **Cleanup**: Remove deprecated methods like `getRotatedOffset`. ## Expected Outcome - Corridors align perfectly in all directions. - No gaps. - Code is easier to understand (no complex matrix rotation math in JS, just lookups).