Use superior DAT creation tools instead of direct DAT conversion.

This change includes a few changes meant to keep the information from each DAT and have it retained in a single object which can then be written out in any format or added to other DATs with very little issue. This new system is much more versitile since all it needs is a way to convert each DAT to XML and then use the built-in output to output from the XML to the target format. This also gives the ability to clean a DAT by "converting" a DAT to the same format, removing any improper tagging or the such.
This commit is contained in:
Matt Nadareski
2016-05-16 15:17:11 -07:00
parent d2e96a8f24
commit d90826b7a4
5 changed files with 75 additions and 172 deletions

View File

@@ -404,48 +404,59 @@ namespace SabreTools.Helper
if (headreader != null)
{
while (headreader.Read())
while (!headreader.EOF)
{
// We only want elements
if (headreader.NodeType != XmlNodeType.Element)
if (headreader.NodeType != XmlNodeType.Element || headreader.Name == "header")
{
headreader.Read();
continue;
}
// Get all header items (ONLY OVERWRITE IF THERE'S NO DATA)
switch (xtr.Name)
string content = "";
switch (headreader.Name)
{
case "name":
string readname = headreader.ReadElementContentAsString();
string readname = headreader.ReadElementContentAsString(); ;
datdata.Name = (datdata.Name == "" ? readname : "");
superdat = superdat || readname.Contains(" - SuperDAT");
break;
case "description":
datdata.Description = (datdata.Description == "" ? headreader.ReadElementContentAsString() : datdata.Description);
content = headreader.ReadElementContentAsString();
datdata.Description = (datdata.Description == "" ? content : datdata.Description);
break;
case "category":
datdata.Category = (datdata.Category == "" ? headreader.ReadElementContentAsString() : datdata.Category);
content = headreader.ReadElementContentAsString();
datdata.Category = (datdata.Category == "" ? content : datdata.Category);
break;
case "version":
datdata.Version = (datdata.Version == "" ? headreader.ReadElementContentAsString() : datdata.Version);
content = headreader.ReadElementContentAsString();
datdata.Version = (datdata.Version == "" ? content : datdata.Version);
break;
case "date":
datdata.Date = (datdata.Date == "" ? headreader.ReadElementContentAsString() : datdata.Date);
content = headreader.ReadElementContentAsString();
datdata.Date = (datdata.Date == "" ? content : datdata.Date);
break;
case "author":
datdata.Author = (datdata.Author == "" ? headreader.ReadElementContentAsString() : datdata.Author);
content = headreader.ReadElementContentAsString();
datdata.Author = (datdata.Author == "" ? content : datdata.Author);
break;
case "email":
datdata.Email = (datdata.Email == "" ? headreader.ReadElementContentAsString() : datdata.Email);
content = headreader.ReadElementContentAsString();
datdata.Email = (datdata.Email == "" ? content : datdata.Email);
break;
case "homepage":
datdata.Homepage = (datdata.Homepage == "" ? headreader.ReadElementContentAsString() : datdata.Homepage);
content = headreader.ReadElementContentAsString();
datdata.Homepage = (datdata.Homepage == "" ? content : datdata.Homepage);
break;
case "url":
datdata.Url = (datdata.Url == "" ? headreader.ReadElementContentAsString() : datdata.Url);
content = headreader.ReadElementContentAsString();
datdata.Url = (datdata.Url == "" ? content : datdata.Url);
break;
case "comment":
datdata.Comment = (datdata.Comment == "" ? headreader.ReadElementContentAsString() : datdata.Comment);
content = headreader.ReadElementContentAsString();
datdata.Comment = (datdata.Comment == "" ? content : datdata.Comment);
break;
case "clrmamepro":
if (headreader.GetAttribute("forcemerging") != null)
@@ -490,6 +501,7 @@ namespace SabreTools.Helper
break;
}
}
headreader.Read();
break;
}
}