1use anyhow::{Error, Result};
5use clap::Parser;
6use freenukum::tilecache::{FileProperties, TileCache};
7use freenukum::tileprovider::TileProvider;
8use sdl2::image::SaveSurface;
9use std::fs::create_dir_all;
10use std::path::PathBuf;
11
12#[derive(Parser, Debug)]
14struct Arguments {
15 directory: PathBuf,
20
21 destination: PathBuf,
25}
26
27fn main() -> Result<()> {
28 let args = Arguments::parse();
29
30 let file_properties = FileProperties::get_all();
31 let max_tiles =
32 file_properties.iter().map(|p| p.num_tiles).sum::<usize>();
33
34 let tilecache = TileCache::load_from_path(&args.directory)?;
35
36 create_dir_all(&args.destination)?;
37
38 for i in 0..max_tiles {
39 let tile = tilecache.get_tile(i).unwrap();
40 let filename = format!("tile_{:04}.png", i);
41 tile.save(args.destination.join(filename))
42 .map_err(Error::msg)?;
43 }
44 Ok(())
45}