ireko/src/struct_property.rs

76 lines
2.9 KiB
Rust
Raw Normal View History

use crate::build_data::DABuildDataStruct;
use crate::common::{read_string_with_length, write_string_with_length};
use crate::guid::Guid;
use crate::linear_color::LinearColorStruct;
use crate::primary_asset_id::PrimaryAssetIdStruct;
use crate::primary_asset_type::PrimaryAssetTypeStruct;
use crate::structs::{
DAAssembleIdDataStruct, DACustomizeAssetIdDataStruct,
DAHumanoidColoringDataStruct, DAHumanoidFigureData, DALoadOptionStruct,
DAMachineColoringDataStruct, DAModuleColorStruct, DAModuleItemDataStruct, DATriggerDataStruct,
DATuningDataStruct, DATuningPointData, DateTimeStruct, QuatStruct, SaveSlotInfoStruct,
TransformStruct, VectorStruct,
};
use binrw::binrw;
2025-02-19 19:34:13 -05:00
#[binrw]
#[derive(Debug)]
#[br(import { magic: &str })]
2025-02-19 19:34:13 -05:00
pub enum Struct {
#[br(pre_assert(magic == "DateTime"))]
2025-02-19 19:34:13 -05:00
DateTime(DateTimeStruct),
#[br(pre_assert(magic == "DALoadOption"))]
2025-02-19 19:34:13 -05:00
DALoadOption(DALoadOptionStruct),
#[br(pre_assert(magic == "SaveSlotInfo"))]
2025-02-19 19:34:13 -05:00
SaveSlotInfo(SaveSlotInfoStruct),
#[br(pre_assert(magic == "PrimaryAssetType"))]
PrimaryAssetType(PrimaryAssetTypeStruct),
#[br(pre_assert(magic == "PrimaryAssetId"))]
2025-02-19 19:34:13 -05:00
PrimaryAssetId(PrimaryAssetIdStruct),
#[br(pre_assert(magic == "DAModuleItemData"))]
2025-02-19 19:34:13 -05:00
DAModuleItemData(DAModuleItemDataStruct),
#[br(pre_assert(magic == "DABuildData"))]
2025-02-19 19:34:13 -05:00
DABuildData(DABuildDataStruct),
#[br(pre_assert(magic == "DAAssembleIdData"))]
2025-02-19 19:34:13 -05:00
DAAssembleIdData(DAAssembleIdDataStruct),
#[br(pre_assert(magic == "Guid"))]
Guid(Guid),
#[br(pre_assert(magic == "DAMachineColoringData"))]
2025-02-19 19:34:13 -05:00
DAMachineColoringData(DAMachineColoringDataStruct),
#[br(pre_assert(magic == "DAModuleColor"))]
2025-02-19 19:34:13 -05:00
DAModuleColor(DAModuleColorStruct),
#[br(pre_assert(magic == "LinearColor"))]
2025-02-19 19:34:13 -05:00
LinearColor(LinearColorStruct),
#[br(pre_assert(magic == "DATriggerData"))]
DATriggerData(DATriggerDataStruct),
#[br(pre_assert(magic == "DACustomizeAssetIdData"))]
DACustomizeAssetIdData(DACustomizeAssetIdDataStruct),
#[br(pre_assert(magic == "DATuningData"))]
DATuningData(DATuningDataStruct),
#[br(pre_assert(magic == "DAHumanoidColoringData"))]
DAHumanoidColoringData(DAHumanoidColoringDataStruct),
#[br(pre_assert(magic == "DAHumanoidFigureData"))]
DAHumanoidFigureData(DAHumanoidFigureData),
#[br(pre_assert(magic == "DATuningPointData"))]
DATuningPointData(DATuningPointData),
#[br(pre_assert(magic == "Transform"))]
Transform(TransformStruct),
#[br(pre_assert(magic == "Quat"))]
Quat(QuatStruct),
#[br(pre_assert(magic == "Vector"))]
Vector(VectorStruct),
2025-02-19 19:34:13 -05:00
}
#[binrw]
#[derive(Debug)]
pub struct StructProperty {
pub unk: u32,
#[brw(pad_before = 4)]
#[br(parse_with = read_string_with_length)]
#[bw(write_with = write_string_with_length)]
pub struct_name: String,
#[br(args { magic: &struct_name })]
#[br(pad_before = 17)]
2025-02-19 19:34:13 -05:00
pub r#struct: Struct,
}