diff --git a/OpenRA.Utility/Command.cs b/OpenRA.Utility/Command.cs index 2ac401676f..4bfd6e74d0 100644 --- a/OpenRA.Utility/Command.cs +++ b/OpenRA.Utility/Command.cs @@ -566,10 +566,7 @@ namespace OpenRA.Utility var filename = args[2]; Game.modData = new ModData(mod); var rules = Game.modData.RulesetCache.LoadDefaultRules(); - var map = LegacyMapImporter.Import(filename, rules, e => Console.WriteLine(e)); - map.RequiresMod = mod; - map.MakeDefaultPlayers(); - map.FixOpenAreas(rules); + var map = LegacyMapImporter.Import(filename, mod, rules, e => Console.WriteLine(e)); var dest = map.Title + ".oramap"; map.Save(dest); Console.WriteLine(dest + " saved."); diff --git a/OpenRA.Utility/LegacyMapImporter.cs b/OpenRA.Utility/LegacyMapImporter.cs index ce83937535..7fc213cdd2 100644 --- a/OpenRA.Utility/LegacyMapImporter.cs +++ b/OpenRA.Utility/LegacyMapImporter.cs @@ -106,7 +106,7 @@ namespace OpenRA.Utility int mapSize; int actorCount = 0; - Map map = new Map(); + Map map; Ruleset rules; List players = new List(); Action errorHandler; @@ -115,13 +115,17 @@ namespace OpenRA.Utility { this.rules = rules; this.errorHandler = errorHandler; + ConvertIniMap(filename); } - public static Map Import(string filename, Ruleset rules, Action errorHandler) + public static Map Import(string filename, string mod, Ruleset rules, Action errorHandler) { - var converter = new LegacyMapImporter(filename, rules, errorHandler); - return converter.map; + var map = new LegacyMapImporter(filename, rules, errorHandler).map; + map.RequiresMod = mod; + map.MakeDefaultPlayers(); + map.FixOpenAreas(rules); + return map; } enum IniMapFormat { RedAlert = 3 } // otherwise, cnc (2 variants exist, we don't care to differentiate) @@ -139,9 +143,10 @@ namespace OpenRA.Utility mapSize = (legacyMapFormat == IniMapFormat.RedAlert) ? 128 : 64; var size = new Size(mapSize, mapSize); + var tileset = Truncate(mapSection.GetValue("Theater", "TEMPERAT"), 8); + map = Map.FromTileset(rules.TileSets[tileset]); map.Title = basic.GetValue("Name", Path.GetFileNameWithoutExtension(iniFile)); map.Author = "Westwood Studios"; - map.Tileset = Truncate(mapSection.GetValue("Theater", "TEMPERAT"), 8); map.MapSize.X = mapSize; map.MapSize.Y = mapSize; map.Bounds = Rectangle.FromLTRB(offsetX, offsetY, offsetX + width, offsetY + height);