diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 4c1383cad6..d352da994f 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1603,9 +1603,18 @@ public: AddRequiredObjects(result, _s6.ScenarioTextObjects); ObjectList objectList; - for (rct_object_entry entry : result) + for (size_t i = 0; i < result.size(); i++) { - objectList.Add(ObjectEntryDescriptor(entry)); + ObjectType objectType; + ObjectEntryIndex entryIndex; + get_type_entry_index(i, &objectType, &entryIndex); + + auto desc = ObjectEntryDescriptor(result[i]); + if (desc.HasValue()) + { + assert(desc.GetType() == objectType); + objectList.SetObject(entryIndex, desc); + } } return objectList; diff --git a/test/tests/PlayTests.cpp b/test/tests/PlayTests.cpp index 9ff2d3846e..55b5695373 100644 --- a/test/tests/PlayTests.cpp +++ b/test/tests/PlayTests.cpp @@ -46,7 +46,7 @@ static std::unique_ptr localStartGame(const std::string& parkPath) auto importer = ParkImporter::CreateS6(context->GetObjectRepository()); auto loadResult = importer->LoadSavedGame(parkPath.c_str(), false); - context->GetObjectManager().LoadObjects(loadResult.RequiredObjects.data(), loadResult.RequiredObjects.size()); + context->GetObjectManager().LoadObjects(loadResult.RequiredObjects); importer->Import(); reset_sprite_spatial_index(); diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp index 327042c350..b878970784 100644 --- a/test/tests/S6ImportExportTests.cpp +++ b/test/tests/S6ImportExportTests.cpp @@ -78,7 +78,7 @@ static bool ImportSave(MemoryStream& stream, std::unique_ptr& context, auto importer = ParkImporter::CreateS6(context->GetObjectRepository()); auto loadResult = importer->LoadFromStream(&stream, false); - objManager.LoadObjects(loadResult.RequiredObjects.data(), loadResult.RequiredObjects.size()); + objManager.LoadObjects(loadResult.RequiredObjects); importer->Import(); GameInit(retainSpatialIndices);