2025-03-23 16:45:52 -04:00
|
|
|
use binrw::binrw;
|
|
|
|
|
2025-03-23 16:49:48 -04:00
|
|
|
#[binrw]
|
|
|
|
#[brw(little)]
|
|
|
|
#[brw(repr = u16)]
|
2025-04-01 21:37:41 -04:00
|
|
|
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
|
2025-03-23 16:49:48 -04:00
|
|
|
pub enum ContainerType {
|
|
|
|
#[default]
|
|
|
|
Inventory0 = 0,
|
|
|
|
Inventory1 = 1,
|
|
|
|
Inventory2 = 2,
|
|
|
|
Inventory3 = 3,
|
|
|
|
Equipped = 1000,
|
2025-03-31 23:23:29 -04:00
|
|
|
ArmouryBody = 3202,
|
2025-03-23 16:49:48 -04:00
|
|
|
}
|
|
|
|
|
2025-03-23 16:45:52 -04:00
|
|
|
#[binrw]
|
|
|
|
#[brw(little)]
|
|
|
|
#[derive(Debug, Clone, Default)]
|
|
|
|
pub struct ContainerInfo {
|
|
|
|
pub sequence: u32,
|
|
|
|
pub num_items: u32,
|
2025-03-31 23:23:29 -04:00
|
|
|
#[brw(pad_size_to = 4)]
|
2025-03-23 16:49:48 -04:00
|
|
|
pub container: ContainerType,
|
2025-03-23 16:45:52 -04:00
|
|
|
pub start_or_finish: u32,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use std::{fs::read, io::Cursor, path::PathBuf};
|
|
|
|
|
|
|
|
use binrw::BinRead;
|
|
|
|
|
|
|
|
use super::*;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn read_containerinfo() {
|
|
|
|
let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
|
|
|
d.push("resources/tests/container_info.bin");
|
|
|
|
|
|
|
|
let buffer = read(d).unwrap();
|
|
|
|
let mut buffer = Cursor::new(&buffer);
|
|
|
|
|
|
|
|
let container_info = ContainerInfo::read_le(&mut buffer).unwrap();
|
|
|
|
assert_eq!(container_info.sequence, 1);
|
|
|
|
assert_eq!(container_info.num_items, 0);
|
2025-03-23 16:49:48 -04:00
|
|
|
assert_eq!(container_info.container, ContainerType::Inventory1);
|
2025-03-23 16:45:52 -04:00
|
|
|
assert_eq!(container_info.start_or_finish, 0);
|
|
|
|
}
|
|
|
|
}
|