Skip to main content

bsp_analysis/
bsp_analysis.rs

1use 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(&region.kind).or_insert(0) += 1;
21    }
22
23    for (kind, count) in &region_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}