diff --git a/OpenRA.Mods.Common/UtilityCommands/CheckYaml.cs b/OpenRA.Mods.Common/UtilityCommands/CheckYaml.cs index f376927e63..96be5b001f 100644 --- a/OpenRA.Mods.Common/UtilityCommands/CheckYaml.cs +++ b/OpenRA.Mods.Common/UtilityCommands/CheckYaml.cs @@ -77,10 +77,29 @@ namespace OpenRA.Mods.Common.UtilityCommands } } - modData.MapCache.LoadMaps(); - maps.AddRange(modData.MapCache - .Where(m => m.Status == MapStatus.Available) - .Select(m => new Map(modData, m.Package))); + foreach (var kv in modData.Manifest.MapFolders) + { + var name = kv.Key; + var classification = string.IsNullOrEmpty(kv.Value) + ? MapClassification.Unknown : Enum.Parse(kv.Value); + + if (classification == MapClassification.Unknown) + continue; + + var optional = name.StartsWith("~", StringComparison.Ordinal); + if (optional) + name = name.Substring(1); + + using (var package = (IReadWritePackage)modData.ModFiles.OpenPackage(name)) + { + foreach (var map in package.Contents) + { + var mapPackage = package.OpenPackage(map, modData.ModFiles); + if (mapPackage != null) + maps.Add(new Map(modData, mapPackage)); + } + } + } } else maps.Add(new Map(modData, new Folder(".").OpenPackage(args[1], modData.ModFiles)));