Fix legacy map importer. Fixes #6143.

This commit is contained in:
Paul Chote
2014-08-09 13:14:25 +12:00
parent 58b39616f6
commit 4fa55e6c49
2 changed files with 11 additions and 9 deletions

View File

@@ -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.");

View File

@@ -106,7 +106,7 @@ namespace OpenRA.Utility
int mapSize;
int actorCount = 0;
Map map = new Map();
Map map;
Ruleset rules;
List<string> players = new List<string>();
Action<string> 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<string> errorHandler)
public static Map Import(string filename, string mod, Ruleset rules, Action<string> 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);