Rehost direct company control-transfer field band
This commit is contained in:
parent
3306763bad
commit
87e8742f37
6 changed files with 343 additions and 8 deletions
|
|
@ -3609,6 +3609,11 @@ const SAVE_COMPANY_RECORD_YEAR_STAT_FAMILY_QWORD_COUNT: usize =
|
|||
* crate::runtime::RUNTIME_COMPANY_YEAR_STAT_FAMILY_SPAN as usize;
|
||||
const SAVE_COMPANY_RECORD_SPECIAL_STAT_FAMILY_232A_QWORD_COUNT: usize =
|
||||
crate::runtime::RUNTIME_COMPANY_STAT_SLOT_COUNT as usize;
|
||||
const SAVE_COMPANY_RECORD_DIRECT_CONTROL_TRANSFER_FLOAT_FIELDS: [usize; 10] = [
|
||||
0x4b, 0x53, 0x323, 0x327, 0x32b, 0x32f, 0x333, 0x337, 0x33b, 0x33f,
|
||||
];
|
||||
const SAVE_COMPANY_RECORD_DIRECT_CONTROL_TRANSFER_INT_FIELDS: [usize; 5] =
|
||||
[0x14f, 0x34b, 0x0d0b, 0x0d0f, 0x0d13];
|
||||
const SAVE_COMPANY_RECORD_SCALAR_CANDIDATE_FIELDS: [(&str, usize); 9] = [
|
||||
("mutable_support_scalar", 0x4f),
|
||||
("young_company_support_scalar", 0x57),
|
||||
|
|
@ -3821,6 +3826,16 @@ fn parse_save_company_roster_probe(
|
|||
SAVE_COMPANY_RECORD_STAT_BAND_ROOT_1C47_OFFSET,
|
||||
SAVE_COMPANY_RECORD_SPECIAL_STAT_FAMILY_232A_QWORD_COUNT,
|
||||
)?;
|
||||
let direct_control_transfer_float_fields_raw_u32 = build_save_u32_field_map(
|
||||
bytes,
|
||||
record_offset,
|
||||
&SAVE_COMPANY_RECORD_DIRECT_CONTROL_TRANSFER_FLOAT_FIELDS,
|
||||
)?;
|
||||
let direct_control_transfer_int_fields_raw_u32 = build_save_u32_field_map(
|
||||
bytes,
|
||||
record_offset,
|
||||
&SAVE_COMPANY_RECORD_DIRECT_CONTROL_TRANSFER_INT_FIELDS,
|
||||
)?;
|
||||
let issue_opinion_terms_raw_i32 = build_save_i32_term_strip(
|
||||
bytes,
|
||||
record_offset,
|
||||
|
|
@ -3888,6 +3903,8 @@ fn parse_save_company_roster_probe(
|
|||
year_stat_family_qword_bits,
|
||||
special_stat_family_232a_qword_bits,
|
||||
issue_opinion_terms_raw_i32,
|
||||
direct_control_transfer_float_fields_raw_u32,
|
||||
direct_control_transfer_int_fields_raw_u32,
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
|
@ -3959,6 +3976,21 @@ fn build_save_i32_term_strip(
|
|||
.collect::<Option<Vec<_>>>()
|
||||
}
|
||||
|
||||
fn build_save_u32_field_map(
|
||||
bytes: &[u8],
|
||||
record_offset: usize,
|
||||
offsets: &[usize],
|
||||
) -> Option<BTreeMap<u32, u32>> {
|
||||
let mut fields = BTreeMap::new();
|
||||
for relative_offset in offsets {
|
||||
fields.insert(
|
||||
u32::try_from(*relative_offset).ok()?,
|
||||
read_u32_at(bytes, record_offset + *relative_offset)?,
|
||||
);
|
||||
}
|
||||
Some(fields)
|
||||
}
|
||||
|
||||
fn decode_save_company_current_year_stat_slot(
|
||||
year_stat_family_qword_bits: &[u64],
|
||||
slot_id: u32,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue