Add actual members of DATriggerData

This commit is contained in:
Joshua Goins 2025-02-25 19:45:36 -05:00
parent 0474a68f26
commit 22d431d410
3 changed files with 56 additions and 2 deletions

45
src/enum_property.rs Normal file
View file

@ -0,0 +1,45 @@
use binrw::binrw;
use crate::common::{read_string_with_length, write_string_with_length};
#[binrw]
#[derive(Debug)]
pub struct EnumProperty {
#[br(pad_before = 8)] // unk
#[br(parse_with = read_string_with_length)]
#[bw(write_with = write_string_with_length)]
pub enum_type: String,
#[br(pad_before = 1)]
#[br(parse_with = read_string_with_length)]
#[bw(write_with = write_string_with_length)]
pub value: String,
}
#[cfg(test)]
mod tests {
use super::*;
use binrw::{BinRead, BinWrite};
use std::io::Cursor;
#[test]
fn read_zero() {
// Persistent.sav
let data = [
0x29, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x18,
0x00, 0x00, 0x00,
0x45, 0x44, 0x41,
0x57, 0x65, 0x61,
0x70, 0x6f, 0x6e,
0x4d, 0x6f, 0x64,
0x75, 0x6c, 0x65,
0x50, 0x6f, 0x73,
0x69, 0x74, 0x69,
0x6f, 0x6e, 0x00,
0x00
];
let mut cursor = Cursor::new(data);
let decoded = EnumProperty::read_le(&mut cursor).unwrap();
}
}

View file

@ -14,6 +14,7 @@ pub mod set_property;
pub mod str_property;
pub mod struct_property;
mod structs;
mod enum_property;
use binrw::helpers::until_eof;
use std::fs::write;

View file

@ -14,6 +14,7 @@ use crate::primary_asset_type::PrimaryAssetTypeStruct;
use crate::str_property::StrProperty;
use binrw::{BinRead, BinResult, binrw};
use std::fmt::Debug;
use crate::enum_property::EnumProperty;
#[binrw]
#[derive(Debug)]
@ -207,10 +208,17 @@ pub struct DAModuleColorStruct {
pub glow: LinearColorStruct,
}
#[binrw]
#[paramacro::serialized_struct]
#[derive(Debug)]
pub struct DATriggerDataStruct {
pub unk: [u8; 319], // trigger weapon config in game
#[paramacro::serialized_field = "A"]
pub a: EnumProperty,
#[paramacro::serialized_field = "B"]
pub b: EnumProperty,
#[paramacro::serialized_field = "C"]
pub c: EnumProperty,
}
#[paramacro::serialized_struct]