Fix legacy map importer. Fixes #6143.
This commit is contained in:
@@ -566,10 +566,7 @@ namespace OpenRA.Utility
|
|||||||
var filename = args[2];
|
var filename = args[2];
|
||||||
Game.modData = new ModData(mod);
|
Game.modData = new ModData(mod);
|
||||||
var rules = Game.modData.RulesetCache.LoadDefaultRules();
|
var rules = Game.modData.RulesetCache.LoadDefaultRules();
|
||||||
var map = LegacyMapImporter.Import(filename, rules, e => Console.WriteLine(e));
|
var map = LegacyMapImporter.Import(filename, mod, rules, e => Console.WriteLine(e));
|
||||||
map.RequiresMod = mod;
|
|
||||||
map.MakeDefaultPlayers();
|
|
||||||
map.FixOpenAreas(rules);
|
|
||||||
var dest = map.Title + ".oramap";
|
var dest = map.Title + ".oramap";
|
||||||
map.Save(dest);
|
map.Save(dest);
|
||||||
Console.WriteLine(dest + " saved.");
|
Console.WriteLine(dest + " saved.");
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ namespace OpenRA.Utility
|
|||||||
|
|
||||||
int mapSize;
|
int mapSize;
|
||||||
int actorCount = 0;
|
int actorCount = 0;
|
||||||
Map map = new Map();
|
Map map;
|
||||||
Ruleset rules;
|
Ruleset rules;
|
||||||
List<string> players = new List<string>();
|
List<string> players = new List<string>();
|
||||||
Action<string> errorHandler;
|
Action<string> errorHandler;
|
||||||
@@ -115,13 +115,17 @@ namespace OpenRA.Utility
|
|||||||
{
|
{
|
||||||
this.rules = rules;
|
this.rules = rules;
|
||||||
this.errorHandler = errorHandler;
|
this.errorHandler = errorHandler;
|
||||||
|
|
||||||
ConvertIniMap(filename);
|
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);
|
var map = new LegacyMapImporter(filename, rules, errorHandler).map;
|
||||||
return converter.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)
|
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;
|
mapSize = (legacyMapFormat == IniMapFormat.RedAlert) ? 128 : 64;
|
||||||
var size = new Size(mapSize, mapSize);
|
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.Title = basic.GetValue("Name", Path.GetFileNameWithoutExtension(iniFile));
|
||||||
map.Author = "Westwood Studios";
|
map.Author = "Westwood Studios";
|
||||||
map.Tileset = Truncate(mapSection.GetValue("Theater", "TEMPERAT"), 8);
|
|
||||||
map.MapSize.X = mapSize;
|
map.MapSize.X = mapSize;
|
||||||
map.MapSize.Y = mapSize;
|
map.MapSize.Y = mapSize;
|
||||||
map.Bounds = Rectangle.FromLTRB(offsetX, offsetY, offsetX + width, offsetY + height);
|
map.Bounds = Rectangle.FromLTRB(offsetX, offsetY, offsetX + width, offsetY + height);
|
||||||
|
|||||||
Reference in New Issue
Block a user