implement TowTrackMissionState (#399)

* TowTrackMissionState

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
Misha 2024-01-03 23:31:55 -04:00 committed by GitHub
parent 49e3fa238f
commit 21d096dcd2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 8 deletions

View file

@ -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;
}

View file

@ -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