tiger-pkg 0.20.1

Tiger engine package reading library for Destiny 1/2 and Marathon
Documentation
use std::{fmt::Debug, io::SeekFrom};

use binrw::BinRead;

use crate::package::{PackageLanguage, PackagePlatform};

#[derive(BinRead, Debug)]
#[allow(dead_code)]
pub struct PackageHeader {
    #[br(assert(version == 53))]
    pub version: u16,
    pub platform: PackagePlatform,

    #[br(seek_before = SeekFrom::Start(0x8))]
    pub group_id: u64,

    #[br(seek_before = SeekFrom::Start(0x10))]
    pub pkg_id: u16,

    #[br(map(|v: u8| v != 0))]
    pub is_unpatchable: bool,

    #[br(seek_before = SeekFrom::Start(0x20))]
    pub build_time: u64,
    #[br(seek_before = SeekFrom::Start(0x30))]
    pub patch_id: u16,
    pub language: PackageLanguage,

    #[br(seek_before = SeekFrom::Start(0x40))]
    pub header_signature_offset: u32,

    #[br(seek_before = SeekFrom::Start(0x60))]
    pub entry_table_size: u32,
    pub entry_table_offset: u32,

    pub block_table_size: u32,
    pub block_table_offset: u32,

    #[br(seek_before = SeekFrom::Start(0x78))]
    pub named_tag_table_size: u32,
    pub named_tag_table_offset: u32,

    #[br(seek_before = SeekFrom::Start(0xb8))]
    pub h64_table_size: u32,
    pub h64_table_offset: u32,

    #[br(seek_before = SeekFrom::Start(0x120))]
    pub file_size: u32,
}