Move smudge definitions from Map to SmudgeLayer.

This commit is contained in:
Paul Chote
2016-02-22 18:58:55 +00:00
parent 81749cf56d
commit 8532f4deef
3 changed files with 69 additions and 20 deletions

View File

@@ -273,14 +273,40 @@ namespace OpenRA.Mods.Common.UtilityCommands
static void LoadSmudges(IniFile file, string section, int mapSize, Map map)
{
var scorches = new List<MiniYamlNode>();
var craters = new List<MiniYamlNode>();
foreach (var s in file.GetSection(section, true))
{
// loc=type,loc,depth
var parts = s.Value.Split(',');
var loc = Exts.ParseIntegerInvariant(parts[1]);
var key = "{0} {1},{2} {3}".F(parts[0].ToLowerInvariant(), loc % mapSize, loc / mapSize, Exts.ParseIntegerInvariant(parts[2]));
map.SmudgeDefinitions.Add(new MiniYamlNode(key, ""));
var type = parts[0].ToLowerInvariant();
var key = "{0},{1}".F(loc % mapSize, loc / mapSize);
var value = "{0},{1}".F(type, parts[2]);
var node = new MiniYamlNode(key, value);
if (type.StartsWith("sc"))
scorches.Add(node);
else if (type.StartsWith("cr"))
craters.Add(node);
}
var worldNode = new MiniYamlNode("World", new MiniYaml("", new List<MiniYamlNode>()));
if (scorches.Any())
{
var initialScorches = new MiniYamlNode("InitialSmudges", new MiniYaml("", scorches));
var smudgeLayer = new MiniYamlNode("SmudgeLayer@SCORCH", new MiniYaml("", new List<MiniYamlNode>() { initialScorches }));
worldNode.Value.Nodes.Add(smudgeLayer);
}
if (craters.Any())
{
var initialCraters = new MiniYamlNode("InitialSmudges", new MiniYaml("", craters));
var smudgeLayer = new MiniYamlNode("SmudgeLayer@CRATER", new MiniYaml("", new List<MiniYamlNode>() { initialCraters }));
worldNode.Value.Nodes.Add(smudgeLayer);
}
if (worldNode.Value.Nodes.Any())
map.RuleDefinitions.Add(worldNode);
}
// TODO: fix this -- will have bitrotted pretty badly.