refactor: Remove Read/Write duplication

This commit is contained in:
jonschz 2024-06-14 09:07:23 +02:00
parent 09c76008ad
commit b7723c8a08
10 changed files with 84 additions and 96 deletions

View File

@ -28,14 +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()) {
ReadFromStorage(p_file, &m_id); Read(p_file, &m_id);
ReadFromStorage(p_file, &m_unk0x02); Read(p_file, &m_unk0x02);
ReadFromStorage(p_file, &m_score); Read(p_file, &m_score);
} }
else if (p_file->IsWriteMode()) { else if (p_file->IsWriteMode()) {
WriteToStorage(p_file, m_id); Write(p_file, m_id);
WriteToStorage(p_file, m_unk0x02); Write(p_file, m_unk0x02);
WriteToStorage(p_file, m_score); Write(p_file, m_score);
} }
return SUCCESS; return SUCCESS;

View File

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

View File

@ -17,19 +17,19 @@ class PizzaMissionState : public LegoState {
public: public:
inline MxResult WriteToFile(LegoFile* p_file) inline MxResult WriteToFile(LegoFile* p_file)
{ {
WriteToStorage(p_file, m_unk0x06); Write(p_file, m_unk0x06);
WriteToStorage(p_file, m_unk0x14); Write(p_file, m_unk0x14);
WriteToStorage(p_file, m_unk0x16); Write(p_file, m_unk0x16);
WriteToStorage(p_file, m_score); Write(p_file, m_score);
return SUCCESS; return SUCCESS;
} }
inline MxResult ReadFromFile(LegoFile* p_file) inline MxResult ReadFromFile(LegoFile* p_file)
{ {
ReadFromStorage(p_file, &m_unk0x06); Read(p_file, &m_unk0x06);
ReadFromStorage(p_file, &m_unk0x14); Read(p_file, &m_unk0x14);
ReadFromStorage(p_file, &m_unk0x16); Read(p_file, &m_unk0x16);
ReadFromStorage(p_file, &m_score); Read(p_file, &m_score);
return SUCCESS; return SUCCESS;
} }

View File

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

View File

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

View File

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

View File

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

View File

@ -1390,8 +1390,8 @@ MxResult Act1State::Serialize(LegoFile* p_file)
} }
} }
WriteToStorage(p_file, m_unk0x010); Write(p_file, m_unk0x010);
WriteToStorage(p_file, m_unk0x022); Write(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)
} }
} }
ReadFromStorage(p_file, &m_unk0x010); Read(p_file, &m_unk0x010);
ReadFromStorage(p_file, &m_unk0x022); Read(p_file, &m_unk0x022);
} }
// TODO // TODO

View File

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

View File

@ -156,16 +156,4 @@ 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