From 226081d3791de1d293da73edb9f35c69e58f995f Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 20 Feb 2016 17:33:13 +0000 Subject: [PATCH] Remove map saving shim method. --- OpenRA.Game/FileSystem/FileSystem.cs | 3 ++- OpenRA.Game/Map/Map.cs | 6 ------ .../UtilityCommands/ImportLegacyMapCommand.cs | 6 +++--- .../UtilityCommands/ResizeMapCommand.cs | 3 ++- .../UtilityCommands/UpgradeMapCommand.cs | 4 +++- .../UtilityCommands/UpgradeModCommand.cs | 3 ++- .../Widgets/Logic/Editor/SaveMapLogic.cs | 17 +++++++++++------ .../UtilityCommands/ImportD2kMapCommand.cs | 6 +++--- .../UtilityCommands/ImportTSMapCommand.cs | 6 +++--- 9 files changed, 29 insertions(+), 25 deletions(-) diff --git a/OpenRA.Game/FileSystem/FileSystem.cs b/OpenRA.Game/FileSystem/FileSystem.cs index c59371e8c4..3591268b46 100644 --- a/OpenRA.Game/FileSystem/FileSystem.cs +++ b/OpenRA.Game/FileSystem/FileSystem.cs @@ -33,8 +33,9 @@ namespace OpenRA.FileSystem Cache> fileIndex = new Cache>(_ => new List()); - public IReadWritePackage CreatePackage(string filename, Dictionary content) + public IReadWritePackage CreatePackage(string filename) { + var content = new Dictionary(); if (filename.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)) return new ZipFile(this, filename, content); if (filename.EndsWith(".oramap", StringComparison.InvariantCultureIgnoreCase)) diff --git a/OpenRA.Game/Map/Map.cs b/OpenRA.Game/Map/Map.cs index 9fb63ac27c..76123a6974 100644 --- a/OpenRA.Game/Map/Map.cs +++ b/OpenRA.Game/Map/Map.cs @@ -120,7 +120,6 @@ namespace OpenRA public readonly SubCell LastSubCell; public IReadOnlyPackage Package { get; private set; } - public string Path { get { return Package.Name; } } // Yaml map data public string Uid { get; private set; } @@ -494,11 +493,6 @@ namespace OpenRA return rules.Value; } - public void Save(string toPath) - { - Save(modData.ModFiles.CreatePackage(toPath, new Dictionary())); - } - public void Save(IReadWritePackage toContainer) { MapFormat = 8; diff --git a/OpenRA.Mods.Common/UtilityCommands/ImportLegacyMapCommand.cs b/OpenRA.Mods.Common/UtilityCommands/ImportLegacyMapCommand.cs index 2ddeec6947..3049205120 100644 --- a/OpenRA.Mods.Common/UtilityCommands/ImportLegacyMapCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/ImportLegacyMapCommand.cs @@ -93,9 +93,9 @@ namespace OpenRA.Mods.Common.UtilityCommands Map.FixOpenAreas(Rules); - var fileName = Path.GetFileNameWithoutExtension(args[1]); - var dest = fileName + ".oramap"; - Map.Save(dest); + var dest = Path.GetFileNameWithoutExtension(args[1]) + ".oramap"; + var package = modData.ModFiles.CreatePackage(dest); + Map.Save(package); Console.WriteLine(dest + " saved."); } diff --git a/OpenRA.Mods.Common/UtilityCommands/ResizeMapCommand.cs b/OpenRA.Mods.Common/UtilityCommands/ResizeMapCommand.cs index 96ffa3c2ef..d6039796e9 100644 --- a/OpenRA.Mods.Common/UtilityCommands/ResizeMapCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/ResizeMapCommand.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; using System.Linq; +using OpenRA.FileSystem; namespace OpenRA.Mods.Common.UtilityCommands { @@ -67,7 +68,7 @@ namespace OpenRA.Mods.Common.UtilityCommands foreach (var kv in forRemoval) map.ActorDefinitions.Remove(kv); - map.Save(map.Path); + map.Save((IReadWritePackage)map.Package); } } } diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeMapCommand.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeMapCommand.cs index 831e3f8538..ac035fd051 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeMapCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeMapCommand.cs @@ -8,6 +8,8 @@ */ #endregion +using OpenRA.FileSystem; + namespace OpenRA.Mods.Common.UtilityCommands { class UpgradeMapCommand : IUtilityCommand @@ -33,7 +35,7 @@ namespace OpenRA.Mods.Common.UtilityCommands UpgradeRules.UpgradeActorRules(engineDate, ref map.RuleDefinitions, null, 0); UpgradeRules.UpgradePlayers(engineDate, ref map.PlayerDefinitions, null, 0); UpgradeRules.UpgradeActors(engineDate, ref map.ActorDefinitions, null, 0); - map.Save(args[1]); + map.Save((IReadWritePackage)map.Package); } } } diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeModCommand.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeModCommand.cs index f03f8857b1..2828656c87 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeModCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeModCommand.cs @@ -11,6 +11,7 @@ using System; using System.IO; using System.Linq; +using OpenRA.FileSystem; namespace OpenRA.Mods.Common.UtilityCommands { @@ -113,7 +114,7 @@ namespace OpenRA.Mods.Common.UtilityCommands UpgradeRules.UpgradeWeaponRules(engineDate, ref map.WeaponDefinitions, null, 0); UpgradeRules.UpgradePlayers(engineDate, ref map.PlayerDefinitions, null, 0); UpgradeRules.UpgradeActors(engineDate, ref map.ActorDefinitions, null, 0); - map.Save(map.Path); + map.Save((IReadWritePackage)map.Package); } } } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs index 904c7073b8..e91ae4790e 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs @@ -75,6 +75,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var mapDirectories = modData.Manifest.MapFolders .ToDictionary(kv => makeMapDirectory(kv.Key), kv => Enum.Parse(kv.Value)); + var mapPath = map.Package.Name; var directoryDropdown = widget.Get("DIRECTORY_DROPDOWN"); { Func setupItem = (option, template) => @@ -86,7 +87,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic return item; }; - var mapDirectory = map.Path != null ? Platform.UnresolvePath(Path.GetDirectoryName(map.Path)) : null; + // TODO: This won't work for maps inside oramod packages + var mapDirectory = mapPath != null ? Platform.UnresolvePath(Path.GetDirectoryName(mapPath)) : null; var initialDirectory = mapDirectories.Keys.FirstOrDefault(f => f == mapDirectory); // Prioritize MapClassification.User directories over system directories @@ -100,14 +102,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic var mapIsUnpacked = false; - if (map.Path != null) + // TODO: This won't work for maps inside oramod packages + if (mapPath != null) { - var attr = File.GetAttributes(map.Path); + var attr = File.GetAttributes(mapPath); mapIsUnpacked = attr.HasFlag(FileAttributes.Directory); } var filename = widget.Get("FILENAME"); - filename.Text = mapIsUnpacked ? Path.GetFileName(map.Path) : Path.GetFileNameWithoutExtension(map.Path); + filename.Text = mapIsUnpacked ? Path.GetFileName(mapPath) : Path.GetFileNameWithoutExtension(mapPath); var fileType = mapIsUnpacked ? MapFileType.Unpacked : MapFileType.OraMap; var fileTypes = new Dictionary() @@ -158,13 +161,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic // Create the map directory if required Directory.CreateDirectory(Platform.ResolvePath(directoryDropdown.Text)); + // TODO: This won't work for maps inside oramod packages var combinedPath = Platform.ResolvePath(Path.Combine(directoryDropdown.Text, filename.Text + fileTypes[fileType].Extension)); // Invalidate the old map metadata - if (map.Uid != null && combinedPath == map.Path) + if (map.Uid != null && combinedPath == mapPath) modData.MapCache[map.Uid].Invalidate(); - map.Save(combinedPath); + var package = modData.ModFiles.CreatePackage(combinedPath); + map.Save(package); // Update the map cache so it can be loaded without restarting the game var classification = mapDirectories[directoryDropdown.Text]; diff --git a/OpenRA.Mods.D2k/UtilityCommands/ImportD2kMapCommand.cs b/OpenRA.Mods.D2k/UtilityCommands/ImportD2kMapCommand.cs index 7656189501..5ce82b9a77 100644 --- a/OpenRA.Mods.D2k/UtilityCommands/ImportD2kMapCommand.cs +++ b/OpenRA.Mods.D2k/UtilityCommands/ImportD2kMapCommand.cs @@ -35,9 +35,9 @@ namespace OpenRA.Mods.D2k.UtilityCommands if (map == null) return; - var fileName = Path.GetFileNameWithoutExtension(args[1]); - var dest = fileName + ".oramap"; - map.Save(dest); + var dest = Path.GetFileNameWithoutExtension(args[1]) + ".oramap"; + var package = modData.ModFiles.CreatePackage(dest); + map.Save(package); Console.WriteLine(dest + " saved."); } } diff --git a/OpenRA.Mods.TS/UtilityCommands/ImportTSMapCommand.cs b/OpenRA.Mods.TS/UtilityCommands/ImportTSMapCommand.cs index 14c8e21038..bc1be4c41f 100644 --- a/OpenRA.Mods.TS/UtilityCommands/ImportTSMapCommand.cs +++ b/OpenRA.Mods.TS/UtilityCommands/ImportTSMapCommand.cs @@ -171,9 +171,9 @@ namespace OpenRA.Mods.TS.UtilityCommands var mapPlayers = new MapPlayers(map.Rules, spawnCount); map.PlayerDefinitions = mapPlayers.ToMiniYaml(); - var fileName = Path.GetFileNameWithoutExtension(filename); - var dest = fileName + ".oramap"; - map.Save(dest); + var dest = Path.GetFileNameWithoutExtension(args[1]) + ".oramap"; + var package = modData.ModFiles.CreatePackage(dest); + map.Save(package); Console.WriteLine(dest + " saved."); }