use crate::parse_ptr32;
use binrw::{BinRead, binread};
use xc3_write::{Xc3Write, Xc3WriteOffsets};
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
#[derive(Debug, BinRead, Xc3Write, Xc3WriteOffsets, PartialEq, Clone)]
#[br(magic(b"eva\x00"))]
#[xc3(magic(b"eva\x00"))]
pub struct Eva {
pub unk1: u32,
pub item_count: u32,
pub frame_count: u32,
#[br(count = item_count)]
pub items: Vec<EvaItem1>,
}
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
#[derive(Debug, BinRead, Xc3Write, Xc3WriteOffsets, PartialEq, Clone)]
pub struct EvaItem1 {
pub unk1: u32,
#[br(parse_with = parse_ptr32)]
#[xc3(offset(u32))]
pub item2: EvaItem2,
}
#[binread]
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
#[derive(Debug, Xc3Write, Xc3WriteOffsets, PartialEq, Clone)]
#[br(stream = r)]
#[xc3(base_offset)]
pub struct EvaItem2 {
#[br(temp, try_calc = r.stream_position())]
_base_offset: u64,
pub unk1: u32, pub unk2: u32,
pub frame_count: u32,
}