diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeModCommand.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeModCommand.cs index 1568533c8d..c020ab3231 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeModCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeModCommand.cs @@ -57,7 +57,6 @@ namespace OpenRA.Mods.Common.UtilityCommands { // HACK: The engine code assumes that Game.modData is set. var modData = Game.ModData = utility.ModData; - modData.MapCache.LoadMaps(); var engineDate = Exts.ParseIntegerInvariant(args[1]); if (engineDate < UpgradeRules.MinimumSupportedVersion) @@ -77,43 +76,18 @@ namespace OpenRA.Mods.Common.UtilityCommands // The map cache won't be valid if there was a map format upgrade, so walk the map packages manually // Only upgrade system maps - user maps must be updated manually using --upgrade-map - Console.WriteLine("Processing Maps:"); - foreach (var kv in modData.Manifest.MapFolders) + Console.WriteLine("Processing System Maps:"); + foreach (var map in modData.MapCache.EnumerateMapsWithoutCaching()) { - var name = kv.Key; - var classification = string.IsNullOrEmpty(kv.Value) - ? MapClassification.Unknown : Enum.Parse(kv.Value); - - if (classification != MapClassification.System) - continue; - - var optional = name.StartsWith("~"); - if (optional) - name = name.Substring(1); - try { - using (var package = (IReadWritePackage)modData.ModFiles.OpenPackage(name)) - { - foreach (var map in package.Contents) - { - try - { - using (var mapPackage = package.OpenPackage(map, modData.ModFiles)) - { - if (mapPackage != null) - UpgradeMapCommand.UpgradeMap(modData, (IReadWritePackage)mapPackage, engineDate); - } - } - catch (Exception e) - { - Console.WriteLine("Failed to upgrade map {0}", map); - Console.WriteLine("Error was: {0}", e.ToString()); - } - } - } + UpgradeMapCommand.UpgradeMap(modData, (IReadWritePackage)map.Package, engineDate); + } + catch (Exception e) + { + Console.WriteLine("Failed to upgrade map {0}", map); + Console.WriteLine("Error was: {0}", e.ToString()); } - catch { } } } }