review comments (final part)

This commit is contained in:
jonschz 2024-06-11 22:17:22 +02:00
parent a84709ad04
commit 09c76008ad
13 changed files with 103 additions and 139 deletions

View File

@ -88,7 +88,7 @@ class Act1State : public LegoState {
return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name);
} }
MxBool SetFlag() override; // vtable+0x18 MxBool SetFlag() override; // vtable+0x18
MxResult Serialize(LegoFile* p_file) override; // vtable+0x1c MxResult Serialize(LegoFile* p_file) override; // vtable+0x1c
void FUN_10034660(); void FUN_10034660();

View File

@ -68,7 +68,7 @@ class AnimState : public LegoState {
return !strcmp(p_name, AnimState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, AnimState::ClassName()) || LegoState::IsA(p_name);
} }
MxBool SetFlag() override; // vtable+0x18 MxBool SetFlag() override; // vtable+0x18
MxResult Serialize(LegoFile* p_file) override; // vtable+0x1c MxResult Serialize(LegoFile* p_file) override; // vtable+0x1c
void FUN_100651d0(MxU32, AnimInfo*, MxU32&); void FUN_100651d0(MxU32, AnimInfo*, MxU32&);

View File

@ -28,17 +28,14 @@ class RaceState : public LegoState {
inline MxResult Serialize(LegoFile* p_file) inline MxResult Serialize(LegoFile* p_file)
{ {
if (p_file->IsReadMode()) { if (p_file->IsReadMode()) {
p_file->Read(&m_id, sizeof(m_id)); ReadFromStorage(p_file, &m_id);
p_file->Read(&m_unk0x02, sizeof(m_unk0x02)); ReadFromStorage(p_file, &m_unk0x02);
p_file->Read(&m_score, sizeof(m_score)); ReadFromStorage(p_file, &m_score);
} }
else if (p_file->IsWriteMode()) { else if (p_file->IsWriteMode()) {
MxS8 id = m_id; WriteToStorage(p_file, m_id);
p_file->Write(&id, sizeof(id)); WriteToStorage(p_file, m_unk0x02);
MxS16 unk0x02 = m_unk0x02; WriteToStorage(p_file, m_score);
p_file->Write(&unk0x02, sizeof(unk0x02));
MxS16 score = m_score;
p_file->Write(&score, sizeof(score));
} }
return SUCCESS; return SUCCESS;

View File

@ -60,14 +60,13 @@ class LegoState : public MxCore {
inline MxResult ReadFromFile(LegoFile* p_file) inline MxResult ReadFromFile(LegoFile* p_file)
{ {
p_file->Read(&m_nextIndex, sizeof(m_nextIndex)); ReadFromStorage(p_file, &m_nextIndex);
return SUCCESS; return SUCCESS;
} }
inline MxResult WriteToFile(LegoFile* p_file) inline MxResult WriteToFile(LegoFile* p_file)
{ {
MxS16 write = m_nextIndex; WriteToStorage(p_file, m_nextIndex);
p_file->Write(&write, sizeof(write));
return SUCCESS; return SUCCESS;
} }

View File

@ -17,23 +17,19 @@ class PizzaMissionState : public LegoState {
public: public:
inline MxResult WriteToFile(LegoFile* p_file) inline MxResult WriteToFile(LegoFile* p_file)
{ {
MxS16 unk0x06 = m_unk0x06; WriteToStorage(p_file, m_unk0x06);
p_file->Write(&unk0x06, sizeof(unk0x06)); WriteToStorage(p_file, m_unk0x14);
MxS16 unk0x14 = m_unk0x14; WriteToStorage(p_file, m_unk0x16);
p_file->Write(&unk0x14, sizeof(unk0x14)); WriteToStorage(p_file, m_score);
MxS16 unk0x16 = m_unk0x16;
p_file->Write(&unk0x16, sizeof(unk0x16));
MxS16 score = m_score;
p_file->Write(&score, sizeof(score));
return SUCCESS; return SUCCESS;
} }
inline MxResult ReadFromFile(LegoFile* p_file) inline MxResult ReadFromFile(LegoFile* p_file)
{ {
p_file->Read(&m_unk0x06, sizeof(m_unk0x06)); ReadFromStorage(p_file, &m_unk0x06);
p_file->Read(&m_unk0x14, sizeof(m_unk0x14)); ReadFromStorage(p_file, &m_unk0x14);
p_file->Read(&m_unk0x16, sizeof(m_unk0x16)); ReadFromStorage(p_file, &m_unk0x16);
p_file->Read(&m_score, sizeof(m_score)); ReadFromStorage(p_file, &m_score);
return SUCCESS; return SUCCESS;
} }

View File

@ -648,39 +648,29 @@ MxResult AmbulanceMissionState::Serialize(LegoFile* p_file)
LegoState::Serialize(p_file); LegoState::Serialize(p_file);
if (p_file->IsReadMode()) { if (p_file->IsReadMode()) {
p_file->Read(&m_unk0x10, sizeof(m_unk0x10)); ReadFromStorage(p_file, &m_unk0x10);
p_file->Read(&m_unk0x12, sizeof(m_unk0x12)); ReadFromStorage(p_file, &m_unk0x12);
p_file->Read(&m_unk0x14, sizeof(m_unk0x14)); ReadFromStorage(p_file, &m_unk0x14);
p_file->Read(&m_unk0x16, sizeof(m_unk0x16)); ReadFromStorage(p_file, &m_unk0x16);
p_file->Read(&m_unk0x18, sizeof(m_unk0x18)); ReadFromStorage(p_file, &m_unk0x18);
p_file->Read(&m_score1, sizeof(m_score1)); ReadFromStorage(p_file, &m_score1);
p_file->Read(&m_score2, sizeof(m_score2)); ReadFromStorage(p_file, &m_score2);
p_file->Read(&m_score3, sizeof(m_score3)); ReadFromStorage(p_file, &m_score3);
p_file->Read(&m_score4, sizeof(m_score4)); ReadFromStorage(p_file, &m_score4);
p_file->Read(&m_score5, sizeof(m_score5)); ReadFromStorage(p_file, &m_score5);
} }
else if (p_file->IsWriteMode()) { else if (p_file->IsWriteMode()) {
MxS16 write; MxS16 write;
write = m_unk0x10; WriteToStorage(p_file, m_unk0x10);
p_file->Write(&write, sizeof(write)); WriteToStorage(p_file, m_unk0x12);
write = m_unk0x12; WriteToStorage(p_file, m_unk0x14);
p_file->Write(&write, sizeof(write)); WriteToStorage(p_file, m_unk0x16);
write = m_unk0x14; WriteToStorage(p_file, m_unk0x18);
p_file->Write(&write, sizeof(write)); WriteToStorage(p_file, m_score1);
write = m_unk0x16; WriteToStorage(p_file, m_score2);
p_file->Write(&write, sizeof(write)); WriteToStorage(p_file, m_score3);
write = m_unk0x18; WriteToStorage(p_file, m_score4);
p_file->Write(&write, sizeof(write)); WriteToStorage(p_file, m_score5);
write = m_score1;
p_file->Write(&write, sizeof(write));
write = m_score2;
p_file->Write(&write, sizeof(write));
write = m_score3;
p_file->Write(&write, sizeof(write));
write = m_score4;
p_file->Write(&write, sizeof(write));
write = m_score5;
p_file->Write(&write, sizeof(write));
} }
return SUCCESS; return SUCCESS;

View File

@ -77,9 +77,13 @@ MxU32 PizzeriaState::FUN_10017d70()
} }
// FUNCTION: LEGO1 0x10017da0 // FUNCTION: LEGO1 0x10017da0
// FUNCTION: BETA10 0x100efe33
MxResult PizzeriaState::Serialize(LegoFile* p_file) MxResult PizzeriaState::Serialize(LegoFile* p_file)
{ {
LegoState::Serialize(p_file); if (p_file->IsWriteMode()) {
p_file->WriteString(ClassName());
}
if (p_file->IsReadMode()) { if (p_file->IsReadMode()) {
for (MxS16 i = 0; i < 5; i++) { for (MxS16 i = 0; i < 5; i++) {
m_unk0x08[i].ReadFromFile(p_file); m_unk0x08[i].ReadFromFile(p_file);

View File

@ -163,47 +163,28 @@ MxResult TowTrackMissionState::Serialize(LegoFile* p_file)
LegoState::Serialize(p_file); LegoState::Serialize(p_file);
if (p_file->IsReadMode()) { if (p_file->IsReadMode()) {
p_file->Read(&m_unk0x12, sizeof(m_unk0x12)); ReadFromStorage(p_file, &m_unk0x12);
p_file->Read(&m_unk0x14, sizeof(m_unk0x14)); ReadFromStorage(p_file, &m_unk0x14);
p_file->Read(&m_unk0x16, sizeof(m_unk0x16)); ReadFromStorage(p_file, &m_unk0x16);
p_file->Read(&m_unk0x18, sizeof(m_unk0x18)); ReadFromStorage(p_file, &m_unk0x18);
p_file->Read(&m_unk0x1a, sizeof(m_unk0x1a)); ReadFromStorage(p_file, &m_unk0x1a);
p_file->Read(&m_score1, sizeof(m_score1)); ReadFromStorage(p_file, &m_score1);
p_file->Read(&m_score2, sizeof(m_score2)); ReadFromStorage(p_file, &m_score2);
p_file->Read(&m_score3, sizeof(m_score3)); ReadFromStorage(p_file, &m_score3);
p_file->Read(&m_score4, sizeof(m_score4)); ReadFromStorage(p_file, &m_score4);
p_file->Read(&m_score5, sizeof(m_score5)); ReadFromStorage(p_file, &m_score5);
} }
else if (p_file->IsWriteMode()) { else if (p_file->IsWriteMode()) {
MxU16 write = m_unk0x12; WriteToStorage(p_file, m_unk0x12);
p_file->Write(&write, sizeof(m_unk0x12)); WriteToStorage(p_file, m_unk0x14);
WriteToStorage(p_file, m_unk0x16);
write = m_unk0x14; WriteToStorage(p_file, m_unk0x18);
p_file->Write(&write, sizeof(m_unk0x12)); WriteToStorage(p_file, m_unk0x1a);
WriteToStorage(p_file, m_score1);
write = m_unk0x16; WriteToStorage(p_file, m_score2);
p_file->Write(&write, sizeof(m_unk0x12)); WriteToStorage(p_file, m_score3);
WriteToStorage(p_file, m_score4);
write = m_unk0x18; WriteToStorage(p_file, m_score5);
p_file->Write(&write, sizeof(m_unk0x12));
write = m_unk0x1a;
p_file->Write(&write, sizeof(m_unk0x12));
write = m_score1;
p_file->Write(&write, sizeof(m_unk0x12));
write = m_score2;
p_file->Write(&write, sizeof(m_unk0x12));
write = m_score3;
p_file->Write(&write, sizeof(m_unk0x12));
write = m_score4;
p_file->Write(&write, sizeof(m_unk0x12));
write = m_score5;
p_file->Write(&write, sizeof(m_unk0x12));
} }
return SUCCESS; return SUCCESS;

View File

@ -441,24 +441,18 @@ MxResult GasStationState::Serialize(LegoFile* p_file)
LegoState::Serialize(p_file); LegoState::Serialize(p_file);
if (p_file->IsWriteMode()) { if (p_file->IsWriteMode()) {
MxS16 write; WriteToStorage(p_file, m_unk0x18);
write = m_unk0x18; WriteToStorage(p_file, m_unk0x1a);
p_file->Write(&write, sizeof(write)); WriteToStorage(p_file, m_unk0x1c);
write = m_unk0x1a; WriteToStorage(p_file, m_unk0x1e);
p_file->Write(&write, sizeof(write)); WriteToStorage(p_file, m_unk0x20);
write = m_unk0x1c;
p_file->Write(&write, sizeof(write));
write = m_unk0x1e;
p_file->Write(&write, sizeof(write));
write = m_unk0x20;
p_file->Write(&write, sizeof(write));
} }
else if (p_file->IsReadMode()) { else if (p_file->IsReadMode()) {
p_file->Read(&m_unk0x18, sizeof(m_unk0x18)); ReadFromStorage(p_file, &m_unk0x18);
p_file->Read(&m_unk0x1a, sizeof(m_unk0x1a)); ReadFromStorage(p_file, &m_unk0x1a);
p_file->Read(&m_unk0x1c, sizeof(m_unk0x1c)); ReadFromStorage(p_file, &m_unk0x1c);
p_file->Read(&m_unk0x1e, sizeof(m_unk0x1e)); ReadFromStorage(p_file, &m_unk0x1e);
p_file->Read(&m_unk0x20, sizeof(m_unk0x20)); ReadFromStorage(p_file, &m_unk0x20);
} }
return SUCCESS; return SUCCESS;

View File

@ -689,28 +689,20 @@ MxResult HospitalState::Serialize(LegoFile* p_file)
LegoState::Serialize(p_file); LegoState::Serialize(p_file);
if (p_file->IsWriteMode()) { if (p_file->IsWriteMode()) {
MxS16 write; WriteToStorage(p_file, m_unk0x0c);
WriteToStorage(p_file, m_unk0x0e);
write = m_unk0x0c; WriteToStorage(p_file, m_unk0x10);
p_file->Write(&write, sizeof(m_unk0x0c)); WriteToStorage(p_file, m_unk0x12);
write = m_unk0x0e; WriteToStorage(p_file, m_unk0x14);
p_file->Write(&write, sizeof(m_unk0x0e)); WriteToStorage(p_file, m_unk0x16);
write = m_unk0x10;
p_file->Write(&write, sizeof(m_unk0x10));
write = m_unk0x12;
p_file->Write(&write, sizeof(m_unk0x12));
write = m_unk0x14;
p_file->Write(&write, sizeof(m_unk0x14));
write = m_unk0x16;
p_file->Write(&write, sizeof(m_unk0x16));
} }
else if (p_file->IsReadMode()) { else if (p_file->IsReadMode()) {
p_file->Read(&m_unk0x0c, sizeof(m_unk0x0c)); ReadFromStorage(p_file, &m_unk0x0c);
p_file->Read(&m_unk0x0e, sizeof(m_unk0x0e)); ReadFromStorage(p_file, &m_unk0x0e);
p_file->Read(&m_unk0x10, sizeof(m_unk0x10)); ReadFromStorage(p_file, &m_unk0x10);
p_file->Read(&m_unk0x12, sizeof(m_unk0x12)); ReadFromStorage(p_file, &m_unk0x12);
p_file->Read(&m_unk0x14, sizeof(m_unk0x14)); ReadFromStorage(p_file, &m_unk0x14);
p_file->Read(&m_unk0x16, sizeof(m_unk0x16)); ReadFromStorage(p_file, &m_unk0x16);
} }
return SUCCESS; return SUCCESS;

View File

@ -1390,8 +1390,8 @@ MxResult Act1State::Serialize(LegoFile* p_file)
} }
} }
p_file->Write(&m_unk0x010, sizeof(m_unk0x010)); WriteToStorage(p_file, m_unk0x010);
p_file->Write(&m_unk0x022, sizeof(m_unk0x022)); WriteToStorage(p_file, m_unk0x022);
} }
else if (p_file->IsReadMode()) { else if (p_file->IsReadMode()) {
if (m_unk0x108.GetName()->Compare("") != 0) { if (m_unk0x108.GetName()->Compare("") != 0) {
@ -1444,8 +1444,8 @@ MxResult Act1State::Serialize(LegoFile* p_file)
} }
} }
p_file->Read(&m_unk0x010, sizeof(m_unk0x010)); ReadFromStorage(p_file, &m_unk0x010);
p_file->Read(&m_unk0x022, sizeof(m_unk0x022)); ReadFromStorage(p_file, &m_unk0x022);
} }
// TODO // TODO

View File

@ -211,11 +211,10 @@ MxResult PoliceState::Serialize(LegoFile* p_file)
LegoState::Serialize(p_file); LegoState::Serialize(p_file);
if (p_file->IsReadMode()) { if (p_file->IsReadMode()) {
p_file->Read(&m_policeScript, sizeof(m_policeScript)); ReadFromStorage(p_file, &m_policeScript);
} }
else { else {
PoliceScript::Script policeScript = m_policeScript; WriteToStorage(p_file, m_policeScript);
p_file->Write(&policeScript, sizeof(m_policeScript));
} }
return SUCCESS; return SUCCESS;

View File

@ -156,4 +156,16 @@ class LegoFile : public LegoStorage {
FILE* m_file; // 0x08 FILE* m_file; // 0x08
}; };
template <class T>
inline void ReadFromStorage(LegoStorage* p_storage, T* p_variable, LegoU32 p_size = sizeof(T))
{
p_storage->Read(p_variable, p_size);
}
template <class T>
inline void WriteToStorage(LegoStorage* p_storage, T p_variable)
{
p_storage->Write(&p_variable, sizeof(T));
}
#endif // __LEGOSTORAGE_H #endif // __LEGOSTORAGE_H