Saveload: Add object ptr param to table object save/load helpers
This commit is contained in:
@@ -107,11 +107,7 @@ static void Load_CHTS()
|
|||||||
UnknownCheatHandler uch{};
|
UnknownCheatHandler uch{};
|
||||||
SaveLoadTableData slt = SlTableHeader(GetCheatsDesc(false), &uch);
|
SaveLoadTableData slt = SlTableHeader(GetCheatsDesc(false), &uch);
|
||||||
|
|
||||||
if (SlIterateArray() == -1) return;
|
SlLoadTableObjectChunk(slt, &_cheats);
|
||||||
SlObjectLoadFiltered(&_cheats, slt);
|
|
||||||
if (SlIterateArray() != -1) {
|
|
||||||
SlErrorCorruptFmt("Too many CHTS entries");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
size_t count = SlGetFieldLength();
|
size_t count = SlGetFieldLength();
|
||||||
SaveLoadTableData slt = SlTableHeaderOrRiff(GetCheatsDesc(false));
|
SaveLoadTableData slt = SlTableHeaderOrRiff(GetCheatsDesc(false));
|
||||||
|
@@ -2483,16 +2483,16 @@ SaveLoadTableData SlPrepareNamedSaveLoadTableForPtrOrNull(const NamedSaveLoadTab
|
|||||||
return saveloads;
|
return saveloads;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SlSaveTableObjectChunk(const SaveLoadTable &slt)
|
void SlSaveTableObjectChunk(const SaveLoadTable &slt, void *object)
|
||||||
{
|
{
|
||||||
SlSetArrayIndex(0);
|
SlSetArrayIndex(0);
|
||||||
SlObjectSaveFiltered(nullptr, slt);
|
SlObjectSaveFiltered(object, slt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SlLoadTableOrRiffFiltered(const SaveLoadTable &slt)
|
void SlLoadTableOrRiffFiltered(const SaveLoadTable &slt, void *object)
|
||||||
{
|
{
|
||||||
if (SlIsTableChunk() && SlIterateArray() == -1) return;
|
if (SlIsTableChunk() && SlIterateArray() == -1) return;
|
||||||
SlObjectLoadFiltered(nullptr, slt);
|
SlObjectLoadFiltered(object, slt);
|
||||||
if (SlIsTableChunk() && SlIterateArray() != -1) {
|
if (SlIsTableChunk() && SlIterateArray() != -1) {
|
||||||
uint32_t id = _sl.current_chunk_id;
|
uint32_t id = _sl.current_chunk_id;
|
||||||
SlErrorCorruptFmt("Too many %s entries", ChunkIDDumper()(id));
|
SlErrorCorruptFmt("Too many %s entries", ChunkIDDumper()(id));
|
||||||
|
@@ -1096,8 +1096,8 @@ void SlSkipTableHeader();
|
|||||||
[[nodiscard]] SaveLoadTableData SlTableHeader(const NamedSaveLoadTable &slt, TableHeaderSpecialHandler *special_handler = nullptr);
|
[[nodiscard]] SaveLoadTableData SlTableHeader(const NamedSaveLoadTable &slt, TableHeaderSpecialHandler *special_handler = nullptr);
|
||||||
[[nodiscard]] SaveLoadTableData SlTableHeaderOrRiff(const NamedSaveLoadTable &slt);
|
[[nodiscard]] SaveLoadTableData SlTableHeaderOrRiff(const NamedSaveLoadTable &slt);
|
||||||
[[nodiscard]] SaveLoadTableData SlPrepareNamedSaveLoadTableForPtrOrNull(const NamedSaveLoadTable &slt);
|
[[nodiscard]] SaveLoadTableData SlPrepareNamedSaveLoadTableForPtrOrNull(const NamedSaveLoadTable &slt);
|
||||||
void SlSaveTableObjectChunk(const SaveLoadTable &slt);
|
void SlSaveTableObjectChunk(const SaveLoadTable &slt, void *object = nullptr);
|
||||||
void SlLoadTableOrRiffFiltered(const SaveLoadTable &slt);
|
void SlLoadTableOrRiffFiltered(const SaveLoadTable &slt, void *object = nullptr);
|
||||||
void SlLoadTableWithArrayLengthPrefixesMissing();
|
void SlLoadTableWithArrayLengthPrefixesMissing();
|
||||||
|
|
||||||
void SlSetStructListLength(size_t length);
|
void SlSetStructListLength(size_t length);
|
||||||
@@ -1105,24 +1105,24 @@ size_t SlGetStructListLength(size_t limit);
|
|||||||
|
|
||||||
void SlSkipChunkContents();
|
void SlSkipChunkContents();
|
||||||
|
|
||||||
inline void SlSaveTableObjectChunk(const NamedSaveLoadTable &slt)
|
inline void SlSaveTableObjectChunk(const NamedSaveLoadTable &slt, void *object = nullptr)
|
||||||
{
|
{
|
||||||
SlSaveTableObjectChunk(SlTableHeader(slt));
|
SlSaveTableObjectChunk(SlTableHeader(slt), object);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void SlLoadTableObjectChunk(const NamedSaveLoadTable &slt)
|
inline void SlLoadTableObjectChunk(const NamedSaveLoadTable &slt, void *object = nullptr)
|
||||||
{
|
{
|
||||||
SlLoadTableOrRiffFiltered(SlTableHeader(slt));
|
SlLoadTableOrRiffFiltered(SlTableHeader(slt), object);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void SlLoadTableObjectChunk(const SaveLoadTable &slt)
|
inline void SlLoadTableObjectChunk(const SaveLoadTable &slt, void *object = nullptr)
|
||||||
{
|
{
|
||||||
SlLoadTableOrRiffFiltered(slt);
|
SlLoadTableOrRiffFiltered(slt, object);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void SlLoadTableOrRiffFiltered(const NamedSaveLoadTable &slt)
|
inline void SlLoadTableOrRiffFiltered(const NamedSaveLoadTable &slt, void *object = nullptr)
|
||||||
{
|
{
|
||||||
SlLoadTableOrRiffFiltered(SlTableHeaderOrRiff(slt));
|
SlLoadTableOrRiffFiltered(SlTableHeaderOrRiff(slt), object);
|
||||||
}
|
}
|
||||||
|
|
||||||
[[noreturn]] void CDECL SlErrorFmt(StringID string, const char *msg, ...) WARN_FORMAT(2, 3);
|
[[noreturn]] void CDECL SlErrorFmt(StringID string, const char *msg, ...) WARN_FORMAT(2, 3);
|
||||||
|
Reference in New Issue
Block a user