use std::{fs::File, io::{BufWriter, Read}}; use luca_pak::Pak; fn main() { let mut clog = colog::default_builder(); clog.filter(None, log::LevelFilter::Info); clog.init(); /* let paths = std::fs::read_dir(".") .unwrap() .filter_map(|res| res.ok()) .map(|dir_entry| dir_entry.path()) .filter_map(|path| { if path.extension().map_or(false, |ext| ext.to_ascii_lowercase() == "pak") { Some(path) } else { None } }) .collect::<Vec<_>>(); let mut pak_files = vec![]; for path in paths { let pak = Pak::open(&path).unwrap(); pak_files.push(pak) } pak_files.sort_by_key(|x| x.header().flags().0 & 0xF); for pak in pak_files { println!( "{:#032b} - {} - {:?}", pak.header().flags().0, pak.unknown_pre_data.len(), pak.path(), ); } */ let mut pak = Pak::open("MANUAL.PAK").unwrap(); //println!("{:#?}", pak.header()); //println!("{:#032b}", pak.header().flags().0); /* for (i, entry) in pak.entries().iter().enumerate() { println!("{i:03}: {:06.2} kB - {}", entry.len() as f32 / 1_000.0, entry.name().as_ref().unwrap()); entry.save("./output/").unwrap(); } */ let rep_cz_data: Vec<u8> = std::fs::read("en_manual01_Linkto_2_6").unwrap(); pak.replace(4, &rep_cz_data).unwrap(); let mut output = BufWriter::new(File::create("MANUAL-modified.PAK").unwrap()); pak.encode(&mut output).unwrap(); }