Save/load: Pre-filter SaveLoad descriptor arrays for current version/mode, for chunks with many objects

This commit is contained in:
Jonathan G Rennison
2019-09-23 17:30:09 +01:00
parent 02bd91477d
commit 0a1c1809ab
9 changed files with 344 additions and 69 deletions

View File

@@ -119,11 +119,11 @@ const SaveLoad *GetCargoPacketDesc()
*/
static void Save_CAPA()
{
std::vector<SaveLoad> filtered_packet_desc = SlFilterObject(GetCargoPacketDesc());
CargoPacket *cp;
FOR_ALL_CARGOPACKETS(cp) {
SlSetArrayIndex(cp->index);
SlObject(cp, GetCargoPacketDesc());
SlObjectSaveFiltered(cp, filtered_packet_desc.data());
}
}
@@ -132,11 +132,11 @@ static void Save_CAPA()
*/
static void Load_CAPA()
{
std::vector<SaveLoad> filtered_packet_desc = SlFilterObject(GetCargoPacketDesc());
int index;
while ((index = SlIterateArray()) != -1) {
CargoPacket *cp = new (index) CargoPacket();
SlObject(cp, GetCargoPacketDesc());
SlObjectLoadFiltered(cp, filtered_packet_desc.data());
}
}