use openstranded_map_tool::{parse_s2, s2_to_osmap};
use std::fs;
fn main() {
let data = fs::read("/home/admen/sources/projects/openstranded/s2mod-tool/tests/stranded2/maps/adventure/map01.s2").unwrap();
let s2 = parse_s2(&data).unwrap();
let osmap = s2_to_osmap(s2, "map01.s2");
println!("=== MAP01 ===");
println!("terrain_size: {}", osmap.terrain.size);
println!("entities: {}", osmap.entities.len());
if let Some(ref sp) = osmap.player_spawn {
println!("player spawn: ({:.4}, {:.4}, {:.4})", sp.position.0, sp.position.1, sp.position.2);
}
for e in &osmap.entities {
println!(" {} id={} typ={} pos=({:.4}, {:.4}, {:.4})", e.class, e.id, e.type_id, e.position.0, e.position.1, e.position.2);
}
let data2 = fs::read("/home/admen/sources/projects/openstranded/s2mod-tool/tests/stranded2/maps/adventure/map02.s2").unwrap();
let s22 = parse_s2(&data2).unwrap();
let osmap2 = s2_to_osmap(s22, "map02.s2");
println!("\n=== MAP02 ===");
println!("terrain_size: {}", osmap2.terrain.size);
println!("entities: {}", osmap2.entities.len());
if let Some(ref sp) = osmap2.player_spawn {
println!("player spawn: ({:.4}, {:.4}, {:.4})", sp.position.0, sp.position.1, sp.position.2);
}
for e in osmap2.entities.iter().take(5) {
println!(" {} id={} typ={} pos=({:.4}, {:.4}, {:.4})", e.class, e.id, e.type_id, e.position.0, e.position.1, e.position.2);
}
if !osmap2.entities.is_empty() {
let xs: Vec<f32> = osmap2.entities.iter().map(|e| e.position.0).collect();
let zs: Vec<f32> = osmap2.entities.iter().map(|e| e.position.2).collect();
println!(" osmap x range: {:.2} .. {:.2}", xs.iter().copied().fold(f32::MAX, f32::min), xs.iter().copied().fold(f32::MIN, f32::max));
println!(" osmap z range: {:.2} .. {:.2}", zs.iter().copied().fold(f32::MAX, f32::min), zs.iter().copied().fold(f32::MIN, f32::max));
}
}