Make yaml check utility load each map separately to reduce memory usage.

This commit is contained in:
darkademic
2021-09-01 21:54:39 +01:00
committed by Matthias Mailänder
parent 695b7865d3
commit c51327c4cc
2 changed files with 58 additions and 39 deletions

View File

@@ -117,7 +117,7 @@ namespace OpenRA
}
}
public IEnumerable<IReadWritePackage> EnumerateMapPackagesWithoutCaching(MapClassification classification = MapClassification.System)
public IEnumerable<IReadWritePackage> EnumerateMapDirPackages(MapClassification classification = MapClassification.System)
{
// Utility mod that does not support maps
if (!modData.Manifest.Contains<MapGrid>())
@@ -143,16 +143,29 @@ namespace OpenRA
continue;
using (var package = (IReadWritePackage)modData.ModFiles.OpenPackage(name))
{
foreach (var map in package.Contents)
{
if (package.OpenPackage(map, modData.ModFiles) is IReadWritePackage mapPackage)
yield return mapPackage;
}
}
yield return package;
}
}
public IEnumerable<(IReadWritePackage package, string map)> EnumerateMapDirPackagesAndNames(MapClassification classification = MapClassification.System)
{
var mapDirPackages = EnumerateMapDirPackages(classification);
foreach (var mapDirPackage in mapDirPackages)
foreach (var map in mapDirPackage.Contents)
yield return (mapDirPackage, map);
}
public IEnumerable<IReadWritePackage> EnumerateMapPackagesWithoutCaching(MapClassification classification = MapClassification.System)
{
var mapDirPackages = EnumerateMapDirPackages(classification);
foreach (var mapDirPackage in mapDirPackages)
foreach (var map in mapDirPackage.Contents)
if (mapDirPackage.OpenPackage(map, modData.ModFiles) is IReadWritePackage mapPackage)
yield return mapPackage;
}
public IEnumerable<Map> EnumerateMapsWithoutCaching(MapClassification classification = MapClassification.System)
{
foreach (var mapPackage in EnumerateMapPackagesWithoutCaching(classification))