feat(citygen): building interiors, doors, windows, shafts

Blocks now keep a one-tile margin from water, the map edge and other
districts and get an alley ring; lots are cut as back-to-back rows so
every building has an outdoor-facing wall for its door.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Jeffrey Wilcke
2026-10-12 17:06:29 +02:00
parent 466e587fb7
commit ac14d2c299
5 changed files with 430 additions and 38 deletions

View File

@@ -377,10 +377,7 @@ mod tests {
for b in &c.buildings {
let p = b.footprint.center();
if b.span.contains(StratumKind::Skyways) {
assert!(matches!(
sk.tiles[p].terrain,
Terrain::Floor | Terrain::Wall
));
assert!(sk.tiles[p].is_building_part() || sk.tiles[p].is_connector());
} else {
// Air above a low roof may carry an elevated walkway.
assert!(matches!(
@@ -389,7 +386,10 @@ mod tests {
));
}
if b.span.contains(StratumKind::Heights) {
assert_eq!(hi.tiles[p].terrain, Terrain::Rooftop);
assert!(matches!(
hi.tiles[p].terrain,
Terrain::Rooftop | Terrain::Lift | Terrain::Stair
));
} else {
assert!(matches!(
hi.tiles[p].terrain,