From 8bea7b0838ca83af9abf2ec64b679b98c92d472e Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 12 Mar 2025 12:41:39 +0100 Subject: many more texture formats --- src/bin/textures.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'src/bin/textures.rs') diff --git a/src/bin/textures.rs b/src/bin/textures.rs index 83ffb07..4a35de7 100644 --- a/src/bin/textures.rs +++ b/src/bin/textures.rs @@ -31,11 +31,10 @@ fn main() -> anyhow::Result<()> { .nodes() .iter() .find(|n| n.name.ends_with(".resS")) - .ok_or(anyhow!("no resS file found"))? - .to_owned(); + .cloned(); let mut cab = fs.read(&cabfile)?; - let mut ress = fs2.read(&ressfile)?; + let mut ress = ressfile.map(|p| fs2.read(&p)).transpose()?; let file = read_serialized_file(&mut cab)?; for ob in file.objects { cab.seek(SeekFrom::Start(ob.data_offset))?; @@ -51,6 +50,7 @@ fn main() -> anyhow::Result<()> { let value = read_value(typetree, file.endianness, &mut cab)?; let mut texture = Texture2D::from_value(value).unwrap(); if texture.image_data.len() == 0 { + let ress = ress.as_mut().unwrap(); ress.seek(SeekFrom::Start(texture.stream_data.offset as u64))?; ress.by_ref() .take(texture.stream_data.size as u64) @@ -60,12 +60,11 @@ fn main() -> anyhow::Result<()> { "/tmp/tex/{}_{i}.png", texture.name.replace("/", "-").replace(".", "-") ); - println!( - "{path} {}x{} {:?}", - texture.width, texture.height, texture.format - ); match texture.to_image() { - Ok(im) => im.save(path).unwrap(), + Ok(im) => { + im.save(&path).unwrap(); + println!("{path}"); + } Err(e) => warn!("{e}"), } i += 1; -- cgit v1.2.3-70-g09d2