Well, what I have started on now is a sort of generic Malfador data reader/writer. I know I tried something like this before, but for that I had to specially code each individual data file's reader/writer, but now with what I'm working on, you'll be able to create an XML-based schema to read or write any data file from SE4, Starfury, Dungeon Odyssey, or SE5, when it's released. For instance, here's the schema for a simplistic "mod" format consisting of only CompEnhancement.txt from SE4:
Code:
<?xml Version="1.0" encoding="UTF-8"?>
<MMSchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="MalfadorModSchema.xsd">
<File Name="CompEnhancement.txt">
<RecordType>
<Field Name="Long Name"/>
<Field Name="Short Name"/>
<Field Name="Description"/>
<Field Name="Code"/>
<Field Name="Cost Percent" Type="uint16"/>
<Field Name="Tonnage Percent" Type="uint16" />
<Field Name="Tonnage Structure Percent" Type="uint16" />
<Field Name="Damage Percent" Type="uint16" />
<Field Name="Shield Percent" Optional="true" Type="uint16"/>
<Field Name="Supply Percent" Type="uint16"/>
<Field Name="Range Modifier" Type="int8"/>
<Field Name="Weapon To Hit Modifier" Type="int8"/>
<Field Name="Vehicle Size Minimum" Type="uint16"/>
<Field Name="Vehicle Size Maximum" Optional="true" Type="uint16"/>
<Field Name="Comp Family Requirement" Optional="true" Type="string"/>
<Field Name="Weapon Type Requirement" Type="string" />
<Field Name="Vehicle Type" Type="string" />
<Field Name="Number of Tech Req" Optional="true" Default="0" Type="uint16" />
<FieldArray Name="Tech " Count="Number of Tech Req">
<Field Name="Area Req" Type="uint16" />
<Field Name="Level Req" Type="uint16" />
</FieldArray>
</RecordType>
</File>
</MMSchema>