From 4db8b44ce027578e7df48800e8abb7d9cc85b4e9 Mon Sep 17 00:00:00 2001 From: MS Date: Mon, 20 Jan 2025 21:43:24 -0500 Subject: [PATCH] Implement LegoCarBuildAnimPresenter::Serialize (#1366) --- .../src/build/legocarbuildpresenter.cpp | 24 ++++++++++++++++--- LEGO1/lego/sources/misc/legostorage.h | 3 +++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp b/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp index df971e85..31189d72 100644 --- a/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp +++ b/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp @@ -288,11 +288,29 @@ void LegoCarBuildAnimPresenter::EndAction() } } -// STUB: LEGO1 0x10078e30 -// STUB: BETA10 0x10071387 +// FUNCTION: LEGO1 0x10078e30 +// FUNCTION: BETA10 0x10071387 MxResult LegoCarBuildAnimPresenter::Serialize(LegoStorage* p_storage) { - // TODO + if (p_storage->IsReadMode()) { + p_storage->ReadS16(m_placedPartCount); + p_storage->ReadFloat(m_unk0x130); + for (MxS16 i = 0; i < m_numberOfParts; i++) { + p_storage->ReadString(m_parts[i].m_name); + p_storage->ReadString(m_parts[i].m_wiredName); + p_storage->ReadS16(m_parts[i].m_objectId); + } + } + else if (p_storage->IsWriteMode()) { + p_storage->WriteS16(m_placedPartCount); + p_storage->WriteFloat(m_unk0x130); + for (MxS16 i = 0; i < m_numberOfParts; i++) { + p_storage->WriteString(m_parts[i].m_name); + p_storage->WriteString(m_parts[i].m_wiredName); + p_storage->WriteS16(m_parts[i].m_objectId); + } + } + return SUCCESS; } diff --git a/LEGO1/lego/sources/misc/legostorage.h b/LEGO1/lego/sources/misc/legostorage.h index cae0896c..60ee9015 100644 --- a/LEGO1/lego/sources/misc/legostorage.h +++ b/LEGO1/lego/sources/misc/legostorage.h @@ -79,6 +79,7 @@ public: return this; } + // FUNCTION: BETA10 0x10073610 LegoStorage* WriteFloat(LegoFloat p_data) { Write(&p_data, sizeof(p_data)); @@ -102,6 +103,7 @@ public: return this; } + // FUNCTION: BETA10 0x10073690 LegoStorage* ReadString(char* p_data) { LegoS16 length; @@ -148,6 +150,7 @@ public: return this; } + // FUNCTION: BETA10 0x10073650 LegoStorage* ReadFloat(LegoFloat& p_data) { Read(&p_data, sizeof(p_data));