Files
OpenRA/RulesConverter/Program.cs
2010-01-09 20:52:01 +13:00

50 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenRa.FileFormats;
using System.IO;
using IjwFramework.Types;
using Yaml;
namespace RulesConverter
{
class Program
{
static void Main(string[] args)
{
FileSystem.Mount(new Folder("./"));
var ruleStreams = args
.Where(a => a.EndsWith(".ini"))
.Select(a => FileSystem.Open(a)).ToArray();
var rules = new IniFile(ruleStreams);
var outputFile = args.Single(a => a.EndsWith(".yaml"));
var categoryMap = new Dictionary<string,Pair<string,string>>
{
{ "VehicleTypes", Pair.New( "DefaultVehicle", "Vehicle" ) },
{ "ShipTypes", Pair.New( "DefaultShip", "Ship" ) },
{ "PlaneTypes", Pair.New( "DefaultPlane", "Plane" ) },
{ "DefenseTypes", Pair.New( "DefaultDefense", "Defense" ) },
{ "BuildingTypes", Pair.New( "DefaultBuilding", "Building" ) },
{ "InfantryTypes", Pair.New( "DefaultInfantry", "Infantry" ) },
};
using (var writer = File.CreateText(outputFile))
{
foreach (var cat in categoryMap)
foreach (var item in rules.GetSection(cat.Key).Select(a => a.Key))
{
var iniSection = rules.GetSection(item);
var yamlSection = new MappingNode(new Yaml.String(item), new Yaml.Null());
var doc = new Yaml.Mapping(new[] { yamlSection });
writer.Write(doc.Write());
}
}
}
}
}