pub mod legacy;
pub mod modern;
pub(crate) mod detect;
mod read;
pub use read::BdatFile;
const BDAT_MAGIC: [u8; 4] = [b'B', b'D', b'A', b'T'];
pub type SwitchEndian = byteorder::LittleEndian;
pub type WiiEndian = byteorder::BigEndian;
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum BdatVersion {
LegacyWii,
LegacySwitch,
LegacyX,
Modern,
}
impl BdatVersion {
pub fn is_legacy(&self) -> bool {
*self != BdatVersion::Modern
}
pub fn is_modern(&self) -> bool {
!self.is_legacy()
}
pub fn are_labels_hashed(&self) -> bool {
self.is_modern()
}
pub const fn table_header_size(&self) -> usize {
match self {
BdatVersion::Modern => 48,
BdatVersion::LegacyWii => legacy::HEADER_SIZE_WII,
_ => legacy::HEADER_SIZE,
}
}
}