add a pure data export for non-spreadsheet applications

This commit is contained in:
Matthias Mailänder
2014-06-15 20:13:14 +02:00
parent 6d2dfabb41
commit 1d276e4186

View File

@@ -546,10 +546,11 @@ namespace OpenRA.Utility
Console.WriteLine(dest + " saved."); Console.WriteLine(dest + " saved.");
} }
[Desc("MOD", "Export the game rules into a CSV file to inspect in a spreadheet.")] [Desc("MOD", "[--pure-data]", "Export the game rules into a CSV file for inspection.")]
public static void ExportCharacterSeparatedRules(string[] args) public static void ExportCharacterSeparatedRules(string[] args)
{ {
var mod = args[1]; var mod = args[1];
var pureData = args.Contains("--pure-data");
Game.modData = new ModData(mod); Game.modData = new ModData(mod);
var rules = Game.modData.RulesetCache.LoadDefaultRules(); var rules = Game.modData.RulesetCache.LoadDefaultRules();
@@ -568,7 +569,10 @@ namespace OpenRA.Utility
vsArmor = vsArmor + ";vs. " + armorType; vsArmor = vsArmor + ";vs. " + armorType;
var dump = new StringBuilder(); var dump = new StringBuilder();
dump.AppendLine("Name;Faction;Health;Cost;Weapon;Damage;Burst;Delay;Rate of Fire;Damage per Second" + vsArmor); if (pureData)
dump.AppendLine("Name;Faction;Health;Cost;Weapon;Damage;Burst;Delay;Rate of Fire");
else
dump.AppendLine("Name;Faction;Health;Cost;Weapon;Damage;Burst;Delay;Rate of Fire;Damage per Second" + vsArmor);
var line = 1; var line = 1;
foreach (var actorInfo in rules.Actors.Values) foreach (var actorInfo in rules.Actors.Values)
@@ -625,7 +629,10 @@ namespace OpenRA.Utility
versus = versus + "=J{0}*{1};".F(line, vs); versus = versus + "=J{0}*{1};".F(line, vs);
} }
dump.Append(";{0};{1};{2};{3};{4};{5};{6}".F(weaponName, damage, burst, delay, rateOfFire, damagePerSecond, versus)); if (pureData)
dump.Append(";{0};{1};{2};{3};{4}".F(weaponName, damage, burst, delay, rateOfFire));
else
dump.Append(";{0};{1};{2};{3};{4};{5};{6}".F(weaponName, damage, burst, delay, rateOfFire, damagePerSecond, versus));
} }
} }
dump.AppendLine(); dump.AppendLine();
@@ -634,7 +641,9 @@ namespace OpenRA.Utility
var filename = "{0}-mod-rules.csv".F(mod); var filename = "{0}-mod-rules.csv".F(mod);
using (StreamWriter outfile = new StreamWriter(filename)) using (StreamWriter outfile = new StreamWriter(filename))
outfile.Write(dump.ToString()); outfile.Write(dump.ToString());
Console.WriteLine("{0} has been saved.\nOpen in a spreadsheet application as values separated by semicolon.".F(filename)); Console.WriteLine("{0} has been saved.".F(filename));
if (!pureData)
Console.WriteLine("Open in a spreadsheet application as values separated by semicolon.");
} }
} }
} }