35 lines
1.5 KiB
Markdown
35 lines
1.5 KiB
Markdown
# 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).
|