pmd_wan 6.0.0

A library that can read wan file, a sprite format used in pokemon mystery dungeon games
Documentation
use std::io::{Read, Seek};

use byteorder::{ReadBytesExt, LE};

use crate::WanError;

use super::ShirenFrame;

#[derive(Debug)]
pub struct ShirenFrameStore {
    pub frames: Vec<ShirenFrame>,
}

impl ShirenFrameStore {
    pub fn new<T: Read + Seek>(reader: &mut T, nb_fragments: u32) -> Result<Self, WanError> {
        let mut pointers = Vec::new();
        for _ in 0..nb_fragments {
            pointers.push(reader.read_u32::<LE>()?);
        }
        let mut frames = Vec::new();
        for pointer in pointers {
            trace!("Reading frames at {}", pointer);
            reader.seek(std::io::SeekFrom::Start(pointer as u64))?;
            let frame = ShirenFrame::new(reader)?;
            frames.push(frame);
        }
        Ok(Self { frames })
    }
}