bsp_analysis/
bsp_analysis.rs1use terrain_forge::{algorithms, Grid, Rng, SemanticExtractor};
2
3fn main() {
4 println!("=== BSP Algorithm Analysis ===\n");
5
6 let mut grid = Grid::new(40, 30);
7 algorithms::get("bsp").unwrap().generate(&mut grid, 12345);
8
9 let extractor = SemanticExtractor::for_rooms();
10 let mut rng = Rng::new(12345);
11 let semantic = extractor.extract(&grid, &mut rng);
12
13 println!("Generated map analysis:");
14 println!(" Floor tiles: {}", grid.count(|t| t.is_floor()));
15 println!(" Total regions: {}", semantic.regions.len());
16
17 println!("\nRegion breakdown:");
18 let mut region_counts = std::collections::HashMap::new();
19 for region in &semantic.regions {
20 *region_counts.entry(®ion.kind).or_insert(0) += 1;
21 }
22
23 for (kind, count) in ®ion_counts {
24 println!(" {}: {}", kind, count);
25 }
26
27 println!("\nMarker breakdown:");
28 let mut marker_counts = std::collections::HashMap::new();
29 for marker in &semantic.markers {
30 *marker_counts.entry(marker.tag()).or_insert(0) += 1;
31 }
32
33 for (tag, count) in &marker_counts {
34 println!(" {}: {}", tag, count);
35 }
36}