From 5d62881be6d0c3161f95d18bed7b8dd909f54b9d Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 19 Jun 2016 13:48:25 +0100 Subject: [PATCH] Support upgrading explicitly referenced yaml paths. --- .../UtilityCommands/UpgradeMapCommand.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeMapCommand.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeMapCommand.cs index 862084c89e..ccccfe446a 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeMapCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeMapCommand.cs @@ -35,12 +35,19 @@ namespace OpenRA.Mods.Common.UtilityCommands if (yaml.Value != null) { var files = FieldLoader.GetValue("value", yaml.Value); - foreach (var filename in files) - { - var fileNodes = MiniYaml.FromStream(map.Package.GetStream(filename), filename); + foreach (var filename in files) + { + var fileNodes = MiniYaml.FromStream(map.Open(filename), filename); processYaml(modData, engineDate, ref fileNodes, null, 0); - ((IReadWritePackage)map.Package).Update(filename, Encoding.ASCII.GetBytes(fileNodes.WriteToString())); - } + + // HACK: Obtain the writable save path using knowledge of the underlying filesystem workings + var packagePath = filename; + var package = map.Package; + if (filename.Contains("|")) + modData.DefaultFileSystem.TryGetPackageContaining(filename, out package, out packagePath); + + ((IReadWritePackage)package).Update(packagePath, Encoding.ASCII.GetBytes(fileNodes.WriteToString())); + } } processYaml(modData, engineDate, ref yaml.Nodes, null, 1);