aftermath rules in yaml too.

This commit is contained in:
Chris Forbes
2010-01-11 18:31:50 +13:00
parent cf6bb26f83
commit 50b138e2de
3 changed files with 220 additions and 29 deletions

View File

@@ -22,7 +22,7 @@ namespace RulesConverter
var rules = new IniFile(ruleStreams);
var outputFile = args.Single(a => a.EndsWith(".rul"));
var outputFile = args.Single(a => !a.EndsWith(".ini"));
var categoryMap = new Dictionary<string,Pair<string,string>>
{
@@ -156,40 +156,44 @@ namespace RulesConverter
using (var writer = File.CreateText(outputFile))
{
foreach (var cat in categoryMap)
foreach (var item in rules.GetSection(cat.Key).Select(a => a.Key))
try
{
var iniSection = rules.GetSection(item);
writer.WriteLine("{0}:", item);
writer.WriteLine("\tInherits: {0}", cat.Value.First);
var traits = iniSection.GetValue("Traits", "")
.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (iniSection.GetValue("Selectable", "yes") == "yes")
traits.Insert(0, "Selectable");
if (iniSection.GetValue("TechLevel", "-1") != "-1")
traits.Insert(0, "Buildable");
foreach (var t in traits)
foreach (var item in rules.GetSection(cat.Key).Select(a => a.Key))
{
writer.WriteLine("\t{0}:", t);
var iniSection = rules.GetSection(item);
writer.WriteLine("{0}:", item);
writer.WriteLine("\tInherits: {0}", cat.Value.First);
if (traitMap.ContainsKey(t))
foreach (var kv in traitMap[t])
{
var v = kv.Value == "$Tab" ? cat.Value.Second : iniSection.GetValue(kv.Value, "");
var fmt = "\t\t{0}: {1}";
var k = kv.Key;
if (k.StartsWith("@")) { k = k.Substring(1); /*fmt = "\t\t{0}: [{1}]";*/ }
if (k.StartsWith("$")) { k = k.Substring(1); fmt = "\t\t{0}: \"{1}\""; }
var traits = iniSection.GetValue("Traits", "")
.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (!string.IsNullOrEmpty(v)) writer.WriteLine(fmt, k, v);
}
if (iniSection.GetValue("Selectable", "yes") == "yes")
traits.Insert(0, "Selectable");
if (iniSection.GetValue("TechLevel", "-1") != "-1")
traits.Insert(0, "Buildable");
foreach (var t in traits)
{
writer.WriteLine("\t{0}:", t);
if (traitMap.ContainsKey(t))
foreach (var kv in traitMap[t])
{
var v = kv.Value == "$Tab" ? cat.Value.Second : iniSection.GetValue(kv.Value, "");
var fmt = "\t\t{0}: {1}";
var k = kv.Key;
if (k.StartsWith("@")) { k = k.Substring(1); /*fmt = "\t\t{0}: [{1}]";*/ }
if (k.StartsWith("$")) { k = k.Substring(1); fmt = "\t\t{0}: \"{1}\""; }
if (!string.IsNullOrEmpty(v)) writer.WriteLine(fmt, k, v);
}
}
writer.WriteLine();
}
writer.WriteLine();
}
catch { }
}
}
}