diff --git a/LEGO1/towtrackmissionstate.cpp b/LEGO1/towtrackmissionstate.cpp index cdef8a88..8d3d56b9 100644 --- a/LEGO1/towtrackmissionstate.cpp +++ b/LEGO1/towtrackmissionstate.cpp @@ -2,8 +2,55 @@ DECOMP_SIZE_ASSERT(TowTrackMissionState, 0x28) -// STUB: LEGO1 0x1004dd30 +// FUNCTION: LEGO1 0x1004dd30 TowTrackMissionState::TowTrackMissionState() { - // TODO + m_unk0x12 = 0; + m_unk0x14 = 0; + m_unk0x16 = 0; + m_unk0x08 = 0; + m_unk0x18 = 0; + m_unk0x0c = 0; + m_unk0x1a = 0; + m_unk0x10 = 0; + m_unk0x1c = 0; + m_color1 = 0; + m_color2 = 0; + m_color3 = 0; + m_color4 = 0; +} + +// FUNCTION: LEGO1 0x1004dde0 +MxResult TowTrackMissionState::VTable0x1c(LegoFileStream* p_legoFileStream) +{ + if (p_legoFileStream->IsWriteMode()) { + p_legoFileStream->FUN_10006030(this->ClassName()); + } + + if (p_legoFileStream->IsReadMode()) { + p_legoFileStream->Write(&m_unk0x12, sizeof(MxU16)); + p_legoFileStream->Write(&m_unk0x14, sizeof(MxU16)); + p_legoFileStream->Write(&m_unk0x16, sizeof(MxU16)); + p_legoFileStream->Write(&m_unk0x18, sizeof(MxU16)); + p_legoFileStream->Write(&m_unk0x1a, sizeof(MxU16)); + p_legoFileStream->Write(&m_unk0x1c, sizeof(MxU16)); + p_legoFileStream->Write(&m_color1, sizeof(MxU16)); + p_legoFileStream->Write(&m_color2, sizeof(MxU16)); + p_legoFileStream->Write(&m_color3, sizeof(MxU16)); + p_legoFileStream->Write(&m_color4, sizeof(MxU16)); + } + else if (p_legoFileStream->IsWriteMode()) { + p_legoFileStream->Read(&m_unk0x12, sizeof(MxU16)); + p_legoFileStream->Read(&m_unk0x14, sizeof(MxU16)); + p_legoFileStream->Read(&m_unk0x16, sizeof(MxU16)); + p_legoFileStream->Read(&m_unk0x18, sizeof(MxU16)); + p_legoFileStream->Read(&m_unk0x1a, sizeof(MxU16)); + p_legoFileStream->Read(&m_unk0x1c, sizeof(MxU16)); + p_legoFileStream->Read(&m_color1, sizeof(MxU16)); + p_legoFileStream->Read(&m_color2, sizeof(MxU16)); + p_legoFileStream->Read(&m_color3, sizeof(MxU16)); + p_legoFileStream->Read(&m_color4, sizeof(MxU16)); + } + + return SUCCESS; } diff --git a/LEGO1/towtrackmissionstate.h b/LEGO1/towtrackmissionstate.h index 9dc7c587..c0ad3145 100644 --- a/LEGO1/towtrackmissionstate.h +++ b/LEGO1/towtrackmissionstate.h @@ -21,6 +21,7 @@ public: { return !strcmp(p_name, TowTrackMissionState::ClassName()) || LegoState::IsA(p_name); } + virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1C inline MxU16 GetColor(MxU8 p_id) { @@ -41,12 +42,20 @@ public: } protected: - undefined m_unk0x8[0x14]; - MxU16 m_color1; - MxU16 m_color2; - MxU16 m_color3; - MxU16 m_color4; - MxU16 m_color5; + undefined4 m_unk0x08; // 0x08 + undefined4 m_unk0x0c; // 0x0c + MxU8 m_unk0x10; // 0x10 + MxU16 m_unk0x12; // 0x12 + MxU16 m_unk0x14; // 0x14 + MxU16 m_unk0x16; // 0x16 + MxU16 m_unk0x18; // 0x18 + MxU16 m_unk0x1a; // 0x1a + MxU16 m_unk0x1c; // 0x1c + MxU16 m_color1; // 0x1e + MxU16 m_color2; // 0x20 + MxU16 m_color3; // 0x22 + MxU16 m_color4; // 0x24 + MxU16 m_color5; // 0x26 }; #endif // TOWTRACKMISSIONSTATE_H