aboutsummaryrefslogtreecommitdiff
path: root/src/bin/textures.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/textures.rs')
-rw-r--r--src/bin/textures.rs15
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;