Drop support for older map formats.

This commit is contained in:
Paul Chote
2011-02-11 17:22:43 +13:00
parent 37ebda2847
commit 5f6d2df503
3 changed files with 39 additions and 91 deletions

View File

@@ -96,7 +96,7 @@ namespace OpenRA.Editor
{"white",Pair.New(Color.FromArgb(255,255,255),Color.FromArgb(75,75,75))}, {"white",Pair.New(Color.FromArgb(255,255,255),Color.FromArgb(75,75,75))},
{"black",Pair.New(Color.FromArgb(80,80,80),Color.FromArgb(5,5,5))}, {"black",Pair.New(Color.FromArgb(80,80,80),Color.FromArgb(5,5,5))},
}; };
int MapSize; int MapSize;
int ActorCount = 0; int ActorCount = 0;
Map Map = new Map(); Map Map = new Map();
@@ -436,8 +436,11 @@ namespace OpenRA.Editor
OwnsWorld = (section == "Neutral"), OwnsWorld = (section == "Neutral"),
NonCombatant = (section == "Neutral"), NonCombatant = (section == "Neutral"),
Race = (isRA) ? ((section == "BadGuy") ? "soviet" : "allies") : ((section == "BadGuy") ? "nod" : "gdi"), Race = (isRA) ? ((section == "BadGuy") ? "soviet" : "allies") : ((section == "BadGuy") ? "nod" : "gdi"),
Color = color.First, ColorRamp = new ColorRamp(
Color2 = color.Second, (byte)((color.First.GetHue() / 360.0f) * 255),
(byte)(color.First.GetSaturation() * 255),
(byte)(color.First.GetBrightness() * 255),
(byte)(color.Second.GetBrightness() * 255))
}; };
var Neutral = new List<string>(){"Neutral"}; var Neutral = new List<string>(){"Neutral"};

View File

@@ -26,9 +26,7 @@ namespace OpenRA.FileFormats
public bool LockRace = false; public bool LockRace = false;
public string Race; public string Race;
public bool LockColor = false; public bool LockColor = false;
public Color Color = Color.FromArgb(238,238,238);
public Color Color2 = Color.FromArgb(44,28,24);
public ColorRamp ColorRamp = new ColorRamp(75, 255, 180, 25); public ColorRamp ColorRamp = new ColorRamp(75, 255, 180, 25);
public int InitialCash = 0; public int InitialCash = 0;

View File

@@ -89,69 +89,39 @@ namespace OpenRA
// 'Simple' metadata // 'Simple' metadata
FieldLoader.Load( this, yaml ); FieldLoader.Load( this, yaml );
// Support for formats 1-3 dropped 2011-02-11.
// Use release-20110207 to convert older maps to format 4
if (MapFormat < 4)
throw new InvalidDataException("Map format {0} is not supported.\n File: {1}".F(MapFormat, path));
// Define RequiresMod for map installer
if (MapFormat < 5)
RequiresMod = Game.CurrentMods.Keys.First();
// Players & Actors -- this has changed several times.
// - Be backwards compatible wherever possible. // Load players
// - Loading a map then saving it out upgrades to latest. foreach (var kv in yaml.NodesDict["Players"].NodesDict)
// Minimum criteria for dropping a format:
// - There are no maps of this format left in tree
switch (MapFormat)
{ {
case 1: var player = new PlayerReference(kv.Value);
{ Players.Add(player.Name, player);
Players.Add("Neutral", new PlayerReference("Neutral", "allies", true, true));
int actors = 0;
foreach (var kv in yaml.NodesDict["Actors"].NodesDict)
{
string[] vals = kv.Value.Value.Split(' ');
string[] loc = vals[2].Split(',');
Actors.Add("Actor" + actors++, new ActorReference(vals[0])
{
new LocationInit( new int2( int.Parse( loc[ 0 ] ), int.Parse( loc[ 1 ] ) ) ),
new OwnerInit( "Neutral" ),
});
}
} break;
case 2:
{
foreach (var kv in yaml.NodesDict["Players"].NodesDict)
{
var player = new PlayerReference(kv.Value);
Players.Add(player.Name, player);
}
foreach (var kv in yaml.NodesDict["Actors"].NodesDict)
{
var oldActorReference = FieldLoader.Load<Format2ActorReference>(kv.Value);
Actors.Add(oldActorReference.Id, new ActorReference(oldActorReference.Type)
{
new LocationInit( oldActorReference.Location ),
new OwnerInit( oldActorReference.Owner )
});
}
} break;
case 3:
case 4:
case 5:
{
foreach (var kv in yaml.NodesDict["Players"].NodesDict)
{
var player = new PlayerReference(kv.Value);
Players.Add(player.Name, player);
}
foreach (var kv in yaml.NodesDict["Actors"].NodesDict)
Actors.Add(kv.Key, new ActorReference(kv.Value.Value, kv.Value.NodesDict));
} break;
default:
throw new InvalidDataException("Map format {0} is not supported.".F(MapFormat));
} }
// Creep player
if (MapFormat < 5)
{
foreach (var mp in Players.Where(p => !p.Value.NonCombatant && !p.Value.Enemies.Contains("Creeps")))
mp.Value.Enemies = mp.Value.Enemies.Concat(new[] {"Creeps"}).ToArray();
Players.Add("Creeps", new PlayerReference
{
Name = "Creeps",
Race = "Random",
NonCombatant = true,
Enemies = Players.Keys.Where(k => k != "Neutral").ToArray()
});
}
/* hack: make some slots. */ /* hack: make some slots. */
if (!Players.Any(p => p.Value.Playable)) if (!Players.Any(p => p.Value.Playable))
{ {
@@ -168,33 +138,10 @@ namespace OpenRA
Players.Add(p.Name, p); Players.Add(p.Name, p);
} }
} }
// Color1/Color2 -> ColorRamp
if (MapFormat < 4)
foreach (var mp in Players)
mp.Value.ColorRamp = new ColorRamp(
(byte)((mp.Value.Color.GetHue() / 360.0f) * 255),
(byte)(mp.Value.Color.GetSaturation() * 255),
(byte)(mp.Value.Color.GetBrightness() * 255),
(byte)(mp.Value.Color2.GetBrightness() * 255));
// Load actors
// Creep player / Required Mod foreach (var kv in yaml.NodesDict["Actors"].NodesDict)
if (MapFormat < 5) Actors.Add(kv.Key, new ActorReference(kv.Value.Value, kv.Value.NodesDict));
{
RequiresMod = Game.CurrentMods.Keys.First();
foreach (var mp in Players.Where(p => !p.Value.NonCombatant && !p.Value.Enemies.Contains("Creeps")))
mp.Value.Enemies = mp.Value.Enemies.Concat(new[] {"Creeps"}).ToArray();
Players.Add("Creeps", new PlayerReference
{
Name = "Creeps",
Race = "Random",
NonCombatant = true,
Enemies = Players.Keys.Where(k => k != "Neutral").ToArray()
});
}
// Smudges // Smudges
foreach (var kv in yaml.NodesDict["Smudges"].NodesDict) foreach (var kv in yaml.NodesDict["Smudges"].NodesDict)