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, SeekFrom};

use byteorder::{ReadBytesExt, LE};

use crate::WanError;

use super::ShirenFragmentBytes;

#[derive(Default)]
pub struct ShirenFragmentBytesStore {
    pub fragment_bytes: Vec<ShirenFragmentBytes>,
}

impl ShirenFragmentBytesStore {
    pub fn new<T: Read + Seek>(reader: &mut T, nb_fragments: usize) -> Result<Self, WanError> {
        debug!("reading {} fragments byte", nb_fragments);
        let mut pointers = Vec::with_capacity(nb_fragments);
        for _ in 0..nb_fragments {
            pointers.push(reader.read_u32::<LE>()?);
        }
        let mut fragments = Vec::with_capacity(nb_fragments);
        for fragment_pointer in pointers {
            trace!("reading fragment bytes at {}", fragment_pointer);
            reader.seek(SeekFrom::Start(fragment_pointer as u64))?;
            fragments.push(ShirenFragmentBytes::new(reader)?);
        }
        Ok(Self {
            fragment_bytes: fragments,
        })
    }
}