diff --git a/src/save_loader/save.cpp b/src/save_loader/save.cpp index f41430e..321b04f 100644 --- a/src/save_loader/save.cpp +++ b/src/save_loader/save.cpp @@ -257,6 +257,13 @@ void mech_segment::ammo_count::load(const buffer &b) void mech_segment::mech::glider_desc::load(const buffer &b) { + READ(b, unk15_1); // size? + + b.read_vector(equipments); + + READ(b, unk40); + READ(b, unk4); + // glider.load(b); //if (isPlayer()) @@ -388,13 +395,6 @@ void mech_segment::mech::load(const buffer &b) if (unk14 == 0) return; - READ(b, unk15_1); // size? - - b.read_vector(equipments); - - READ(b, unk40); - READ(b, unk4); - gl.load(b); } @@ -471,6 +471,30 @@ void builds_segment::load(const buffer &b) b.read_vector(builds); } +void orgs_segment::org::base::mech::load(const buffer &b) +{ + READ_STRING(b, name); +} + +void orgs_segment::org::base::load(const buffer &b) +{ + READ_STRING(b, name); + READ(b, unk2); + READ(b, unk3); + READ(b, unk4); + b.read_vector(mechs); + + u32 n; + u32 unk0; + READ(b, n); + while (n--) + READ(b, unk0); + + READ_STRING(b, org); + READ(b, unk5); + READ(b, unk6); +} + void orgs_segment::org::load(const buffer &b) { READ(b, unk0); @@ -624,17 +648,11 @@ void mms_state_segment::load(const buffer &b) READ_STRING(b, name); } -void mms_c_config_segment::object::load(const buffer &b) -{ - READ(b, unk0); - gl.load(b); -} - void mms_c_config_segment::load(const buffer &b) { while (!b.eof()) { - object o; + mech_segment::mech::glider_desc o; o.load(b); objects.push_back(o); } diff --git a/src/save_loader/save.h b/src/save_loader/save.h index 3e32dc7..f9275a7 100644 --- a/src/save_loader/save.h +++ b/src/save_loader/save.h @@ -394,6 +394,13 @@ struct mech_segment : public segment { struct glider_desc { + uint32_t unk15_1; // size of segment (glider_desc struct) + + std::vector equipments; + + float unk40; + uint32_t unk4[7]; + // glider // g_unk = glider unknown @@ -456,14 +463,9 @@ struct mech_segment : public segment uint32_t unk13[3]; uint8_t unk14; uint32_t unk15; - uint32_t unk15_1; + uint32_t unk16 = 0; - std::vector equipments; - - float unk40; - uint32_t unk4[7]; - glider_desc gl; void load(const buffer &b); @@ -557,19 +559,8 @@ struct orgs_segment : public segment struct mech { std::string name; - u32 unk0[2]; - std::string org; - u32 unk1; - f32 unk2; - void load(const buffer &b) - { - READ_STRING(b, name); - READ(b, unk0); - READ_STRING(b, org); - READ(b, unk1); - READ(b, unk2); - } + void load(const buffer &b); }; std::string name; @@ -577,15 +568,13 @@ struct orgs_segment : public segment u8 unk3; uint32_t unk4[2]; std::vector mechs; + // u32 n; + // u32 unk0[n]; + std::string org; + u32 unk5; + f32 unk6; - void load(const buffer &b) - { - READ_STRING(b, name); - READ(b, unk2); - READ(b, unk3); - READ(b, unk4); - b.read_vector(mechs); - } + void load(const buffer &b); }; uint32_t unk0[9]; @@ -657,15 +646,7 @@ struct mms_state_segment : public segment struct mms_c_config_segment : public segment { - struct object - { - u32 unk0[10]; // maybe attach to glider_desc? - mech_segment::mech::glider_desc gl; - - void load(const buffer &b); - }; - - std::vector objects; + std::vector objects; void load(const buffer &b); };