diff options
Diffstat (limited to 'src/bin/textures.rs')
-rw-r--r-- | src/bin/textures.rs | 15 |
1 files changed, 7 insertions, 8 deletions
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; |