brdb 0.7.0

A library for reading and writing Brickadia's World files.
Documentation
use brdb::{Brdb, IntoReader};
use std::collections::BTreeMap;
use std::path::PathBuf;
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let p = PathBuf::from(std::env::args().nth(1).unwrap());
    let db = Brdb::open(&p)?.into_reader();
    let gd = db.global_data()?;
    let mut by_type: BTreeMap<String, Vec<String>> = BTreeMap::new();
    for (ty, name) in &gd.external_asset_references {
        by_type.entry(ty.clone()).or_default().push(name.clone());
    }
    println!("=== external_asset_references: {} total, {} types ===",
        gd.external_asset_references.len(), by_type.len());
    for (ty, names) in &by_type {
        println!("\n[{}] ({})", ty, names.len());
        for n in names { println!("  {}", n); }
    }
    println!("\n=== external_asset_types ===");
    let mut ts: Vec<_> = gd.external_asset_types.iter().collect();
    ts.sort();
    for t in ts { println!("  {}", t); }
    Ok(())
}