mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Rename Header, remove redundant setters
This commit is contained in:
@@ -807,8 +807,8 @@ in -old DAT file. Ignores those entries in -old that are not in -new.";
|
||||
|
||||
// Create the encapsulating datfile
|
||||
DatFile datfile = DatFile.Create();
|
||||
datfile.SetName(name);
|
||||
datfile.SetDescription(description);
|
||||
datfile.Header.Name = name;
|
||||
datfile.Header.Description = description;
|
||||
|
||||
// Create the inputs
|
||||
List<string> dats = new List<string> { newdat };
|
||||
@@ -859,8 +859,8 @@ in -old DAT file. Ignores those entries in -old that are not in -new.";
|
||||
|
||||
// Create the encapsulating datfile
|
||||
DatFile datfile = DatFile.Create();
|
||||
datfile.SetName(string.IsNullOrWhiteSpace(name) ? "untitled" : name);
|
||||
datfile.SetDescription(description);
|
||||
datfile.Header.Name = string.IsNullOrWhiteSpace(name) ? "untitled" : name;
|
||||
datfile.Header.Description = description;
|
||||
|
||||
// Now run the D2D on the input and write out
|
||||
// TODO: All instances of Hash.DeepHashes should be made into 0x0 eventually
|
||||
@@ -1562,7 +1562,7 @@ contents of any changed dats.";
|
||||
|
||||
// First get a list of SHA-1's from the input DATs
|
||||
DatFile datroot = DatFile.Create();
|
||||
datroot.SetType("SuperDAT");
|
||||
datroot.Header.Type = "SuperDAT";
|
||||
|
||||
// TODO: All instances of Hash.DeepHashes should be made into 0x0 eventually
|
||||
datroot.PopulateFromDir(_dats, Hash.DeepHashes, false, false, SkipFileType.None, false, false, _tmpdir, false, null, true, null);
|
||||
|
||||
@@ -252,12 +252,12 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
string[] fields = new string[]
|
||||
{
|
||||
datItem.GetField(Field.MachineName, DatHeader.ExcludeFields),
|
||||
datItem.GetField(Field.Description, DatHeader.ExcludeFields),
|
||||
DatHeader.FileName,
|
||||
datItem.GetField(Field.CloneOf, DatHeader.ExcludeFields),
|
||||
datItem.GetField(Field.Year, DatHeader.ExcludeFields),
|
||||
datItem.GetField(Field.Manufacturer, DatHeader.ExcludeFields),
|
||||
datItem.GetField(Field.MachineName, Header.ExcludeFields),
|
||||
datItem.GetField(Field.Description, Header.ExcludeFields),
|
||||
Header.FileName,
|
||||
datItem.GetField(Field.CloneOf, Header.ExcludeFields),
|
||||
datItem.GetField(Field.Year, Header.ExcludeFields),
|
||||
datItem.GetField(Field.Manufacturer, Header.ExcludeFields),
|
||||
string.Empty, // datItem.GetField(Field.Category, DatHeader.ExcludeFields)
|
||||
string.Empty, // datItem.GetField(Field.Players, DatHeader.ExcludeFields)
|
||||
string.Empty, // datItem.GetField(Field.Rotation, DatHeader.ExcludeFields)
|
||||
@@ -267,7 +267,7 @@ namespace SabreTools.Library.DatFiles
|
||||
string.Empty, // datItem.GetField(Field.DisplayType, DatHeader.ExcludeFields)
|
||||
string.Empty, // datItem.GetField(Field.AltRomname, DatHeader.ExcludeFields)
|
||||
string.Empty, // datItem.GetField(Field.AltTitle, DatHeader.ExcludeFields)
|
||||
datItem.GetField(Field.Comment, DatHeader.ExcludeFields),
|
||||
datItem.GetField(Field.Comment, Header.ExcludeFields),
|
||||
string.Empty, // datItem.GetField(Field.Buttons, DatHeader.ExcludeFields)
|
||||
};
|
||||
|
||||
|
||||
@@ -119,63 +119,63 @@ namespace SabreTools.Library.DatFiles
|
||||
switch (itemKey)
|
||||
{
|
||||
case "name":
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? itemVal : DatHeader.Name);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? itemVal : Header.Name);
|
||||
superdat = superdat || itemVal.Contains(" - SuperDAT");
|
||||
|
||||
if (keep && superdat)
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? "SuperDAT" : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? "SuperDAT" : Header.Type);
|
||||
|
||||
break;
|
||||
case "description":
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? itemVal : DatHeader.Description);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? itemVal : Header.Description);
|
||||
break;
|
||||
case "rootdir":
|
||||
DatHeader.RootDir = (string.IsNullOrWhiteSpace(DatHeader.RootDir) ? itemVal : DatHeader.RootDir);
|
||||
Header.RootDir = (string.IsNullOrWhiteSpace(Header.RootDir) ? itemVal : Header.RootDir);
|
||||
break;
|
||||
case "category":
|
||||
DatHeader.Category = (string.IsNullOrWhiteSpace(DatHeader.Category) ? itemVal : DatHeader.Category);
|
||||
Header.Category = (string.IsNullOrWhiteSpace(Header.Category) ? itemVal : Header.Category);
|
||||
break;
|
||||
case "version":
|
||||
DatHeader.Version = (string.IsNullOrWhiteSpace(DatHeader.Version) ? itemVal : DatHeader.Version);
|
||||
Header.Version = (string.IsNullOrWhiteSpace(Header.Version) ? itemVal : Header.Version);
|
||||
break;
|
||||
case "date":
|
||||
DatHeader.Date = (string.IsNullOrWhiteSpace(DatHeader.Date) ? itemVal : DatHeader.Date);
|
||||
Header.Date = (string.IsNullOrWhiteSpace(Header.Date) ? itemVal : Header.Date);
|
||||
break;
|
||||
case "author":
|
||||
DatHeader.Author = (string.IsNullOrWhiteSpace(DatHeader.Author) ? itemVal : DatHeader.Author);
|
||||
Header.Author = (string.IsNullOrWhiteSpace(Header.Author) ? itemVal : Header.Author);
|
||||
break;
|
||||
case "email":
|
||||
DatHeader.Email = (string.IsNullOrWhiteSpace(DatHeader.Email) ? itemVal : DatHeader.Email);
|
||||
Header.Email = (string.IsNullOrWhiteSpace(Header.Email) ? itemVal : Header.Email);
|
||||
break;
|
||||
case "homepage":
|
||||
DatHeader.Homepage = (string.IsNullOrWhiteSpace(DatHeader.Homepage) ? itemVal : DatHeader.Homepage);
|
||||
Header.Homepage = (string.IsNullOrWhiteSpace(Header.Homepage) ? itemVal : Header.Homepage);
|
||||
break;
|
||||
case "url":
|
||||
DatHeader.Url = (string.IsNullOrWhiteSpace(DatHeader.Url) ? itemVal : DatHeader.Url);
|
||||
Header.Url = (string.IsNullOrWhiteSpace(Header.Url) ? itemVal : Header.Url);
|
||||
break;
|
||||
case "comment":
|
||||
DatHeader.Comment = (string.IsNullOrWhiteSpace(DatHeader.Comment) ? itemVal : DatHeader.Comment);
|
||||
Header.Comment = (string.IsNullOrWhiteSpace(Header.Comment) ? itemVal : Header.Comment);
|
||||
break;
|
||||
case "header":
|
||||
DatHeader.Header = (string.IsNullOrWhiteSpace(DatHeader.Header) ? itemVal : DatHeader.Header);
|
||||
Header.Header = (string.IsNullOrWhiteSpace(Header.Header) ? itemVal : Header.Header);
|
||||
break;
|
||||
case "type":
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? itemVal : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? itemVal : Header.Type);
|
||||
superdat = superdat || itemVal.Contains("SuperDAT");
|
||||
break;
|
||||
case "forcemerging":
|
||||
if (DatHeader.ForceMerging == ForceMerging.None)
|
||||
DatHeader.ForceMerging = itemVal.AsForceMerging();
|
||||
if (Header.ForceMerging == ForceMerging.None)
|
||||
Header.ForceMerging = itemVal.AsForceMerging();
|
||||
|
||||
break;
|
||||
case "forcezipping":
|
||||
if (DatHeader.ForcePacking == ForcePacking.None)
|
||||
DatHeader.ForcePacking = itemVal.AsForcePacking();
|
||||
if (Header.ForcePacking == ForcePacking.None)
|
||||
Header.ForcePacking = itemVal.AsForcePacking();
|
||||
|
||||
break;
|
||||
case "forcepacking":
|
||||
if (DatHeader.ForcePacking == ForcePacking.None)
|
||||
DatHeader.ForcePacking = itemVal.AsForcePacking();
|
||||
if (Header.ForcePacking == ForcePacking.None)
|
||||
Header.ForcePacking = itemVal.AsForcePacking();
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -547,24 +547,24 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
cmpw.WriteStartElement("clrmamepro");
|
||||
|
||||
cmpw.WriteStandalone("name", DatHeader.Name);
|
||||
cmpw.WriteStandalone("description", DatHeader.Description);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Category))
|
||||
cmpw.WriteStandalone("category", DatHeader.Category);
|
||||
cmpw.WriteStandalone("version", DatHeader.Version);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Date))
|
||||
cmpw.WriteStandalone("date", DatHeader.Date);
|
||||
cmpw.WriteStandalone("author", DatHeader.Author);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Email))
|
||||
cmpw.WriteStandalone("email", DatHeader.Email);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Homepage))
|
||||
cmpw.WriteStandalone("homepage", DatHeader.Homepage);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Url))
|
||||
cmpw.WriteStandalone("url", DatHeader.Url);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Comment))
|
||||
cmpw.WriteStandalone("comment", DatHeader.Comment);
|
||||
cmpw.WriteStandalone("name", Header.Name);
|
||||
cmpw.WriteStandalone("description", Header.Description);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Category))
|
||||
cmpw.WriteStandalone("category", Header.Category);
|
||||
cmpw.WriteStandalone("version", Header.Version);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Date))
|
||||
cmpw.WriteStandalone("date", Header.Date);
|
||||
cmpw.WriteStandalone("author", Header.Author);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Email))
|
||||
cmpw.WriteStandalone("email", Header.Email);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Homepage))
|
||||
cmpw.WriteStandalone("homepage", Header.Homepage);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Url))
|
||||
cmpw.WriteStandalone("url", Header.Url);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Comment))
|
||||
cmpw.WriteStandalone("comment", Header.Comment);
|
||||
|
||||
switch (DatHeader.ForcePacking)
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case ForcePacking.Unzip:
|
||||
cmpw.WriteStandalone("forcezipping", "no", false);
|
||||
@@ -574,7 +574,7 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
|
||||
switch (DatHeader.ForceMerging)
|
||||
switch (Header.ForceMerging)
|
||||
{
|
||||
case ForceMerging.Full:
|
||||
cmpw.WriteStandalone("forcemerging", "full", false);
|
||||
@@ -619,22 +619,22 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Build the state based on excluded fields
|
||||
cmpw.WriteStartElement(datItem.MachineType == MachineType.Bios ? "resource" : "game");
|
||||
cmpw.WriteStandalone("name", datItem.GetField(Field.MachineName, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RomOf, DatHeader.ExcludeFields)))
|
||||
cmpw.WriteStandalone("name", datItem.GetField(Field.MachineName, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RomOf, Header.ExcludeFields)))
|
||||
cmpw.WriteStandalone("romof", datItem.RomOf);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, Header.ExcludeFields)))
|
||||
cmpw.WriteStandalone("cloneof", datItem.CloneOf);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, Header.ExcludeFields)))
|
||||
cmpw.WriteStandalone("sampleof", datItem.SampleOf);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, Header.ExcludeFields)))
|
||||
cmpw.WriteStandalone("description", datItem.MachineDescription);
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, DatHeader.ExcludeFields)))
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, Header.ExcludeFields)))
|
||||
cmpw.WriteStandalone("description", datItem.MachineName);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, Header.ExcludeFields)))
|
||||
cmpw.WriteStandalone("year", datItem.Year);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Manufacturer, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Manufacturer, Header.ExcludeFields)))
|
||||
cmpw.WriteStandalone("manufacturer", datItem.Manufacturer);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, Header.ExcludeFields)))
|
||||
cmpw.WriteStandalone("category", datItem.Category);
|
||||
|
||||
cmpw.Flush();
|
||||
@@ -659,7 +659,7 @@ namespace SabreTools.Library.DatFiles
|
||||
try
|
||||
{
|
||||
// Build the state based on excluded fields
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, Header.ExcludeFields)))
|
||||
cmpw.WriteStandalone("sampleof", datItem.SampleOf);
|
||||
|
||||
// End game
|
||||
@@ -700,17 +700,17 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
case ItemType.Archive:
|
||||
cmpw.WriteStartElement("archive");
|
||||
cmpw.WriteAttributeString("name", datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
cmpw.WriteAttributeString("name", datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
cmpw.WriteEndElement();
|
||||
break;
|
||||
|
||||
case ItemType.BiosSet:
|
||||
var biosSet = datItem as BiosSet;
|
||||
cmpw.WriteStartElement("biosset");
|
||||
cmpw.WriteAttributeString("name", biosSet.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(biosSet.GetField(Field.BiosDescription, DatHeader.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("name", biosSet.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(biosSet.GetField(Field.BiosDescription, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("description", biosSet.Description);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
cmpw.WriteAttributeString("default", biosSet.Default.ToString().ToLowerInvariant());
|
||||
cmpw.WriteEndElement();
|
||||
break;
|
||||
@@ -718,22 +718,22 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Disk:
|
||||
var disk = datItem as Disk;
|
||||
cmpw.WriteStartElement("disk");
|
||||
cmpw.WriteAttributeString("name", disk.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("name", disk.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
cmpw.WriteAttributeString("flags", disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
cmpw.WriteEndElement();
|
||||
break;
|
||||
@@ -741,14 +741,14 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Release:
|
||||
var release = datItem as Release;
|
||||
cmpw.WriteStartElement("release");
|
||||
cmpw.WriteAttributeString("name", release.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, DatHeader.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("name", release.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("region", release.Region);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Language, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Language, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("language", release.Language);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("date", release.Date);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Default] && release.Default != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Default] && release.Default != null)
|
||||
cmpw.WriteAttributeString("default", release.Default.ToString().ToLowerInvariant());
|
||||
cmpw.WriteEndElement();
|
||||
break;
|
||||
@@ -756,35 +756,35 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Rom:
|
||||
var rom = datItem as Rom;
|
||||
cmpw.WriteStartElement("rom");
|
||||
cmpw.WriteAttributeString("name", rom.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
cmpw.WriteAttributeString("name", rom.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!Header.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
cmpw.WriteAttributeString("size", rom.Size.ToString());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("date", rom.Date);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
cmpw.WriteAttributeString("flags", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
cmpw.WriteEndElement();
|
||||
break;
|
||||
|
||||
case ItemType.Sample:
|
||||
cmpw.WriteStartElement("sample");
|
||||
cmpw.WriteAttributeString("name", datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
cmpw.WriteAttributeString("name", datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
cmpw.WriteEndElement();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -22,53 +22,20 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
#region Publically available fields
|
||||
|
||||
// Internal DatHeader values
|
||||
public DatHeader DatHeader { get; set; } = new DatHeader();
|
||||
/// <summary>
|
||||
/// Header values
|
||||
/// </summary>
|
||||
public DatHeader Header { get; set; } = new DatHeader();
|
||||
|
||||
// DatItems dictionary
|
||||
/// <summary>
|
||||
/// DatItems and related statistics
|
||||
/// </summary>
|
||||
public ItemDictionary Items { get; set; } = new ItemDictionary();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Instance Methods
|
||||
|
||||
#region Accessors
|
||||
|
||||
/// <summary>
|
||||
/// Set the Date header value
|
||||
/// </summary>
|
||||
/// <param name="date"></param>
|
||||
public void SetDate(string date)
|
||||
{
|
||||
DatHeader.Date = date;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the Description header value
|
||||
/// </summary>
|
||||
public void SetDescription(string description)
|
||||
{
|
||||
DatHeader.Description = description;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the Name header value
|
||||
/// </summary>
|
||||
public void SetName(string name)
|
||||
{
|
||||
DatHeader.Name = name;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the Type header value
|
||||
/// </summary>
|
||||
public void SetType(string type)
|
||||
{
|
||||
DatHeader.Type = type;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
/// <summary>
|
||||
@@ -79,7 +46,7 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
if (datFile != null)
|
||||
{
|
||||
DatHeader = datFile.DatHeader;
|
||||
Header = datFile.Header;
|
||||
this.Items = datFile.Items;
|
||||
}
|
||||
}
|
||||
@@ -185,7 +152,7 @@ namespace SabreTools.Library.DatFiles
|
||||
public static DatFile Create(DatHeader datHeader)
|
||||
{
|
||||
DatFile datFile = Create(datHeader.DatFormat);
|
||||
datFile.DatHeader = (DatHeader)datHeader.Clone();
|
||||
datFile.Header = (DatHeader)datHeader.Clone();
|
||||
return datFile;
|
||||
}
|
||||
|
||||
@@ -218,7 +185,7 @@ namespace SabreTools.Library.DatFiles
|
||||
/// <param name="datHeader">DatHeader to get the values from</param>
|
||||
public void ApplyDatHeader(DatHeader datHeader)
|
||||
{
|
||||
DatHeader.ConditionalCopy(datHeader);
|
||||
Header.ConditionalCopy(datHeader);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -328,7 +295,7 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
var input = inputs[i];
|
||||
Globals.Logger.User($"Adding DAT: {input.CurrentPath}");
|
||||
datFiles[i] = Create(DatHeader.CloneFiltering());
|
||||
datFiles[i] = Create(Header.CloneFiltering());
|
||||
datFiles[i].Parse(input, i, keep: true);
|
||||
});
|
||||
|
||||
@@ -345,7 +312,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
watch.Stop();
|
||||
|
||||
return datFiles.Select(d => d.DatHeader).ToList();
|
||||
return datFiles.Select(d => d.Header).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -428,7 +395,7 @@ namespace SabreTools.Library.DatFiles
|
||||
Globals.Logger.User($"Replacing items in '{path.CurrentPath}' from the base DAT");
|
||||
|
||||
// First we parse in the DAT internally
|
||||
DatFile intDat = Create(DatHeader.CloneFiltering());
|
||||
DatFile intDat = Create(Header.CloneFiltering());
|
||||
intDat.Parse(path, 1, keep: true);
|
||||
filter.FilterDatFile(intDat, false /* useTags */);
|
||||
|
||||
@@ -917,10 +884,10 @@ namespace SabreTools.Library.DatFiles
|
||||
}
|
||||
else
|
||||
{
|
||||
diffData = Create(DatHeader);
|
||||
diffData.DatHeader.FileName += innerpost;
|
||||
diffData.DatHeader.Name += innerpost;
|
||||
diffData.DatHeader.Description += innerpost;
|
||||
diffData = Create(Header);
|
||||
diffData.Header.FileName += innerpost;
|
||||
diffData.Header.Name += innerpost;
|
||||
diffData.Header.Description += innerpost;
|
||||
}
|
||||
|
||||
diffData.Items = new ItemDictionary();
|
||||
@@ -989,23 +956,23 @@ namespace SabreTools.Library.DatFiles
|
||||
DatFile dupeData = Create();
|
||||
|
||||
// Fill in any information not in the base DAT
|
||||
if (string.IsNullOrWhiteSpace(DatHeader.FileName))
|
||||
DatHeader.FileName = "All DATs";
|
||||
if (string.IsNullOrWhiteSpace(Header.FileName))
|
||||
Header.FileName = "All DATs";
|
||||
|
||||
if (string.IsNullOrWhiteSpace(DatHeader.Name))
|
||||
DatHeader.Name = "All DATs";
|
||||
if (string.IsNullOrWhiteSpace(Header.Name))
|
||||
Header.Name = "All DATs";
|
||||
|
||||
if (string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
DatHeader.Description = "All DATs";
|
||||
if (string.IsNullOrWhiteSpace(Header.Description))
|
||||
Header.Description = "All DATs";
|
||||
|
||||
// Don't have External dupes
|
||||
if (diff.HasFlag(UpdateMode.DiffNoDupesOnly))
|
||||
{
|
||||
post = " (No Duplicates)";
|
||||
outerDiffData = Create(DatHeader);
|
||||
outerDiffData.DatHeader.FileName += post;
|
||||
outerDiffData.DatHeader.Name += post;
|
||||
outerDiffData.DatHeader.Description += post;
|
||||
outerDiffData = Create(Header);
|
||||
outerDiffData.Header.FileName += post;
|
||||
outerDiffData.Header.Name += post;
|
||||
outerDiffData.Header.Description += post;
|
||||
outerDiffData.Items = new ItemDictionary();
|
||||
}
|
||||
|
||||
@@ -1013,10 +980,10 @@ namespace SabreTools.Library.DatFiles
|
||||
if (diff.HasFlag(UpdateMode.DiffDupesOnly))
|
||||
{
|
||||
post = " (Duplicates)";
|
||||
dupeData = Create(DatHeader);
|
||||
dupeData.DatHeader.FileName += post;
|
||||
dupeData.DatHeader.Name += post;
|
||||
dupeData.DatHeader.Description += post;
|
||||
dupeData = Create(Header);
|
||||
dupeData.Header.FileName += post;
|
||||
dupeData.Header.Name += post;
|
||||
dupeData.Header.Description += post;
|
||||
dupeData.Items = new ItemDictionary();
|
||||
}
|
||||
|
||||
@@ -1031,10 +998,10 @@ namespace SabreTools.Library.DatFiles
|
||||
Parallel.For(0, inputs.Count, Globals.ParallelOptions, j =>
|
||||
{
|
||||
string innerpost = $" ({j} - {inputs[j].GetNormalizedFileName(true)} Only)";
|
||||
DatFile diffData = Create(DatHeader);
|
||||
diffData.DatHeader.FileName += innerpost;
|
||||
diffData.DatHeader.Name += innerpost;
|
||||
diffData.DatHeader.Description += innerpost;
|
||||
DatFile diffData = Create(Header);
|
||||
diffData.Header.FileName += innerpost;
|
||||
diffData.Header.Name += innerpost;
|
||||
diffData.Header.Description += innerpost;
|
||||
diffData.Items = new ItemDictionary();
|
||||
outDatsArray[j] = diffData;
|
||||
});
|
||||
@@ -1128,7 +1095,7 @@ namespace SabreTools.Library.DatFiles
|
||||
private void MergeNoDiff(List<ParentablePath> inputs, string outDir)
|
||||
{
|
||||
// If we're in SuperDAT mode, prefix all games with their respective DATs
|
||||
if (DatHeader.Type == "SuperDAT")
|
||||
if (Header.Type == "SuperDAT")
|
||||
{
|
||||
Parallel.ForEach(Items.Keys, Globals.ParallelOptions, key =>
|
||||
{
|
||||
@@ -1170,12 +1137,12 @@ namespace SabreTools.Library.DatFiles
|
||||
// Iterate over the files
|
||||
foreach (ParentablePath file in inputFileNames)
|
||||
{
|
||||
DatFile innerDatdata = Create(DatHeader);
|
||||
DatFile innerDatdata = Create(Header);
|
||||
Globals.Logger.User($"Processing '{Path.GetFileName(file.CurrentPath)}'");
|
||||
innerDatdata.Parse(file, keep: true,
|
||||
keepext: innerDatdata.DatHeader.DatFormat.HasFlag(DatFormat.TSV)
|
||||
|| innerDatdata.DatHeader.DatFormat.HasFlag(DatFormat.CSV)
|
||||
|| innerDatdata.DatHeader.DatFormat.HasFlag(DatFormat.SSV));
|
||||
keepext: innerDatdata.Header.DatFormat.HasFlag(DatFormat.TSV)
|
||||
|| innerDatdata.Header.DatFormat.HasFlag(DatFormat.CSV)
|
||||
|| innerDatdata.Header.DatFormat.HasFlag(DatFormat.SSV));
|
||||
filter.FilterDatFile(innerDatdata, false /* useTags */);
|
||||
|
||||
// Get the correct output path
|
||||
@@ -1218,10 +1185,10 @@ namespace SabreTools.Library.DatFiles
|
||||
return;
|
||||
|
||||
// If the output filename isn't set already, get the internal filename
|
||||
DatHeader.FileName = (string.IsNullOrWhiteSpace(DatHeader.FileName) ? (keepext ? Path.GetFileName(currentPath) : Path.GetFileNameWithoutExtension(currentPath)) : DatHeader.FileName);
|
||||
Header.FileName = (string.IsNullOrWhiteSpace(Header.FileName) ? (keepext ? Path.GetFileName(currentPath) : Path.GetFileNameWithoutExtension(currentPath)) : Header.FileName);
|
||||
|
||||
// If the output type isn't set already, get the internal output type
|
||||
DatHeader.DatFormat = (DatHeader.DatFormat == 0 ? currentPath.GetDatFormat() : DatHeader.DatFormat);
|
||||
Header.DatFormat = (Header.DatFormat == 0 ? currentPath.GetDatFormat() : Header.DatFormat);
|
||||
Items.SetBucketedBy(BucketedBy.CRC); // Setting this because it can reduce issues later
|
||||
|
||||
// Now parse the correct type of DAT
|
||||
@@ -1247,7 +1214,7 @@ namespace SabreTools.Library.DatFiles
|
||||
// If there's no name in the rom, we log and skip it
|
||||
if (item.Name == null)
|
||||
{
|
||||
Globals.Logger.Warning($"{DatHeader.FileName}: Rom with no name found! Skipping...");
|
||||
Globals.Logger.Warning($"{Header.FileName}: Rom with no name found! Skipping...");
|
||||
return key;
|
||||
}
|
||||
|
||||
@@ -1269,7 +1236,7 @@ namespace SabreTools.Library.DatFiles
|
||||
&& string.IsNullOrWhiteSpace(itemRom.SHA512))
|
||||
{
|
||||
// No-op, just catch it so it doesn't go further
|
||||
Globals.Logger.Verbose($"{DatHeader.FileName}: Entry with only SHA-1 found - '{itemRom.Name}'");
|
||||
Globals.Logger.Verbose($"{Header.FileName}: Entry with only SHA-1 found - '{itemRom.Name}'");
|
||||
}
|
||||
|
||||
// If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info
|
||||
@@ -1303,7 +1270,7 @@ namespace SabreTools.Library.DatFiles
|
||||
// If the file has no size and it's not the above case, skip and log
|
||||
else if (itemRom.ItemStatus != ItemStatus.Nodump && (itemRom.Size == 0 || itemRom.Size == -1))
|
||||
{
|
||||
Globals.Logger.Verbose($"{DatHeader.FileName}: Incomplete entry for '{itemRom.Name}' will be output as nodump");
|
||||
Globals.Logger.Verbose($"{Header.FileName}: Incomplete entry for '{itemRom.Name}' will be output as nodump");
|
||||
itemRom.ItemStatus = ItemStatus.Nodump;
|
||||
}
|
||||
// If the file has a size but aboslutely no hashes, skip and log
|
||||
@@ -1319,7 +1286,7 @@ namespace SabreTools.Library.DatFiles
|
||||
&& string.IsNullOrWhiteSpace(itemRom.SHA384)
|
||||
&& string.IsNullOrWhiteSpace(itemRom.SHA512))
|
||||
{
|
||||
Globals.Logger.Verbose($"{DatHeader.FileName}: Incomplete entry for '{itemRom.Name}' will be output as nodump");
|
||||
Globals.Logger.Verbose($"{Header.FileName}: Incomplete entry for '{itemRom.Name}' will be output as nodump");
|
||||
itemRom.ItemStatus = ItemStatus.Nodump;
|
||||
}
|
||||
|
||||
@@ -1387,23 +1354,23 @@ namespace SabreTools.Library.DatFiles
|
||||
bool addBlanks, bool addDate, string tempDir, bool copyFiles, string headerToCheckAgainst, bool chdsAsFiles, Filter filter, bool useTags = false)
|
||||
{
|
||||
// If the description is defined but not the name, set the name from the description
|
||||
if (string.IsNullOrWhiteSpace(DatHeader.Name) && !string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
if (string.IsNullOrWhiteSpace(Header.Name) && !string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
DatHeader.Name = DatHeader.Description;
|
||||
Header.Name = Header.Description;
|
||||
}
|
||||
|
||||
// If the name is defined but not the description, set the description from the name
|
||||
else if (!string.IsNullOrWhiteSpace(DatHeader.Name) && string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
else if (!string.IsNullOrWhiteSpace(Header.Name) && string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
DatHeader.Description = DatHeader.Name + (bare ? string.Empty : $" ({DatHeader.Date})");
|
||||
Header.Description = Header.Name + (bare ? string.Empty : $" ({Header.Date})");
|
||||
}
|
||||
|
||||
// If neither the name or description are defined, set them from the automatic values
|
||||
else if (string.IsNullOrWhiteSpace(DatHeader.Name) && string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
else if (string.IsNullOrWhiteSpace(Header.Name) && string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
string[] splitpath = basePath.TrimEnd(Path.DirectorySeparatorChar).Split(Path.DirectorySeparatorChar);
|
||||
DatHeader.Name = splitpath.Last();
|
||||
DatHeader.Description = DatHeader.Name + (bare ? string.Empty : $" ({DatHeader.Date})");
|
||||
Header.Name = splitpath.Last();
|
||||
Header.Description = Header.Name + (bare ? string.Empty : $" ({Header.Date})");
|
||||
}
|
||||
|
||||
// Clean the temp directory path
|
||||
@@ -1423,7 +1390,7 @@ namespace SabreTools.Library.DatFiles
|
||||
});
|
||||
|
||||
// Now find all folders that are empty, if we are supposed to
|
||||
if (!DatHeader.Romba && addBlanks)
|
||||
if (!Header.Romba && addBlanks)
|
||||
{
|
||||
List<string> empties = DirectoryExtensions.ListEmpty(basePath);
|
||||
Parallel.ForEach(empties, Globals.ParallelOptions, dir =>
|
||||
@@ -1436,7 +1403,7 @@ namespace SabreTools.Library.DatFiles
|
||||
string romname = string.Empty;
|
||||
|
||||
// If we have a SuperDAT, we want anything that's not the base path as the game, and the file as the rom
|
||||
if (DatHeader.Type == "SuperDAT")
|
||||
if (Header.Type == "SuperDAT")
|
||||
{
|
||||
gamename = fulldir.Remove(0, basePath.Length + 1);
|
||||
romname = "_";
|
||||
@@ -1494,7 +1461,7 @@ namespace SabreTools.Library.DatFiles
|
||||
SkipFileType skipFileType, bool addBlanks, bool addDate, string tempDir, bool copyFiles, string headerToCheckAgainst, bool chdsAsFiles)
|
||||
{
|
||||
// Special case for if we are in Romba mode (all names are supposed to be SHA-1 hashes)
|
||||
if (DatHeader.Romba)
|
||||
if (Header.Romba)
|
||||
{
|
||||
GZipArchive gzarc = new GZipArchive(item);
|
||||
BaseFile baseFile = gzarc.GetTorrentGZFileInfo();
|
||||
@@ -1658,7 +1625,7 @@ namespace SabreTools.Library.DatFiles
|
||||
if (string.IsNullOrWhiteSpace(parent))
|
||||
{
|
||||
// If we have a SuperDAT, we want anything that's not the base path as the game, and the file as the rom
|
||||
if (DatHeader.Type == "SuperDAT")
|
||||
if (Header.Type == "SuperDAT")
|
||||
{
|
||||
gamename = Path.GetDirectoryName(item.Remove(0, basepath.Length));
|
||||
romname = Path.GetFileName(item);
|
||||
@@ -1676,7 +1643,7 @@ namespace SabreTools.Library.DatFiles
|
||||
else
|
||||
{
|
||||
// If we have a SuperDAT, we want the archive name as the game, and the file as everything else (?)
|
||||
if (DatHeader.Type == "SuperDAT")
|
||||
if (Header.Type == "SuperDAT")
|
||||
{
|
||||
gamename = parent;
|
||||
romname = datItem.Name;
|
||||
@@ -1749,9 +1716,9 @@ namespace SabreTools.Library.DatFiles
|
||||
outDir = DirectoryExtensions.Ensure(outDir, create: true);
|
||||
|
||||
// Now we want to get forcepack flag if it's not overridden
|
||||
if (outputFormat == OutputFormat.Folder && DatHeader.ForcePacking != ForcePacking.None)
|
||||
if (outputFormat == OutputFormat.Folder && Header.ForcePacking != ForcePacking.None)
|
||||
{
|
||||
switch (DatHeader.ForcePacking)
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case ForcePacking.Zip:
|
||||
outputFormat = OutputFormat.TorrentZip;
|
||||
@@ -1880,9 +1847,9 @@ namespace SabreTools.Library.DatFiles
|
||||
// If we're updating the DAT, output to the rebuild directory
|
||||
if (updateDat)
|
||||
{
|
||||
DatHeader.FileName = $"fixDAT_{DatHeader.FileName}";
|
||||
DatHeader.Name = $"fixDAT_{DatHeader.Name}";
|
||||
DatHeader.Description = $"fixDAT_{DatHeader.Description}";
|
||||
Header.FileName = $"fixDAT_{Header.FileName}";
|
||||
Header.Name = $"fixDAT_{Header.Name}";
|
||||
Header.Description = $"fixDAT_{Header.Description}";
|
||||
Items.ClearMarked();
|
||||
Write(outDir);
|
||||
}
|
||||
@@ -1933,9 +1900,9 @@ namespace SabreTools.Library.DatFiles
|
||||
}
|
||||
|
||||
// Now we want to get forcepack flag if it's not overridden
|
||||
if (outputFormat == OutputFormat.Folder && DatHeader.ForcePacking != ForcePacking.None)
|
||||
if (outputFormat == OutputFormat.Folder && Header.ForcePacking != ForcePacking.None)
|
||||
{
|
||||
switch (DatHeader.ForcePacking)
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case ForcePacking.Zip:
|
||||
outputFormat = OutputFormat.TorrentZip;
|
||||
@@ -2017,9 +1984,9 @@ namespace SabreTools.Library.DatFiles
|
||||
// If we're updating the DAT, output to the rebuild directory
|
||||
if (updateDat)
|
||||
{
|
||||
DatHeader.FileName = $"fixDAT_{DatHeader.FileName}";
|
||||
DatHeader.Name = $"fixDAT_{DatHeader.Name}";
|
||||
DatHeader.Description = $"fixDAT_{DatHeader.Description}";
|
||||
Header.FileName = $"fixDAT_{Header.FileName}";
|
||||
Header.Name = $"fixDAT_{Header.Name}";
|
||||
Header.Description = $"fixDAT_{Header.Description}";
|
||||
Items.ClearMarked();
|
||||
Write(outDir);
|
||||
}
|
||||
@@ -2442,9 +2409,9 @@ namespace SabreTools.Library.DatFiles
|
||||
watch.Stop();
|
||||
|
||||
// If there are any entries in the DAT, output to the rebuild directory
|
||||
DatHeader.FileName = $"fixDAT_{DatHeader.FileName}";
|
||||
DatHeader.Name = $"fixDAT_{DatHeader.Name}";
|
||||
DatHeader.Description = $"fixDAT_{DatHeader.Description}";
|
||||
Header.FileName = $"fixDAT_{Header.FileName}";
|
||||
Header.Name = $"fixDAT_{Header.Name}";
|
||||
Header.Description = $"fixDAT_{Header.Description}";
|
||||
Items.ClearMarked();
|
||||
Write();
|
||||
|
||||
@@ -2476,12 +2443,12 @@ namespace SabreTools.Library.DatFiles
|
||||
}
|
||||
|
||||
// Setup the fixdat
|
||||
DatFile matched = Create(DatHeader);
|
||||
DatFile matched = Create(Header);
|
||||
matched.Items = new ItemDictionary();
|
||||
matched.DatHeader.FileName = $"fixDat_{matched.DatHeader.FileName}";
|
||||
matched.DatHeader.Name = $"fixDat_{matched.DatHeader.Name}";
|
||||
matched.DatHeader.Description = $"fixDat_{matched.DatHeader.Description}";
|
||||
matched.DatHeader.DatFormat = DatFormat.Logiqx;
|
||||
matched.Header.FileName = $"fixDat_{matched.Header.FileName}";
|
||||
matched.Header.Name = $"fixDat_{matched.Header.Name}";
|
||||
matched.Header.Description = $"fixDat_{matched.Header.Description}";
|
||||
matched.Header.DatFormat = DatFormat.Logiqx;
|
||||
|
||||
// If we are checking hashes only, essentially diff the inputs
|
||||
if (hashOnly)
|
||||
@@ -2578,10 +2545,10 @@ namespace SabreTools.Library.DatFiles
|
||||
SplitByType(outDir);
|
||||
|
||||
// Now re-empty the DAT to make room for the next one
|
||||
DatFormat tempFormat = DatHeader.DatFormat;
|
||||
DatHeader = new DatHeader();
|
||||
DatFormat tempFormat = Header.DatFormat;
|
||||
Header = new DatHeader();
|
||||
Items = new ItemDictionary();
|
||||
DatHeader.DatFormat = tempFormat;
|
||||
Header.DatFormat = tempFormat;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2606,15 +2573,15 @@ namespace SabreTools.Library.DatFiles
|
||||
string newExtBString = string.Join(",", newExtB);
|
||||
|
||||
// Set all of the appropriate outputs for each of the subsets
|
||||
DatFile datdataA = Create(DatHeader.CloneStandard());
|
||||
datdataA.DatHeader.FileName += $" ({newExtAString})";
|
||||
datdataA.DatHeader.Name += $" ({newExtAString})";
|
||||
datdataA.DatHeader.Description += $" ({newExtAString})";
|
||||
DatFile datdataA = Create(Header.CloneStandard());
|
||||
datdataA.Header.FileName += $" ({newExtAString})";
|
||||
datdataA.Header.Name += $" ({newExtAString})";
|
||||
datdataA.Header.Description += $" ({newExtAString})";
|
||||
|
||||
DatFile datdataB = Create(DatHeader.CloneStandard());
|
||||
datdataB.DatHeader.FileName += $" ({newExtBString})";
|
||||
datdataB.DatHeader.Name += $" ({newExtBString})";
|
||||
datdataB.DatHeader.Description += $" ({newExtBString})";
|
||||
DatFile datdataB = Create(Header.CloneStandard());
|
||||
datdataB.Header.FileName += $" ({newExtBString})";
|
||||
datdataB.Header.Name += $" ({newExtBString})";
|
||||
datdataB.Header.Description += $" ({newExtBString})";
|
||||
|
||||
// Now separate the roms accordingly
|
||||
Parallel.ForEach(Items.Keys, Globals.ParallelOptions, key =>
|
||||
@@ -2655,52 +2622,52 @@ namespace SabreTools.Library.DatFiles
|
||||
// Create each of the respective output DATs
|
||||
Globals.Logger.User("Creating and populating new DATs");
|
||||
|
||||
DatFile nodump = Create(DatHeader.CloneStandard());
|
||||
nodump.DatHeader.FileName += " (Nodump)";
|
||||
nodump.DatHeader.Name += " (Nodump)";
|
||||
nodump.DatHeader.Description += " (Nodump)";
|
||||
DatFile nodump = Create(Header.CloneStandard());
|
||||
nodump.Header.FileName += " (Nodump)";
|
||||
nodump.Header.Name += " (Nodump)";
|
||||
nodump.Header.Description += " (Nodump)";
|
||||
|
||||
DatFile sha512 = Create(DatHeader.CloneStandard());
|
||||
sha512.DatHeader.FileName += " (SHA-512)";
|
||||
sha512.DatHeader.Name += " (SHA-512)";
|
||||
sha512.DatHeader.Description += " (SHA-512)";
|
||||
DatFile sha512 = Create(Header.CloneStandard());
|
||||
sha512.Header.FileName += " (SHA-512)";
|
||||
sha512.Header.Name += " (SHA-512)";
|
||||
sha512.Header.Description += " (SHA-512)";
|
||||
|
||||
DatFile sha384 = Create(DatHeader.CloneStandard());
|
||||
sha384.DatHeader.FileName += " (SHA-384)";
|
||||
sha384.DatHeader.Name += " (SHA-384)";
|
||||
sha384.DatHeader.Description += " (SHA-384)";
|
||||
DatFile sha384 = Create(Header.CloneStandard());
|
||||
sha384.Header.FileName += " (SHA-384)";
|
||||
sha384.Header.Name += " (SHA-384)";
|
||||
sha384.Header.Description += " (SHA-384)";
|
||||
|
||||
DatFile sha256 = Create(DatHeader.CloneStandard());
|
||||
sha256.DatHeader.FileName += " (SHA-256)";
|
||||
sha256.DatHeader.Name += " (SHA-256)";
|
||||
sha256.DatHeader.Description += " (SHA-256)";
|
||||
DatFile sha256 = Create(Header.CloneStandard());
|
||||
sha256.Header.FileName += " (SHA-256)";
|
||||
sha256.Header.Name += " (SHA-256)";
|
||||
sha256.Header.Description += " (SHA-256)";
|
||||
|
||||
DatFile sha1 = Create(DatHeader.CloneStandard());
|
||||
sha1.DatHeader.FileName += " (SHA-1)";
|
||||
sha1.DatHeader.Name += " (SHA-1)";
|
||||
sha1.DatHeader.Description += " (SHA-1)";
|
||||
DatFile sha1 = Create(Header.CloneStandard());
|
||||
sha1.Header.FileName += " (SHA-1)";
|
||||
sha1.Header.Name += " (SHA-1)";
|
||||
sha1.Header.Description += " (SHA-1)";
|
||||
|
||||
#if NET_FRAMEWORK
|
||||
DatFile ripemd160 = Create(DatHeader.CloneStandard());
|
||||
ripemd160.DatHeader.FileName += " (RIPEMD160)";
|
||||
ripemd160.DatHeader.Name += " (RIPEMD160)";
|
||||
ripemd160.DatHeader.Description += " (RIPEMD160)";
|
||||
DatFile ripemd160 = Create(Header.CloneStandard());
|
||||
ripemd160.Header.FileName += " (RIPEMD160)";
|
||||
ripemd160.Header.Name += " (RIPEMD160)";
|
||||
ripemd160.Header.Description += " (RIPEMD160)";
|
||||
#endif
|
||||
|
||||
DatFile md5 = Create(DatHeader.CloneStandard());
|
||||
md5.DatHeader.FileName += " (MD5)";
|
||||
md5.DatHeader.Name += " (MD5)";
|
||||
md5.DatHeader.Description += " (MD5)";
|
||||
DatFile md5 = Create(Header.CloneStandard());
|
||||
md5.Header.FileName += " (MD5)";
|
||||
md5.Header.Name += " (MD5)";
|
||||
md5.Header.Description += " (MD5)";
|
||||
|
||||
DatFile crc = Create(DatHeader.CloneStandard());
|
||||
crc.DatHeader.FileName += " (CRC)";
|
||||
crc.DatHeader.Name += " (CRC)";
|
||||
crc.DatHeader.Description += " (CRC)";
|
||||
DatFile crc = Create(Header.CloneStandard());
|
||||
crc.Header.FileName += " (CRC)";
|
||||
crc.Header.Name += " (CRC)";
|
||||
crc.Header.Description += " (CRC)";
|
||||
|
||||
DatFile other = Create(DatHeader.CloneStandard());
|
||||
other.DatHeader.FileName += " (Other)";
|
||||
other.DatHeader.Name += " (Other)";
|
||||
other.DatHeader.Description += " (Other)";
|
||||
DatFile other = Create(Header.CloneStandard());
|
||||
other.Header.FileName += " (Other)";
|
||||
other.Header.Name += " (Other)";
|
||||
other.Header.Description += " (Other)";
|
||||
|
||||
// Now populate each of the DAT objects in turn
|
||||
Parallel.ForEach(Items.Keys, Globals.ParallelOptions, key =>
|
||||
@@ -2798,8 +2765,8 @@ namespace SabreTools.Library.DatFiles
|
||||
Items.BucketBy(BucketedBy.Game, DedupeType.None, lower: false, norename: true);
|
||||
|
||||
// Create a temporary DAT to add things to
|
||||
DatFile tempDat = Create(DatHeader);
|
||||
tempDat.DatHeader.Name = null;
|
||||
DatFile tempDat = Create(Header);
|
||||
tempDat.Header.Name = null;
|
||||
|
||||
// Sort the input keys
|
||||
List<string> keys = Items.Keys.ToList();
|
||||
@@ -2809,11 +2776,11 @@ namespace SabreTools.Library.DatFiles
|
||||
Parallel.ForEach(keys, Globals.ParallelOptions, key =>
|
||||
{
|
||||
// Here, the key is the name of the game to be used for comparison
|
||||
if (tempDat.DatHeader.Name != null && tempDat.DatHeader.Name != Path.GetDirectoryName(key))
|
||||
if (tempDat.Header.Name != null && tempDat.Header.Name != Path.GetDirectoryName(key))
|
||||
{
|
||||
// Reset the DAT for the next items
|
||||
tempDat = Create(DatHeader);
|
||||
tempDat.DatHeader.Name = null;
|
||||
tempDat = Create(Header);
|
||||
tempDat.Header.Name = null;
|
||||
}
|
||||
|
||||
// Clean the input list and set all games to be pathless
|
||||
@@ -2825,7 +2792,7 @@ namespace SabreTools.Library.DatFiles
|
||||
tempDat.Items.AddRange(key, items);
|
||||
|
||||
// Then set the DAT name to be the parent directory name
|
||||
tempDat.DatHeader.Name = Path.GetDirectoryName(key);
|
||||
tempDat.Header.Name = Path.GetDirectoryName(key);
|
||||
});
|
||||
|
||||
return true;
|
||||
@@ -2859,21 +2826,21 @@ namespace SabreTools.Library.DatFiles
|
||||
private void SplitByLevelHelper(DatFile datFile, string outDir, bool shortname, bool restore)
|
||||
{
|
||||
// Get the name from the DAT to use separately
|
||||
string name = datFile.DatHeader.Name;
|
||||
string name = datFile.Header.Name;
|
||||
string expName = name.Replace("/", " - ").Replace("\\", " - ");
|
||||
|
||||
// Now set the new output values
|
||||
datFile.DatHeader.FileName = WebUtility.HtmlDecode(string.IsNullOrWhiteSpace(name)
|
||||
? DatHeader.FileName
|
||||
datFile.Header.FileName = WebUtility.HtmlDecode(string.IsNullOrWhiteSpace(name)
|
||||
? Header.FileName
|
||||
: (shortname
|
||||
? Path.GetFileName(name)
|
||||
: expName
|
||||
)
|
||||
);
|
||||
datFile.DatHeader.FileName = (restore ? $"{DatHeader.FileName} ({datFile.DatHeader.FileName})" : datFile.DatHeader.FileName);
|
||||
datFile.DatHeader.Name = $"{DatHeader.Name} ({expName})";
|
||||
datFile.DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? datFile.DatHeader.Name : $"{DatHeader.Description} ({expName})");
|
||||
datFile.DatHeader.Type = null;
|
||||
datFile.Header.FileName = (restore ? $"{Header.FileName} ({datFile.Header.FileName})" : datFile.Header.FileName);
|
||||
datFile.Header.Name = $"{Header.Name} ({expName})";
|
||||
datFile.Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? datFile.Header.Name : $"{Header.Description} ({expName})");
|
||||
datFile.Header.Type = null;
|
||||
|
||||
// Write out the temporary DAT to the proper directory
|
||||
datFile.Write(outDir);
|
||||
@@ -2890,15 +2857,15 @@ namespace SabreTools.Library.DatFiles
|
||||
// Create each of the respective output DATs
|
||||
Globals.Logger.User("Creating and populating new DATs");
|
||||
|
||||
DatFile lessDat = Create(DatHeader.CloneStandard());
|
||||
lessDat.DatHeader.FileName += $" (less than {radix})";
|
||||
lessDat.DatHeader.Name += $" (less than {radix})";
|
||||
lessDat.DatHeader.Description += $" (less than {radix})";
|
||||
DatFile lessDat = Create(Header.CloneStandard());
|
||||
lessDat.Header.FileName += $" (less than {radix})";
|
||||
lessDat.Header.Name += $" (less than {radix})";
|
||||
lessDat.Header.Description += $" (less than {radix})";
|
||||
|
||||
DatFile greaterEqualDat = Create(DatHeader.CloneStandard());
|
||||
greaterEqualDat.DatHeader.FileName += $" (equal-greater than {radix})";
|
||||
greaterEqualDat.DatHeader.Name += $" (equal-greater than {radix})";
|
||||
greaterEqualDat.DatHeader.Description += $" (equal-greater than {radix})";
|
||||
DatFile greaterEqualDat = Create(Header.CloneStandard());
|
||||
greaterEqualDat.Header.FileName += $" (equal-greater than {radix})";
|
||||
greaterEqualDat.Header.Name += $" (equal-greater than {radix})";
|
||||
greaterEqualDat.Header.Description += $" (equal-greater than {radix})";
|
||||
|
||||
// Now populate each of the DAT objects in turn
|
||||
Parallel.ForEach(Items.Keys, Globals.ParallelOptions, key =>
|
||||
@@ -2939,20 +2906,20 @@ namespace SabreTools.Library.DatFiles
|
||||
// Create each of the respective output DATs
|
||||
Globals.Logger.User("Creating and populating new DATs");
|
||||
|
||||
DatFile romdat = Create(DatHeader.CloneStandard());
|
||||
romdat.DatHeader.FileName += " (ROM)";
|
||||
romdat.DatHeader.Name += " (ROM)";
|
||||
romdat.DatHeader.Description += " (ROM)";
|
||||
DatFile romdat = Create(Header.CloneStandard());
|
||||
romdat.Header.FileName += " (ROM)";
|
||||
romdat.Header.Name += " (ROM)";
|
||||
romdat.Header.Description += " (ROM)";
|
||||
|
||||
DatFile diskdat = Create(DatHeader.CloneStandard());
|
||||
diskdat.DatHeader.FileName += " (Disk)";
|
||||
diskdat.DatHeader.Name += " (Disk)";
|
||||
diskdat.DatHeader.Description += " (Disk)";
|
||||
DatFile diskdat = Create(Header.CloneStandard());
|
||||
diskdat.Header.FileName += " (Disk)";
|
||||
diskdat.Header.Name += " (Disk)";
|
||||
diskdat.Header.Description += " (Disk)";
|
||||
|
||||
DatFile sampledat = Create(DatHeader.CloneStandard());
|
||||
sampledat.DatHeader.FileName += " (Sample)";
|
||||
sampledat.DatHeader.Name += " (Sample)";
|
||||
sampledat.DatHeader.Description += " (Sample)";
|
||||
DatFile sampledat = Create(Header.CloneStandard());
|
||||
sampledat.Header.FileName += " (Sample)";
|
||||
sampledat.Header.Name += " (Sample)";
|
||||
sampledat.Header.Description += " (Sample)";
|
||||
|
||||
// Now populate each of the DAT objects in turn
|
||||
Parallel.ForEach(Items.Keys, Globals.ParallelOptions, key =>
|
||||
@@ -3010,42 +2977,42 @@ namespace SabreTools.Library.DatFiles
|
||||
outDir = DirectoryExtensions.Ensure(outDir, create: true);
|
||||
|
||||
// If the DAT has no output format, default to XML
|
||||
if (DatHeader.DatFormat == 0)
|
||||
if (Header.DatFormat == 0)
|
||||
{
|
||||
Globals.Logger.Verbose("No DAT format defined, defaulting to XML");
|
||||
DatHeader.DatFormat = DatFormat.Logiqx;
|
||||
Header.DatFormat = DatFormat.Logiqx;
|
||||
}
|
||||
|
||||
// Make sure that the three essential fields are filled in
|
||||
if (string.IsNullOrWhiteSpace(DatHeader.FileName) && string.IsNullOrWhiteSpace(DatHeader.Name) && string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
if (string.IsNullOrWhiteSpace(Header.FileName) && string.IsNullOrWhiteSpace(Header.Name) && string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
DatHeader.FileName = DatHeader.Name = DatHeader.Description = "Default";
|
||||
Header.FileName = Header.Name = Header.Description = "Default";
|
||||
}
|
||||
else if (string.IsNullOrWhiteSpace(DatHeader.FileName) && string.IsNullOrWhiteSpace(DatHeader.Name) && !string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
else if (string.IsNullOrWhiteSpace(Header.FileName) && string.IsNullOrWhiteSpace(Header.Name) && !string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
DatHeader.FileName = DatHeader.Name = DatHeader.Description;
|
||||
Header.FileName = Header.Name = Header.Description;
|
||||
}
|
||||
else if (string.IsNullOrWhiteSpace(DatHeader.FileName) && !string.IsNullOrWhiteSpace(DatHeader.Name) && string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
else if (string.IsNullOrWhiteSpace(Header.FileName) && !string.IsNullOrWhiteSpace(Header.Name) && string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
DatHeader.FileName = DatHeader.Description = DatHeader.Name;
|
||||
Header.FileName = Header.Description = Header.Name;
|
||||
}
|
||||
else if (string.IsNullOrWhiteSpace(DatHeader.FileName) && !string.IsNullOrWhiteSpace(DatHeader.Name) && !string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
else if (string.IsNullOrWhiteSpace(Header.FileName) && !string.IsNullOrWhiteSpace(Header.Name) && !string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
DatHeader.FileName = DatHeader.Description;
|
||||
Header.FileName = Header.Description;
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(DatHeader.FileName) && string.IsNullOrWhiteSpace(DatHeader.Name) && string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
else if (!string.IsNullOrWhiteSpace(Header.FileName) && string.IsNullOrWhiteSpace(Header.Name) && string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
DatHeader.Name = DatHeader.Description = DatHeader.FileName;
|
||||
Header.Name = Header.Description = Header.FileName;
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(DatHeader.FileName) && string.IsNullOrWhiteSpace(DatHeader.Name) && !string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
else if (!string.IsNullOrWhiteSpace(Header.FileName) && string.IsNullOrWhiteSpace(Header.Name) && !string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
DatHeader.Name = DatHeader.Description;
|
||||
Header.Name = Header.Description;
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(DatHeader.FileName) && !string.IsNullOrWhiteSpace(DatHeader.Name) && string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
else if (!string.IsNullOrWhiteSpace(Header.FileName) && !string.IsNullOrWhiteSpace(Header.Name) && string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
DatHeader.Description = DatHeader.Name;
|
||||
Header.Description = Header.Name;
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(DatHeader.FileName) && !string.IsNullOrWhiteSpace(DatHeader.Name) && !string.IsNullOrWhiteSpace(DatHeader.Description))
|
||||
else if (!string.IsNullOrWhiteSpace(Header.FileName) && !string.IsNullOrWhiteSpace(Header.Name) && !string.IsNullOrWhiteSpace(Header.Description))
|
||||
{
|
||||
// Nothing is needed
|
||||
}
|
||||
@@ -3059,23 +3026,23 @@ namespace SabreTools.Library.DatFiles
|
||||
Items.BucketBy(BucketedBy.Game, DedupeType.None, norename: true);
|
||||
|
||||
var consoleOutput = BaseReport.Create(StatReportFormat.None, null, true, true);
|
||||
consoleOutput.ReplaceStatistics(DatHeader.FileName, Items.Keys.Count(), Items);
|
||||
consoleOutput.ReplaceStatistics(Header.FileName, Items.Keys.Count(), Items);
|
||||
}
|
||||
|
||||
// Bucket and dedupe according to the flag
|
||||
if (DatHeader.DedupeRoms == DedupeType.Full)
|
||||
Items.BucketBy(BucketedBy.CRC, DatHeader.DedupeRoms, norename: norename);
|
||||
else if (DatHeader.DedupeRoms == DedupeType.Game)
|
||||
Items.BucketBy(BucketedBy.Game, DatHeader.DedupeRoms, norename: norename);
|
||||
if (Header.DedupeRoms == DedupeType.Full)
|
||||
Items.BucketBy(BucketedBy.CRC, Header.DedupeRoms, norename: norename);
|
||||
else if (Header.DedupeRoms == DedupeType.Game)
|
||||
Items.BucketBy(BucketedBy.Game, Header.DedupeRoms, norename: norename);
|
||||
|
||||
// Bucket roms by game name, if not already
|
||||
Items.BucketBy(BucketedBy.Game, DedupeType.None, norename: norename);
|
||||
|
||||
// Output the number of items we're going to be writing
|
||||
Globals.Logger.User($"A total of {Items.TotalCount} items will be written out to '{DatHeader.FileName}'");
|
||||
Globals.Logger.User($"A total of {Items.TotalCount} items will be written out to '{Header.FileName}'");
|
||||
|
||||
// Get the outfile names
|
||||
Dictionary<DatFormat, string> outfiles = DatHeader.CreateOutFileNames(outDir, overwrite);
|
||||
Dictionary<DatFormat, string> outfiles = Header.CreateOutFileNames(outDir, overwrite);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -3122,20 +3089,20 @@ namespace SabreTools.Library.DatFiles
|
||||
string name = item.Name;
|
||||
|
||||
// Backup relevant values and set new ones accordingly
|
||||
bool quotesBackup = DatHeader.Quotes;
|
||||
bool useRomNameBackup = DatHeader.UseRomName;
|
||||
bool quotesBackup = Header.Quotes;
|
||||
bool useRomNameBackup = Header.UseRomName;
|
||||
if (forceRemoveQuotes)
|
||||
DatHeader.Quotes = false;
|
||||
Header.Quotes = false;
|
||||
|
||||
if (forceRomName)
|
||||
DatHeader.UseRomName = true;
|
||||
Header.UseRomName = true;
|
||||
|
||||
// Create the proper Prefix and Postfix
|
||||
string pre = CreatePrefixPostfix(item, true);
|
||||
string post = CreatePrefixPostfix(item, false);
|
||||
|
||||
// If we're in Romba mode, take care of that instead
|
||||
if (DatHeader.Romba)
|
||||
if (Header.Romba)
|
||||
{
|
||||
if (item.ItemType == ItemType.Rom)
|
||||
{
|
||||
@@ -3163,20 +3130,20 @@ namespace SabreTools.Library.DatFiles
|
||||
return;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.ReplaceExtension) || DatHeader.RemoveExtension)
|
||||
if (!string.IsNullOrWhiteSpace(Header.ReplaceExtension) || Header.RemoveExtension)
|
||||
{
|
||||
if (DatHeader.RemoveExtension)
|
||||
DatHeader.ReplaceExtension = string.Empty;
|
||||
if (Header.RemoveExtension)
|
||||
Header.ReplaceExtension = string.Empty;
|
||||
|
||||
string dir = Path.GetDirectoryName(name);
|
||||
dir = dir.TrimStart(Path.DirectorySeparatorChar);
|
||||
name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + DatHeader.ReplaceExtension);
|
||||
name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + Header.ReplaceExtension);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.AddExtension))
|
||||
name += DatHeader.AddExtension;
|
||||
if (!string.IsNullOrWhiteSpace(Header.AddExtension))
|
||||
name += Header.AddExtension;
|
||||
|
||||
if (DatHeader.UseRomName && DatHeader.GameName)
|
||||
if (Header.UseRomName && Header.GameName)
|
||||
name = Path.Combine(item.MachineName, name);
|
||||
|
||||
// Now assign back the item name
|
||||
@@ -3184,10 +3151,10 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Restore all relevant values
|
||||
if (forceRemoveQuotes)
|
||||
DatHeader.Quotes = quotesBackup;
|
||||
Header.Quotes = quotesBackup;
|
||||
|
||||
if (forceRomName)
|
||||
DatHeader.UseRomName = useRomNameBackup;
|
||||
Header.UseRomName = useRomNameBackup;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -3216,11 +3183,11 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// If we have a prefix
|
||||
if (prefix)
|
||||
fix = DatHeader.Prefix + (DatHeader.Quotes ? "\"" : string.Empty);
|
||||
fix = Header.Prefix + (Header.Quotes ? "\"" : string.Empty);
|
||||
|
||||
// If we have a postfix
|
||||
else
|
||||
fix = (DatHeader.Quotes ? "\"" : string.Empty) + DatHeader.Postfix;
|
||||
fix = (Header.Quotes ? "\"" : string.Empty) + Header.Postfix;
|
||||
|
||||
// Ensure we have the proper values for replacement
|
||||
if (item.ItemType == ItemType.Rom)
|
||||
|
||||
@@ -111,25 +111,25 @@ namespace SabreTools.Library.DatFiles
|
||||
switch (itemKey)
|
||||
{
|
||||
case "name":
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? itemVal : DatHeader.Name);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? itemVal : Header.Name);
|
||||
break;
|
||||
case "description":
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? itemVal : DatHeader.Description);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? itemVal : Header.Description);
|
||||
break;
|
||||
case "dersion":
|
||||
DatHeader.Version = (string.IsNullOrWhiteSpace(DatHeader.Version) ? itemVal : DatHeader.Version);
|
||||
Header.Version = (string.IsNullOrWhiteSpace(Header.Version) ? itemVal : Header.Version);
|
||||
break;
|
||||
case "date":
|
||||
DatHeader.Date = (string.IsNullOrWhiteSpace(DatHeader.Date) ? itemVal : DatHeader.Date);
|
||||
Header.Date = (string.IsNullOrWhiteSpace(Header.Date) ? itemVal : Header.Date);
|
||||
break;
|
||||
case "author":
|
||||
DatHeader.Author = (string.IsNullOrWhiteSpace(DatHeader.Author) ? itemVal : DatHeader.Author);
|
||||
Header.Author = (string.IsNullOrWhiteSpace(Header.Author) ? itemVal : Header.Author);
|
||||
break;
|
||||
case "homepage":
|
||||
DatHeader.Homepage = (string.IsNullOrWhiteSpace(DatHeader.Homepage) ? itemVal : DatHeader.Homepage);
|
||||
Header.Homepage = (string.IsNullOrWhiteSpace(Header.Homepage) ? itemVal : Header.Homepage);
|
||||
break;
|
||||
case "comment":
|
||||
DatHeader.Comment = (string.IsNullOrWhiteSpace(DatHeader.Comment) ? itemVal : DatHeader.Comment);
|
||||
Header.Comment = (string.IsNullOrWhiteSpace(Header.Comment) ? itemVal : Header.Comment);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -373,13 +373,13 @@ namespace SabreTools.Library.DatFiles
|
||||
try
|
||||
{
|
||||
cmpw.WriteStartElement("DOSCenter");
|
||||
cmpw.WriteStandalone("Name:", DatHeader.Name, false);
|
||||
cmpw.WriteStandalone("Description:", DatHeader.Description, false);
|
||||
cmpw.WriteStandalone("Version:", DatHeader.Version, false);
|
||||
cmpw.WriteStandalone("Date:", DatHeader.Date, false);
|
||||
cmpw.WriteStandalone("Author:", DatHeader.Author, false);
|
||||
cmpw.WriteStandalone("Homepage:", DatHeader.Homepage, false);
|
||||
cmpw.WriteStandalone("Comment:", DatHeader.Comment, false);
|
||||
cmpw.WriteStandalone("Name:", Header.Name, false);
|
||||
cmpw.WriteStandalone("Description:", Header.Description, false);
|
||||
cmpw.WriteStandalone("Version:", Header.Version, false);
|
||||
cmpw.WriteStandalone("Date:", Header.Date, false);
|
||||
cmpw.WriteStandalone("Author:", Header.Author, false);
|
||||
cmpw.WriteStandalone("Homepage:", Header.Homepage, false);
|
||||
cmpw.WriteStandalone("Comment:", Header.Comment, false);
|
||||
cmpw.WriteEndElement();
|
||||
|
||||
cmpw.Flush();
|
||||
@@ -408,7 +408,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Build the state based on excluded fields
|
||||
cmpw.WriteStartElement("game");
|
||||
cmpw.WriteStandalone("name", $"{datItem.GetField(Field.MachineName, DatHeader.ExcludeFields)}.zip", true);
|
||||
cmpw.WriteStandalone("name", $"{datItem.GetField(Field.MachineName, Header.ExcludeFields)}.zip", true);
|
||||
|
||||
cmpw.Flush();
|
||||
}
|
||||
@@ -468,12 +468,12 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Rom:
|
||||
var rom = datItem as Rom;
|
||||
cmpw.WriteStartElement("file");
|
||||
cmpw.WriteAttributeString("name", datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
cmpw.WriteAttributeString("name", datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!Header.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
cmpw.WriteAttributeString("size", rom.Size.ToString());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("date", rom.Date);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, Header.ExcludeFields)))
|
||||
cmpw.WriteAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
cmpw.WriteEndElement();
|
||||
break;
|
||||
|
||||
@@ -185,12 +185,12 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
string[] fields = new string[]
|
||||
{
|
||||
rom.GetField(Field.SHA256, DatHeader.ExcludeFields),
|
||||
$"{rom.GetField(Field.MachineName, DatHeader.ExcludeFields)}/",
|
||||
rom.GetField(Field.Name, DatHeader.ExcludeFields),
|
||||
rom.GetField(Field.SHA1, DatHeader.ExcludeFields),
|
||||
rom.GetField(Field.MD5, DatHeader.ExcludeFields),
|
||||
rom.GetField(Field.CRC, DatHeader.ExcludeFields),
|
||||
rom.GetField(Field.SHA256, Header.ExcludeFields),
|
||||
$"{rom.GetField(Field.MachineName, Header.ExcludeFields)}/",
|
||||
rom.GetField(Field.Name, Header.ExcludeFields),
|
||||
rom.GetField(Field.SHA1, Header.ExcludeFields),
|
||||
rom.GetField(Field.MD5, Header.ExcludeFields),
|
||||
rom.GetField(Field.CRC, Header.ExcludeFields),
|
||||
};
|
||||
|
||||
svw.WriteValues(fields);
|
||||
|
||||
@@ -795,13 +795,13 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// If we are using tags from the DAT, set the proper input for split type unless overridden
|
||||
if (useTags && this.InternalSplit == SplitType.None)
|
||||
this.InternalSplit = datFile.DatHeader.ForceMerging.AsSplitType();
|
||||
this.InternalSplit = datFile.Header.ForceMerging.AsSplitType();
|
||||
|
||||
// Run internal splitting
|
||||
ProcessSplitType(datFile, this.InternalSplit);
|
||||
|
||||
// We remove any blanks, if we aren't supposed to have any
|
||||
if (!datFile.DatHeader.KeepEmptyGames)
|
||||
if (!datFile.Header.KeepEmptyGames)
|
||||
{
|
||||
foreach (string key in datFile.Items.Keys)
|
||||
{
|
||||
@@ -869,11 +869,11 @@ namespace SabreTools.Library.DatFiles
|
||||
}
|
||||
|
||||
// If we are removing scene dates, do that now
|
||||
if (datFile.DatHeader.SceneDateStrip)
|
||||
if (datFile.Header.SceneDateStrip)
|
||||
StripSceneDatesFromItems(datFile);
|
||||
|
||||
// Run the one rom per game logic, if required
|
||||
if (datFile.DatHeader.OneRom)
|
||||
if (datFile.Header.OneRom)
|
||||
OneRomPerGame(datFile);
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -893,7 +893,7 @@ namespace SabreTools.Library.DatFiles
|
||||
/// <returns>True if the DatFile was filtered, false on error</returns>
|
||||
public DatFile FilterTo(DatFile datFile, bool useTags)
|
||||
{
|
||||
DatFile outDat = DatFile.Create(datFile.DatHeader);
|
||||
DatFile outDat = DatFile.Create(datFile.Header);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -903,13 +903,13 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// If we are using tags from the DAT, set the proper input for split type unless overridden
|
||||
if (useTags && this.InternalSplit == SplitType.None)
|
||||
this.InternalSplit = outDat.DatHeader.ForceMerging.AsSplitType();
|
||||
this.InternalSplit = outDat.Header.ForceMerging.AsSplitType();
|
||||
|
||||
// Run internal splitting
|
||||
ProcessSplitType(outDat, this.InternalSplit);
|
||||
|
||||
// We remove any blanks, if we aren't supposed to have any
|
||||
if (!outDat.DatHeader.KeepEmptyGames)
|
||||
if (!outDat.Header.KeepEmptyGames)
|
||||
{
|
||||
foreach (string key in outDat.Items.Keys)
|
||||
{
|
||||
@@ -979,11 +979,11 @@ namespace SabreTools.Library.DatFiles
|
||||
}
|
||||
|
||||
// If we are removing scene dates, do that now
|
||||
if (outDat.DatHeader.SceneDateStrip)
|
||||
if (outDat.Header.SceneDateStrip)
|
||||
StripSceneDatesFromItems(outDat);
|
||||
|
||||
// Run the one rom per game logic, if required
|
||||
if (outDat.DatHeader.OneRom)
|
||||
if (outDat.Header.OneRom)
|
||||
OneRomPerGame(outDat);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -195,10 +195,10 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Rom:
|
||||
var rom = datItem as Rom;
|
||||
fields[0] = string.Empty;
|
||||
if (DatHeader.GameName)
|
||||
fields[0] = $"{rom.GetField(Field.MachineName, DatHeader.ExcludeFields)}{Path.DirectorySeparatorChar}";
|
||||
fields[0] += rom.GetField(Field.Name, DatHeader.ExcludeFields);
|
||||
fields[1] = rom.GetField(Field.CRC, DatHeader.ExcludeFields);
|
||||
if (Header.GameName)
|
||||
fields[0] = $"{rom.GetField(Field.MachineName, Header.ExcludeFields)}{Path.DirectorySeparatorChar}";
|
||||
fields[0] += rom.GetField(Field.Name, Header.ExcludeFields);
|
||||
fields[1] = rom.GetField(Field.CRC, Header.ExcludeFields);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -217,20 +217,20 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
case ItemType.Disk:
|
||||
var disk = datItem as Disk;
|
||||
fields[0] = disk.GetField(hashField, DatHeader.ExcludeFields);
|
||||
fields[0] = disk.GetField(hashField, Header.ExcludeFields);
|
||||
fields[1] = string.Empty;
|
||||
if (DatHeader.GameName)
|
||||
fields[1] = $"{disk.GetField(Field.MachineName, DatHeader.ExcludeFields)}{Path.DirectorySeparatorChar}";
|
||||
fields[1] += disk.GetField(Field.Name, DatHeader.ExcludeFields);
|
||||
if (Header.GameName)
|
||||
fields[1] = $"{disk.GetField(Field.MachineName, Header.ExcludeFields)}{Path.DirectorySeparatorChar}";
|
||||
fields[1] += disk.GetField(Field.Name, Header.ExcludeFields);
|
||||
break;
|
||||
|
||||
case ItemType.Rom:
|
||||
var rom = datItem as Rom;
|
||||
fields[0] = rom.GetField(hashField, DatHeader.ExcludeFields);
|
||||
fields[0] = rom.GetField(hashField, Header.ExcludeFields);
|
||||
fields[1] = string.Empty;
|
||||
if (DatHeader.GameName)
|
||||
fields[1] = $"{rom.GetField(Field.MachineName, DatHeader.ExcludeFields)}{Path.DirectorySeparatorChar}";
|
||||
fields[1] += rom.GetField(Field.Name, DatHeader.ExcludeFields);
|
||||
if (Header.GameName)
|
||||
fields[1] = $"{rom.GetField(Field.MachineName, Header.ExcludeFields)}{Path.DirectorySeparatorChar}";
|
||||
fields[1] += rom.GetField(Field.Name, Header.ExcludeFields);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1012,7 +1012,7 @@ namespace SabreTools.Library.DatFiles
|
||||
Globals.Logger.User($"Adding stats for file '{file}'\n", false);
|
||||
if (single)
|
||||
{
|
||||
reports.ForEach(report => report.ReplaceStatistics(datdata.DatHeader.FileName, datdata.Items.Keys.Count, datdata.Items));
|
||||
reports.ForEach(report => report.ReplaceStatistics(datdata.Header.FileName, datdata.Items.Keys.Count, datdata.Items));
|
||||
reports.ForEach(report => report.Write());
|
||||
}
|
||||
|
||||
|
||||
@@ -122,91 +122,91 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
case "name":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? content : DatHeader.Name);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? content : Header.Name);
|
||||
superdat = superdat || content.Contains(" - SuperDAT");
|
||||
if (keep && superdat)
|
||||
{
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? "SuperDAT" : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? "SuperDAT" : Header.Type);
|
||||
}
|
||||
break;
|
||||
|
||||
case "description":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? content : DatHeader.Description);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? content : Header.Description);
|
||||
break;
|
||||
|
||||
case "rootdir": // This is exclusive to TruRip XML
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.RootDir = (string.IsNullOrWhiteSpace(DatHeader.RootDir) ? content : DatHeader.RootDir);
|
||||
Header.RootDir = (string.IsNullOrWhiteSpace(Header.RootDir) ? content : Header.RootDir);
|
||||
break;
|
||||
|
||||
case "category":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Category = (string.IsNullOrWhiteSpace(DatHeader.Category) ? content : DatHeader.Category);
|
||||
Header.Category = (string.IsNullOrWhiteSpace(Header.Category) ? content : Header.Category);
|
||||
break;
|
||||
|
||||
case "version":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Version = (string.IsNullOrWhiteSpace(DatHeader.Version) ? content : DatHeader.Version);
|
||||
Header.Version = (string.IsNullOrWhiteSpace(Header.Version) ? content : Header.Version);
|
||||
break;
|
||||
|
||||
case "date":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Date = (string.IsNullOrWhiteSpace(DatHeader.Date) ? content.Replace(".", "/") : DatHeader.Date);
|
||||
Header.Date = (string.IsNullOrWhiteSpace(Header.Date) ? content.Replace(".", "/") : Header.Date);
|
||||
break;
|
||||
|
||||
case "author":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Author = (string.IsNullOrWhiteSpace(DatHeader.Author) ? content : DatHeader.Author);
|
||||
Header.Author = (string.IsNullOrWhiteSpace(Header.Author) ? content : Header.Author);
|
||||
break;
|
||||
|
||||
case "email":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Email = (string.IsNullOrWhiteSpace(DatHeader.Email) ? content : DatHeader.Email);
|
||||
Header.Email = (string.IsNullOrWhiteSpace(Header.Email) ? content : Header.Email);
|
||||
break;
|
||||
|
||||
case "homepage":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Homepage = (string.IsNullOrWhiteSpace(DatHeader.Homepage) ? content : DatHeader.Homepage);
|
||||
Header.Homepage = (string.IsNullOrWhiteSpace(Header.Homepage) ? content : Header.Homepage);
|
||||
break;
|
||||
|
||||
case "url":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Url = (string.IsNullOrWhiteSpace(DatHeader.Url) ? content : DatHeader.Url);
|
||||
Header.Url = (string.IsNullOrWhiteSpace(Header.Url) ? content : Header.Url);
|
||||
break;
|
||||
|
||||
case "comment":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Comment = (string.IsNullOrWhiteSpace(DatHeader.Comment) ? content : DatHeader.Comment);
|
||||
Header.Comment = (string.IsNullOrWhiteSpace(Header.Comment) ? content : Header.Comment);
|
||||
break;
|
||||
|
||||
case "type": // This is exclusive to TruRip XML
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? content : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? content : Header.Type);
|
||||
superdat = superdat || content.Contains("SuperDAT");
|
||||
break;
|
||||
|
||||
case "forcemerging":
|
||||
if (DatHeader.ForceMerging == ForceMerging.None)
|
||||
DatHeader.ForceMerging = jtr.ReadAsString().AsForceMerging();
|
||||
if (Header.ForceMerging == ForceMerging.None)
|
||||
Header.ForceMerging = jtr.ReadAsString().AsForceMerging();
|
||||
|
||||
break;
|
||||
|
||||
case "forcepacking":
|
||||
if (DatHeader.ForcePacking == ForcePacking.None)
|
||||
DatHeader.ForcePacking = jtr.ReadAsString().AsForcePacking();
|
||||
if (Header.ForcePacking == ForcePacking.None)
|
||||
Header.ForcePacking = jtr.ReadAsString().AsForcePacking();
|
||||
|
||||
break;
|
||||
|
||||
case "forcenodump":
|
||||
if (DatHeader.ForceNodump == ForceNodump.None)
|
||||
DatHeader.ForceNodump = jtr.ReadAsString().AsForceNodump();
|
||||
if (Header.ForceNodump == ForceNodump.None)
|
||||
Header.ForceNodump = jtr.ReadAsString().AsForceNodump();
|
||||
|
||||
break;
|
||||
|
||||
case "header":
|
||||
content = jtr.ReadAsString();
|
||||
DatHeader.Header = (string.IsNullOrWhiteSpace(DatHeader.Header) ? content : DatHeader.Header);
|
||||
Header.Header = (string.IsNullOrWhiteSpace(Header.Header) ? content : Header.Header);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -862,57 +862,57 @@ namespace SabreTools.Library.DatFiles
|
||||
jtw.WriteStartObject();
|
||||
|
||||
jtw.WritePropertyName("name");
|
||||
jtw.WriteValue(DatHeader.Name);
|
||||
jtw.WriteValue(Header.Name);
|
||||
jtw.WritePropertyName("description");
|
||||
jtw.WriteValue(DatHeader.Description);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.RootDir))
|
||||
jtw.WriteValue(Header.Description);
|
||||
if (!string.IsNullOrWhiteSpace(Header.RootDir))
|
||||
{
|
||||
jtw.WritePropertyName("rootdir");
|
||||
jtw.WriteValue(DatHeader.RootDir);
|
||||
jtw.WriteValue(Header.RootDir);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Category))
|
||||
if (!string.IsNullOrWhiteSpace(Header.Category))
|
||||
{
|
||||
jtw.WritePropertyName("category");
|
||||
jtw.WriteValue(DatHeader.Category);
|
||||
jtw.WriteValue(Header.Category);
|
||||
}
|
||||
jtw.WritePropertyName("version");
|
||||
jtw.WriteValue(DatHeader.Version);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Date))
|
||||
jtw.WriteValue(Header.Version);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Date))
|
||||
{
|
||||
jtw.WritePropertyName("date");
|
||||
jtw.WriteValue(DatHeader.Date);
|
||||
jtw.WriteValue(Header.Date);
|
||||
}
|
||||
jtw.WritePropertyName("author");
|
||||
jtw.WriteValue(DatHeader.Author);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Email))
|
||||
jtw.WriteValue(Header.Author);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Email))
|
||||
{
|
||||
jtw.WritePropertyName("email");
|
||||
jtw.WriteValue(DatHeader.Email);
|
||||
jtw.WriteValue(Header.Email);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Homepage))
|
||||
if (!string.IsNullOrWhiteSpace(Header.Homepage))
|
||||
{
|
||||
jtw.WritePropertyName("homepage");
|
||||
jtw.WriteValue(DatHeader.Homepage);
|
||||
jtw.WriteValue(Header.Homepage);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Url))
|
||||
if (!string.IsNullOrWhiteSpace(Header.Url))
|
||||
{
|
||||
jtw.WritePropertyName("date");
|
||||
jtw.WriteValue(DatHeader.Url);
|
||||
jtw.WriteValue(Header.Url);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Comment))
|
||||
if (!string.IsNullOrWhiteSpace(Header.Comment))
|
||||
{
|
||||
jtw.WritePropertyName("comment");
|
||||
jtw.WriteValue(DatHeader.Comment);
|
||||
jtw.WriteValue(Header.Comment);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Type))
|
||||
if (!string.IsNullOrWhiteSpace(Header.Type))
|
||||
{
|
||||
jtw.WritePropertyName("type");
|
||||
jtw.WriteValue(DatHeader.Type);
|
||||
jtw.WriteValue(Header.Type);
|
||||
}
|
||||
if (DatHeader.ForceMerging != ForceMerging.None)
|
||||
if (Header.ForceMerging != ForceMerging.None)
|
||||
{
|
||||
jtw.WritePropertyName("forcemerging");
|
||||
switch (DatHeader.ForceMerging)
|
||||
switch (Header.ForceMerging)
|
||||
{
|
||||
case ForceMerging.Full:
|
||||
jtw.WriteValue("full");
|
||||
@@ -928,10 +928,10 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (DatHeader.ForcePacking != ForcePacking.None)
|
||||
if (Header.ForcePacking != ForcePacking.None)
|
||||
{
|
||||
jtw.WritePropertyName("forcepacking");
|
||||
switch (DatHeader.ForcePacking)
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case ForcePacking.Unzip:
|
||||
jtw.WriteValue("unzip");
|
||||
@@ -941,10 +941,10 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (DatHeader.ForceNodump != ForceNodump.None)
|
||||
if (Header.ForceNodump != ForceNodump.None)
|
||||
{
|
||||
jtw.WritePropertyName("forcenodump");
|
||||
switch (DatHeader.ForceNodump)
|
||||
switch (Header.ForceNodump)
|
||||
{
|
||||
case ForceNodump.Ignore:
|
||||
jtw.WriteValue("ignore");
|
||||
@@ -957,10 +957,10 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Header))
|
||||
if (!string.IsNullOrWhiteSpace(Header.Header))
|
||||
{
|
||||
jtw.WritePropertyName("header");
|
||||
jtw.WriteValue(DatHeader.Header);
|
||||
jtw.WriteValue(Header.Header);
|
||||
}
|
||||
|
||||
// End header
|
||||
@@ -997,54 +997,54 @@ namespace SabreTools.Library.DatFiles
|
||||
jtw.WriteStartObject();
|
||||
|
||||
jtw.WritePropertyName("name");
|
||||
jtw.WriteValue(datItem.GetField(Field.MachineName, DatHeader.ExcludeFields));
|
||||
jtw.WriteValue(datItem.GetField(Field.MachineName, Header.ExcludeFields));
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Comment, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Comment, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("comment");
|
||||
jtw.WriteValue(datItem.Comment);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("description");
|
||||
jtw.WriteValue(datItem.MachineDescription);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("year");
|
||||
jtw.WriteValue(datItem.Year);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Manufacturer, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Manufacturer, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("manufacturer");
|
||||
jtw.WriteValue(datItem.Manufacturer);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("publisher");
|
||||
jtw.WriteValue(datItem.Publisher);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("category");
|
||||
jtw.WriteValue(datItem.Category);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RomOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.RomOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RomOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.RomOf, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
jtw.WritePropertyName("romof");
|
||||
jtw.WriteValue(datItem.RomOf);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
jtw.WritePropertyName("cloneof");
|
||||
jtw.WriteValue(datItem.CloneOf);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.SampleOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.SampleOf, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
jtw.WritePropertyName("sampleof");
|
||||
jtw.WriteValue(datItem.SampleOf);
|
||||
}
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Supported] && datItem.Supported != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Supported] && datItem.Supported != null)
|
||||
{
|
||||
if (datItem.Supported == true)
|
||||
{
|
||||
@@ -1057,12 +1057,12 @@ namespace SabreTools.Library.DatFiles
|
||||
jtw.WriteValue("no");
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SourceFile, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SourceFile, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("sourcefile");
|
||||
jtw.WriteValue(datItem.SourceFile);
|
||||
}
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Runnable] && datItem.Runnable != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Runnable] && datItem.Runnable != null)
|
||||
{
|
||||
if (datItem.Runnable == true)
|
||||
{
|
||||
@@ -1075,17 +1075,17 @@ namespace SabreTools.Library.DatFiles
|
||||
jtw.WriteValue("no");
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Board, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Board, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("board");
|
||||
jtw.WriteValue(datItem.Board);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RebuildTo, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RebuildTo, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("rebuildto");
|
||||
jtw.WriteValue(datItem.RebuildTo);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Devices, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Devices, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("devices");
|
||||
jtw.WriteStartArray();
|
||||
@@ -1096,7 +1096,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
jtw.WriteEndArray();
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SlotOptions, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SlotOptions, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("slotoptions");
|
||||
jtw.WriteStartArray();
|
||||
@@ -1107,7 +1107,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
jtw.WriteEndArray();
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Infos, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Infos, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("infos");
|
||||
jtw.WriteStartArray();
|
||||
@@ -1121,7 +1121,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
jtw.WriteEndArray();
|
||||
}
|
||||
if (!DatHeader.ExcludeFields[(int)Field.MachineType])
|
||||
if (!Header.ExcludeFields[(int)Field.MachineType])
|
||||
{
|
||||
if (datItem.MachineType.HasFlag(MachineType.Bios))
|
||||
{
|
||||
@@ -1211,20 +1211,20 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Archive:
|
||||
jtw.WriteValue("archive");
|
||||
jtw.WritePropertyName("name");
|
||||
jtw.WriteValue(datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
jtw.WriteValue(datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
break;
|
||||
|
||||
case ItemType.BiosSet:
|
||||
var biosSet = datItem as BiosSet;
|
||||
jtw.WriteValue("biosset");
|
||||
jtw.WritePropertyName("name");
|
||||
jtw.WriteValue(biosSet.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.BiosDescription, DatHeader.ExcludeFields)))
|
||||
jtw.WriteValue(biosSet.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.BiosDescription, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("description");
|
||||
jtw.WriteValue(biosSet.Description);
|
||||
}
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
{
|
||||
jtw.WritePropertyName("default");
|
||||
jtw.WriteValue(biosSet.Default);
|
||||
@@ -1235,65 +1235,65 @@ namespace SabreTools.Library.DatFiles
|
||||
var disk = datItem as Disk;
|
||||
jtw.WriteValue("disk");
|
||||
jtw.WritePropertyName("name");
|
||||
jtw.WriteValue(disk.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
jtw.WriteValue(disk.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("md5");
|
||||
jtw.WriteValue(disk.MD5.ToLowerInvariant());
|
||||
}
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("ripemd160");
|
||||
jtw.WriteValue(disk.RIPEMD160.ToLowerInvariant());
|
||||
}
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("sha1");
|
||||
jtw.WriteValue(disk.SHA1.ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("sha256");
|
||||
jtw.WriteValue(disk.SHA256.ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("sha384");
|
||||
jtw.WriteValue(disk.SHA384.ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("sha512");
|
||||
jtw.WriteValue(disk.SHA512.ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Merge, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Merge, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("merge");
|
||||
jtw.WriteValue(disk.MergeTag);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Region, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Region, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("region");
|
||||
jtw.WriteValue(disk.Region);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Index, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Index, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("index");
|
||||
jtw.WriteValue(disk.Index);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Writable, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Writable, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("writable");
|
||||
jtw.WriteValue(disk.Writable);
|
||||
}
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
{
|
||||
jtw.WritePropertyName("status");
|
||||
jtw.WriteValue(disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Optional, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(disk.GetField(Field.Optional, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("optional");
|
||||
jtw.WriteValue(disk.Optional);
|
||||
@@ -1304,23 +1304,23 @@ namespace SabreTools.Library.DatFiles
|
||||
var release = datItem as Release;
|
||||
jtw.WriteValue("release");
|
||||
jtw.WritePropertyName("name");
|
||||
jtw.WriteValue(release.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(release.GetField(Field.Region, DatHeader.ExcludeFields)))
|
||||
jtw.WriteValue(release.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(release.GetField(Field.Region, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("region");
|
||||
jtw.WriteValue(release.Region);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(release.GetField(Field.Language, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(release.GetField(Field.Language, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("language");
|
||||
jtw.WriteValue(release.Language);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(release.GetField(Field.Date, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(release.GetField(Field.Date, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("date");
|
||||
jtw.WriteValue(release.Date);
|
||||
}
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Default] && release.Default != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Default] && release.Default != null)
|
||||
{
|
||||
jtw.WritePropertyName("default");
|
||||
jtw.WriteValue(release.Default);
|
||||
@@ -1331,80 +1331,80 @@ namespace SabreTools.Library.DatFiles
|
||||
var rom = datItem as Rom;
|
||||
jtw.WriteValue("rom");
|
||||
jtw.WritePropertyName("name");
|
||||
jtw.WriteValue(rom.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
jtw.WriteValue(rom.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!Header.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
{
|
||||
jtw.WritePropertyName("size");
|
||||
jtw.WriteValue(rom.Size);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Offset, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Offset, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("offset");
|
||||
jtw.WriteValue(rom.Offset);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.CRC, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.CRC, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("crc");
|
||||
jtw.WriteValue(rom.CRC.ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("md5");
|
||||
jtw.WriteValue(rom.MD5.ToLowerInvariant());
|
||||
}
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("ripemd160");
|
||||
jtw.WriteValue(rom.RIPEMD160.ToLowerInvariant());
|
||||
}
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("sha1");
|
||||
jtw.WriteValue(rom.SHA1.ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("sha256");
|
||||
jtw.WriteValue(rom.SHA256.ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("sha384");
|
||||
jtw.WriteValue(rom.SHA384.ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("sha512");
|
||||
jtw.WriteValue(rom.SHA512.ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Bios, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Bios, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("bios");
|
||||
jtw.WriteValue(rom.Bios);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Merge, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Merge, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("merge");
|
||||
jtw.WriteValue(rom.MergeTag);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Region, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Region, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("region");
|
||||
jtw.WriteValue(rom.Region);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Date, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Date, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("date");
|
||||
jtw.WriteValue(rom.Date);
|
||||
}
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
{
|
||||
jtw.WritePropertyName("status");
|
||||
jtw.WriteValue(rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Optional, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(rom.GetField(Field.Optional, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("optional");
|
||||
jtw.WriteValue(rom.Optional);
|
||||
@@ -1414,21 +1414,21 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Sample:
|
||||
jtw.WriteValue("sample");
|
||||
jtw.WritePropertyName("name");
|
||||
jtw.WriteValue(datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
jtw.WriteValue(datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
break;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.PartName, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.PartName, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("partname");
|
||||
jtw.WriteValue(datItem.PartName);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.PartInterface, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.PartInterface, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("partinterface");
|
||||
jtw.WriteValue(datItem.PartInterface);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Features, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Features, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("features");
|
||||
jtw.WriteStartArray();
|
||||
@@ -1442,12 +1442,12 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
jtw.WriteEndArray();
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.AreaName, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.AreaName, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("areaname");
|
||||
jtw.WriteValue(datItem.AreaName);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.AreaSize, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.AreaSize, Header.ExcludeFields)))
|
||||
{
|
||||
jtw.WritePropertyName("areasize");
|
||||
jtw.WriteValue(datItem.AreaSize);
|
||||
|
||||
@@ -332,7 +332,7 @@ namespace SabreTools.Library.DatFiles
|
||||
rom.MachineName = rom.MachineName.TrimStart(Path.DirectorySeparatorChar);
|
||||
|
||||
// Build the state based on excluded fields
|
||||
sw.Write($"ROMs required for driver \"{rom.GetField(Field.MachineName, DatHeader.ExcludeFields)}\".\n");
|
||||
sw.Write($"ROMs required for driver \"{rom.GetField(Field.MachineName, Header.ExcludeFields)}\".\n");
|
||||
sw.Write("Name Size Checksum\n");
|
||||
|
||||
sw.Flush();
|
||||
@@ -400,19 +400,19 @@ namespace SabreTools.Library.DatFiles
|
||||
sw.Write($"{disk.Name} ");
|
||||
|
||||
// If we have a baddump, put the first indicator
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && disk.ItemStatus == ItemStatus.BadDump)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && disk.ItemStatus == ItemStatus.BadDump)
|
||||
sw.Write(" BAD");
|
||||
|
||||
// If we have a nodump, write out the indicator
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && disk.ItemStatus == ItemStatus.Nodump)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && disk.ItemStatus == ItemStatus.Nodump)
|
||||
sw.Write(" NO GOOD DUMP KNOWN");
|
||||
|
||||
// Otherwise, write out the SHA-1 hash
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
sw.Write($" SHA1({disk.SHA1})");
|
||||
|
||||
// If we have a baddump, put the second indicator
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && disk.ItemStatus == ItemStatus.BadDump)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && disk.ItemStatus == ItemStatus.BadDump)
|
||||
sw.Write(" BAD_DUMP");
|
||||
|
||||
sw.Write("\n");
|
||||
@@ -432,25 +432,25 @@ namespace SabreTools.Library.DatFiles
|
||||
sw.Write(rom.Size);
|
||||
|
||||
// If we have a baddump, put the first indicator
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && rom.ItemStatus == ItemStatus.BadDump)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && rom.ItemStatus == ItemStatus.BadDump)
|
||||
sw.Write(" BAD");
|
||||
|
||||
// If we have a nodump, write out the indicator
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && rom.ItemStatus == ItemStatus.Nodump)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && rom.ItemStatus == ItemStatus.Nodump)
|
||||
{
|
||||
sw.Write(" NO GOOD DUMP KNOWN");
|
||||
}
|
||||
// Otherwise, write out the CRC and SHA-1 hashes
|
||||
else
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, Header.ExcludeFields)))
|
||||
sw.Write($" CRC({rom.CRC})");
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
sw.Write($" SHA1({rom.SHA1})");
|
||||
}
|
||||
|
||||
// If we have a baddump, put the second indicator
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && rom.ItemStatus == ItemStatus.BadDump)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && rom.ItemStatus == ItemStatus.BadDump)
|
||||
sw.Write(" BAD_DUMP");
|
||||
|
||||
sw.Write("\n");
|
||||
|
||||
@@ -64,8 +64,8 @@ namespace SabreTools.Library.DatFiles
|
||||
switch (xtr.Name)
|
||||
{
|
||||
case "mame":
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? xtr.GetAttribute("build") : DatHeader.Name);
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? DatHeader.Name : DatHeader.Description);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? xtr.GetAttribute("build") : Header.Name);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? Header.Name : Header.Description);
|
||||
// string mame_debug = xtr.GetAttribute("debug"); // (yes|no) "no"
|
||||
// string mame_mameconfig = xtr.GetAttribute("mameconfig"); CDATA
|
||||
xtr.Read();
|
||||
@@ -73,9 +73,9 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Handle M1 DATs since they're 99% the same as a SL DAT
|
||||
case "m1":
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? "M1" : DatHeader.Name);
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? "M1" : DatHeader.Description);
|
||||
DatHeader.Version = (string.IsNullOrWhiteSpace(DatHeader.Version) ? xtr.GetAttribute("version") ?? string.Empty : DatHeader.Version);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? "M1" : Header.Name);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? "M1" : Header.Description);
|
||||
Header.Version = (string.IsNullOrWhiteSpace(Header.Version) ? xtr.GetAttribute("version") ?? string.Empty : Header.Version);
|
||||
xtr.Read();
|
||||
break;
|
||||
|
||||
@@ -648,7 +648,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartDocument();
|
||||
|
||||
xtw.WriteStartElement("mame");
|
||||
xtw.WriteAttributeString("build", DatHeader.Name);
|
||||
xtw.WriteAttributeString("build", Header.Name);
|
||||
//xtw.WriteAttributeString("debug", Debug);
|
||||
//xtw.WriteAttributeString("mameconfig", MameConfig);
|
||||
|
||||
@@ -678,11 +678,11 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Build the state based on excluded fields
|
||||
xtw.WriteStartElement("machine");
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.MachineName, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SourceFile, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.MachineName, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SourceFile, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("sourcefile", datItem.SourceFile);
|
||||
|
||||
if (!DatHeader.ExcludeFields[(int)Field.MachineType])
|
||||
if (!Header.ExcludeFields[(int)Field.MachineType])
|
||||
{
|
||||
if (datItem.MachineType.HasFlag(MachineType.Bios))
|
||||
xtw.WriteAttributeString("isbios", "yes");
|
||||
@@ -692,7 +692,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteAttributeString("ismechanical", "yes");
|
||||
}
|
||||
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Runnable])
|
||||
if (!Header.ExcludeFields[(int)Field.Runnable])
|
||||
{
|
||||
if (datItem.Runnable == true)
|
||||
xtw.WriteAttributeString("runnable", "yes");
|
||||
@@ -700,23 +700,23 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteAttributeString("runnable", "no");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteAttributeString("cloneof", datItem.CloneOf);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RomOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.RomOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RomOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.RomOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteAttributeString("romof", datItem.RomOf);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.SampleOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.SampleOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteAttributeString("sampleof", datItem.SampleOf);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("description", datItem.MachineDescription);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("year", datItem.Year);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("publisher", datItem.Publisher);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("category", datItem.Category);
|
||||
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Infos] && datItem.Infos != null && datItem.Infos.Count > 0)
|
||||
if (!Header.ExcludeFields[(int)Field.Infos] && datItem.Infos != null && datItem.Infos.Count > 0)
|
||||
{
|
||||
foreach (KeyValuePair<string, string> kvp in datItem.Infos)
|
||||
{
|
||||
@@ -785,10 +785,10 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.BiosSet:
|
||||
var biosSet = datItem as BiosSet;
|
||||
xtw.WriteStartElement("biosset");
|
||||
xtw.WriteAttributeString("name", biosSet.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.BiosDescription, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", biosSet.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.BiosDescription, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("description", biosSet.Description);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
xtw.WriteAttributeString("default", biosSet.Default.ToString().ToLowerInvariant());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
@@ -796,32 +796,32 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Disk:
|
||||
var disk = datItem as Disk;
|
||||
xtw.WriteStartElement("disk");
|
||||
xtw.WriteAttributeString("name", disk.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", disk.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Merge, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Merge, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("merge", disk.MergeTag);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("region", disk.Region);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Index, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Index, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("index", disk.Index);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Writable] && disk.Writable != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Writable] && disk.Writable != null)
|
||||
xtw.WriteAttributeString("writable", disk.Writable == true ? "yes" : "no");
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
xtw.WriteAttributeString("status", disk.ItemStatus.ToString());
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Optional] && disk.Optional != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Optional] && disk.Optional != null)
|
||||
xtw.WriteAttributeString("optional", disk.Optional == true ? "yes" : "no");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
@@ -829,43 +829,43 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Rom:
|
||||
var rom = datItem as Rom;
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteAttributeString("name", rom.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
xtw.WriteAttributeString("name", rom.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!Header.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Bios, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Bios, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("bios", rom.Bios);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Merge, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Merge, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("merge", rom.MergeTag);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("region", rom.Region);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Offset, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Offset, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("offset", rom.Offset);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Optional] && rom.Optional != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Optional] && rom.Optional != null)
|
||||
xtw.WriteAttributeString("optional", rom.Optional == true ? "yes" : "no");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
case ItemType.Sample:
|
||||
xtw.WriteStartElement("sample");
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Unique to RomVault-created DATs
|
||||
case "dir":
|
||||
DatHeader.Type = "SuperDAT";
|
||||
Header.Type = "SuperDAT";
|
||||
dirs.Add(xtr.GetAttribute("name") ?? string.Empty);
|
||||
xtr.Read();
|
||||
break;
|
||||
@@ -153,82 +153,82 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
case "name":
|
||||
content = reader.ReadElementContentAsString(); ;
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? content : DatHeader.Name);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? content : Header.Name);
|
||||
superdat = superdat || content.Contains(" - SuperDAT");
|
||||
if (keep && superdat)
|
||||
{
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? "SuperDAT" : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? "SuperDAT" : Header.Type);
|
||||
}
|
||||
break;
|
||||
|
||||
case "description":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? content : DatHeader.Description);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? content : Header.Description);
|
||||
break;
|
||||
|
||||
case "rootdir": // This is exclusive to TruRip XML
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.RootDir = (string.IsNullOrWhiteSpace(DatHeader.RootDir) ? content : DatHeader.RootDir);
|
||||
Header.RootDir = (string.IsNullOrWhiteSpace(Header.RootDir) ? content : Header.RootDir);
|
||||
break;
|
||||
|
||||
case "category":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Category = (string.IsNullOrWhiteSpace(DatHeader.Category) ? content : DatHeader.Category);
|
||||
Header.Category = (string.IsNullOrWhiteSpace(Header.Category) ? content : Header.Category);
|
||||
break;
|
||||
|
||||
case "version":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Version = (string.IsNullOrWhiteSpace(DatHeader.Version) ? content : DatHeader.Version);
|
||||
Header.Version = (string.IsNullOrWhiteSpace(Header.Version) ? content : Header.Version);
|
||||
break;
|
||||
|
||||
case "date":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Date = (string.IsNullOrWhiteSpace(DatHeader.Date) ? content.Replace(".", "/") : DatHeader.Date);
|
||||
Header.Date = (string.IsNullOrWhiteSpace(Header.Date) ? content.Replace(".", "/") : Header.Date);
|
||||
break;
|
||||
|
||||
case "author":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Author = (string.IsNullOrWhiteSpace(DatHeader.Author) ? content : DatHeader.Author);
|
||||
Header.Author = (string.IsNullOrWhiteSpace(Header.Author) ? content : Header.Author);
|
||||
break;
|
||||
|
||||
case "email":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Email = (string.IsNullOrWhiteSpace(DatHeader.Email) ? content : DatHeader.Email);
|
||||
Header.Email = (string.IsNullOrWhiteSpace(Header.Email) ? content : Header.Email);
|
||||
break;
|
||||
|
||||
case "homepage":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Homepage = (string.IsNullOrWhiteSpace(DatHeader.Homepage) ? content : DatHeader.Homepage);
|
||||
Header.Homepage = (string.IsNullOrWhiteSpace(Header.Homepage) ? content : Header.Homepage);
|
||||
break;
|
||||
|
||||
case "url":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Url = (string.IsNullOrWhiteSpace(DatHeader.Url) ? content : DatHeader.Url);
|
||||
Header.Url = (string.IsNullOrWhiteSpace(Header.Url) ? content : Header.Url);
|
||||
break;
|
||||
|
||||
case "comment":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Comment = (string.IsNullOrWhiteSpace(DatHeader.Comment) ? content : DatHeader.Comment);
|
||||
Header.Comment = (string.IsNullOrWhiteSpace(Header.Comment) ? content : Header.Comment);
|
||||
break;
|
||||
|
||||
case "type": // This is exclusive to TruRip XML
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? content : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? content : Header.Type);
|
||||
superdat = superdat || content.Contains("SuperDAT");
|
||||
break;
|
||||
|
||||
case "clrmamepro":
|
||||
if (string.IsNullOrWhiteSpace(DatHeader.Header))
|
||||
DatHeader.Header = reader.GetAttribute("header");
|
||||
if (string.IsNullOrWhiteSpace(Header.Header))
|
||||
Header.Header = reader.GetAttribute("header");
|
||||
|
||||
if (DatHeader.ForceMerging == ForceMerging.None)
|
||||
DatHeader.ForceMerging = reader.GetAttribute("forcemerging").AsForceMerging();
|
||||
if (Header.ForceMerging == ForceMerging.None)
|
||||
Header.ForceMerging = reader.GetAttribute("forcemerging").AsForceMerging();
|
||||
|
||||
if (DatHeader.ForceNodump == ForceNodump.None)
|
||||
DatHeader.ForceNodump = reader.GetAttribute("forcenodump").AsForceNodump();
|
||||
if (Header.ForceNodump == ForceNodump.None)
|
||||
Header.ForceNodump = reader.GetAttribute("forcenodump").AsForceNodump();
|
||||
|
||||
if (DatHeader.ForcePacking == ForcePacking.None)
|
||||
DatHeader.ForcePacking = reader.GetAttribute("forcepacking").AsForcePacking();
|
||||
if (Header.ForcePacking == ForcePacking.None)
|
||||
Header.ForcePacking = reader.GetAttribute("forcepacking").AsForcePacking();
|
||||
|
||||
reader.Read();
|
||||
break;
|
||||
@@ -338,7 +338,7 @@ namespace SabreTools.Library.DatFiles
|
||||
MachineType = (machineType == MachineType.NULL ? MachineType.None : machineType),
|
||||
};
|
||||
|
||||
if (DatHeader.Type == "SuperDAT" && !keep)
|
||||
if (Header.Type == "SuperDAT" && !keep)
|
||||
{
|
||||
string tempout = Regex.Match(machine.Name, @".*?\\(.*)").Groups[1].Value;
|
||||
if (!string.IsNullOrWhiteSpace(tempout))
|
||||
@@ -757,34 +757,34 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartElement("datafile");
|
||||
|
||||
xtw.WriteStartElement("header");
|
||||
xtw.WriteElementString("name", DatHeader.Name);
|
||||
xtw.WriteElementString("description", DatHeader.Description);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.RootDir))
|
||||
xtw.WriteElementString("rootdir", DatHeader.RootDir);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Category))
|
||||
xtw.WriteElementString("category", DatHeader.Category);
|
||||
xtw.WriteElementString("version", DatHeader.Version);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Date))
|
||||
xtw.WriteElementString("date", DatHeader.Date);
|
||||
xtw.WriteElementString("author", DatHeader.Author);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Email))
|
||||
xtw.WriteElementString("email", DatHeader.Email);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Homepage))
|
||||
xtw.WriteElementString("homepage", DatHeader.Homepage);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Url))
|
||||
xtw.WriteElementString("url", DatHeader.Url);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Comment))
|
||||
xtw.WriteElementString("comment", DatHeader.Comment);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Type))
|
||||
xtw.WriteElementString("type", DatHeader.Type);
|
||||
xtw.WriteElementString("name", Header.Name);
|
||||
xtw.WriteElementString("description", Header.Description);
|
||||
if (!string.IsNullOrWhiteSpace(Header.RootDir))
|
||||
xtw.WriteElementString("rootdir", Header.RootDir);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Category))
|
||||
xtw.WriteElementString("category", Header.Category);
|
||||
xtw.WriteElementString("version", Header.Version);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Date))
|
||||
xtw.WriteElementString("date", Header.Date);
|
||||
xtw.WriteElementString("author", Header.Author);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Email))
|
||||
xtw.WriteElementString("email", Header.Email);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Homepage))
|
||||
xtw.WriteElementString("homepage", Header.Homepage);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Url))
|
||||
xtw.WriteElementString("url", Header.Url);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Comment))
|
||||
xtw.WriteElementString("comment", Header.Comment);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Type))
|
||||
xtw.WriteElementString("type", Header.Type);
|
||||
|
||||
if (DatHeader.ForcePacking != ForcePacking.None
|
||||
|| DatHeader.ForceMerging != ForceMerging.None
|
||||
|| DatHeader.ForceNodump != ForceNodump.None
|
||||
|| !string.IsNullOrWhiteSpace(DatHeader.Header))
|
||||
if (Header.ForcePacking != ForcePacking.None
|
||||
|| Header.ForceMerging != ForceMerging.None
|
||||
|| Header.ForceNodump != ForceNodump.None
|
||||
|| !string.IsNullOrWhiteSpace(Header.Header))
|
||||
{
|
||||
xtw.WriteStartElement("clrmamepro");
|
||||
switch (DatHeader.ForcePacking)
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case ForcePacking.Unzip:
|
||||
xtw.WriteAttributeString("forcepacking", "unzip");
|
||||
@@ -794,7 +794,7 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
|
||||
switch (DatHeader.ForceMerging)
|
||||
switch (Header.ForceMerging)
|
||||
{
|
||||
case ForceMerging.Full:
|
||||
xtw.WriteAttributeString("forcemerging", "full");
|
||||
@@ -810,7 +810,7 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
|
||||
switch (DatHeader.ForceNodump)
|
||||
switch (Header.ForceNodump)
|
||||
{
|
||||
case ForceNodump.Ignore:
|
||||
xtw.WriteAttributeString("forcenodump", "ignore");
|
||||
@@ -823,8 +823,8 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Header))
|
||||
xtw.WriteAttributeString("header", DatHeader.Header);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Header))
|
||||
xtw.WriteAttributeString("header", Header.Header);
|
||||
|
||||
// End clrmamepro
|
||||
xtw.WriteEndElement();
|
||||
@@ -859,8 +859,8 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Build the state based on excluded fields
|
||||
xtw.WriteStartElement(_deprecated ? "game" : "machine");
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.MachineName, DatHeader.ExcludeFields));
|
||||
if (!DatHeader.ExcludeFields[(int)Field.MachineType])
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.MachineName, Header.ExcludeFields));
|
||||
if (!Header.ExcludeFields[(int)Field.MachineType])
|
||||
{
|
||||
if (datItem.MachineType.HasFlag(MachineType.Bios))
|
||||
xtw.WriteAttributeString("isbios", "yes");
|
||||
@@ -870,7 +870,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteAttributeString("ismechanical", "yes");
|
||||
}
|
||||
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Runnable] && datItem.Runnable != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Runnable] && datItem.Runnable != null)
|
||||
{
|
||||
if (datItem.Runnable == true)
|
||||
xtw.WriteAttributeString("runnable", "yes");
|
||||
@@ -878,24 +878,24 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteAttributeString("runnable", "no");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteAttributeString("cloneof", datItem.CloneOf);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RomOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.RomOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RomOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.RomOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteAttributeString("romof", datItem.RomOf);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.SampleOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SampleOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.SampleOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteAttributeString("sampleof", datItem.SampleOf);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Comment, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Comment, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("comment", datItem.Comment);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("description", datItem.MachineDescription);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("year", datItem.Year);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("publisher", datItem.Publisher);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Manufacturer, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Manufacturer, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("manufacturer", datItem.Manufacturer);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("category", datItem.Category);
|
||||
|
||||
xtw.Flush();
|
||||
@@ -955,17 +955,17 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
case ItemType.Archive:
|
||||
xtw.WriteStartElement("archive");
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
case ItemType.BiosSet:
|
||||
var biosSet = datItem as BiosSet;
|
||||
xtw.WriteStartElement("biosset");
|
||||
xtw.WriteAttributeString("name", biosSet.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.BiosDescription, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", biosSet.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.BiosDescription, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("description", biosSet.Description);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
xtw.WriteAttributeString("default", biosSet.Default.ToString().ToLowerInvariant());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
@@ -973,22 +973,22 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Disk:
|
||||
var disk = datItem as Disk;
|
||||
xtw.WriteStartElement("disk");
|
||||
xtw.WriteAttributeString("name", disk.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", disk.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
xtw.WriteAttributeString("status", disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
@@ -996,14 +996,14 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Release:
|
||||
var release = datItem as Release;
|
||||
xtw.WriteStartElement("release");
|
||||
xtw.WriteAttributeString("name", release.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", release.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("region", release.Region);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Language, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Language, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("language", release.Language);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("date", release.Date);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Default] && release.Default != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Default] && release.Default != null)
|
||||
xtw.WriteAttributeString("default", release.Default.ToString().ToLowerInvariant());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
@@ -1011,35 +1011,35 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Rom:
|
||||
var rom = datItem as Rom;
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteAttributeString("name", rom.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
xtw.WriteAttributeString("name", rom.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!Header.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("date", rom.Date);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
case ItemType.Sample:
|
||||
xtw.WriteStartElement("sample");
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -137,21 +137,21 @@ namespace SabreTools.Library.DatFiles
|
||||
ProcessItemName(datItem, false, forceRomName: false);
|
||||
|
||||
// If we're in Romba mode, the state is consistent
|
||||
if (DatHeader.Romba)
|
||||
if (Header.Romba)
|
||||
{
|
||||
sw.Write($"{datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)}\n");
|
||||
sw.Write($"{datItem.GetField(Field.SHA1, Header.ExcludeFields)}\n");
|
||||
}
|
||||
// Otherwise, use any flags
|
||||
else
|
||||
{
|
||||
if (!DatHeader.UseRomName && datItem.MachineName != lastgame)
|
||||
if (!Header.UseRomName && datItem.MachineName != lastgame)
|
||||
{
|
||||
sw.Write($"{datItem.GetField(Field.MachineName, DatHeader.ExcludeFields)}\n");
|
||||
sw.Write($"{datItem.GetField(Field.MachineName, Header.ExcludeFields)}\n");
|
||||
lastgame = datItem.MachineName;
|
||||
}
|
||||
else if (DatHeader.UseRomName)
|
||||
else if (Header.UseRomName)
|
||||
{
|
||||
sw.Write($"{datItem.GetField(Field.Name, DatHeader.ExcludeFields)}\n");
|
||||
sw.Write($"{datItem.GetField(Field.Name, Header.ExcludeFields)}\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -125,17 +125,17 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
case "datname":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? content : DatHeader.Name);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? content : Header.Name);
|
||||
superdat = superdat || content.Contains(" - SuperDAT");
|
||||
if (keep && superdat)
|
||||
{
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? "SuperDAT" : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? "SuperDAT" : Header.Type);
|
||||
}
|
||||
break;
|
||||
|
||||
case "datversion":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Version = (string.IsNullOrWhiteSpace(DatHeader.Version) ? content : DatHeader.Version);
|
||||
Header.Version = (string.IsNullOrWhiteSpace(Header.Version) ? content : Header.Version);
|
||||
break;
|
||||
|
||||
case "system":
|
||||
@@ -382,7 +382,7 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
case "datversionurl":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Url = (string.IsNullOrWhiteSpace(DatHeader.Url) ? content : DatHeader.Url);
|
||||
Header.Url = (string.IsNullOrWhiteSpace(Header.Url) ? content : Header.Url);
|
||||
break;
|
||||
|
||||
case "daturl":
|
||||
@@ -836,7 +836,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteAttributeString("noNamespaceSchemaLocation", "xsi", "datas.xsd");
|
||||
|
||||
xtw.WriteStartElement("configuration");
|
||||
xtw.WriteElementString("datName", DatHeader.Name);
|
||||
xtw.WriteElementString("datName", Header.Name);
|
||||
xtw.WriteElementString("datVersion", Items.TotalCount.ToString());
|
||||
xtw.WriteElementString("system", "none");
|
||||
xtw.WriteElementString("screenshotsWidth", "240");
|
||||
@@ -930,14 +930,14 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteEndElement();
|
||||
|
||||
xtw.WriteStartElement("newDat");
|
||||
xtw.WriteElementString("datVersionURL", DatHeader.Url);
|
||||
xtw.WriteElementString("datVersionURL", Header.Url);
|
||||
|
||||
xtw.WriteStartElement("datUrl");
|
||||
xtw.WriteAttributeString("fileName", $"{DatHeader.FileName}.zip");
|
||||
xtw.WriteString(DatHeader.Url);
|
||||
xtw.WriteAttributeString("fileName", $"{Header.FileName}.zip");
|
||||
xtw.WriteString(Header.Url);
|
||||
xtw.WriteEndElement();
|
||||
|
||||
xtw.WriteElementString("imURL", DatHeader.Url);
|
||||
xtw.WriteElementString("imURL", Header.Url);
|
||||
|
||||
// End newDat
|
||||
xtw.WriteEndElement();
|
||||
@@ -1023,13 +1023,13 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartElement("game");
|
||||
xtw.WriteElementString("imageNumber", "1");
|
||||
xtw.WriteElementString("releaseNumber", "1");
|
||||
xtw.WriteElementString("title", datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
xtw.WriteElementString("title", datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
xtw.WriteElementString("saveType", "None");
|
||||
|
||||
if (datItem.ItemType == ItemType.Rom)
|
||||
{
|
||||
var rom = datItem as Rom;
|
||||
xtw.WriteElementString("romSize", datItem.GetField(Field.Size, DatHeader.ExcludeFields));
|
||||
xtw.WriteElementString("romSize", datItem.GetField(Field.Size, Header.ExcludeFields));
|
||||
}
|
||||
|
||||
xtw.WriteElementString("publisher", "None");
|
||||
@@ -1041,14 +1041,14 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
var disk = datItem as Disk;
|
||||
xtw.WriteStartElement("files");
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
{
|
||||
xtw.WriteStartElement("romMD5");
|
||||
xtw.WriteAttributeString("extension", ".chd");
|
||||
xtw.WriteString(disk.MD5.ToUpperInvariant());
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
{
|
||||
xtw.WriteStartElement("romSHA1");
|
||||
xtw.WriteAttributeString("extension", ".chd");
|
||||
@@ -1065,21 +1065,21 @@ namespace SabreTools.Library.DatFiles
|
||||
string tempext = "." + PathExtensions.GetNormalizedExtension(rom.Name);
|
||||
|
||||
xtw.WriteStartElement("files");
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, Header.ExcludeFields)))
|
||||
{
|
||||
xtw.WriteStartElement("romCRC");
|
||||
xtw.WriteAttributeString("extension", tempext);
|
||||
xtw.WriteString(rom.CRC.ToUpperInvariant());
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
{
|
||||
xtw.WriteStartElement("romMD5");
|
||||
xtw.WriteAttributeString("extension", tempext);
|
||||
xtw.WriteString(rom.MD5.ToUpperInvariant());
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
else if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
{
|
||||
xtw.WriteStartElement("romSHA1");
|
||||
xtw.WriteAttributeString("extension", tempext);
|
||||
|
||||
@@ -62,8 +62,8 @@ namespace SabreTools.Library.DatFiles
|
||||
switch (xtr.Name)
|
||||
{
|
||||
case "softwaredb":
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? "openMSX Software List" : DatHeader.Name);
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? DatHeader.Name : DatHeader.Description);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? "openMSX Software List" : Header.Name);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? Header.Name : Header.Description);
|
||||
// string timestamp = xtr.GetAttribute("timestamp"); // CDATA
|
||||
xtr.Read();
|
||||
break;
|
||||
@@ -618,11 +618,11 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Build the state based on excluded fields
|
||||
xtw.WriteStartElement("software");
|
||||
xtw.WriteElementString("title", datItem.GetField(Field.MachineName, DatHeader.ExcludeFields));
|
||||
xtw.WriteElementString("title", datItem.GetField(Field.MachineName, Header.ExcludeFields));
|
||||
//xtw.WriteElementString("genmsxid", msxid);
|
||||
//xtw.WriteElementString("system", system));
|
||||
xtw.WriteElementString("company", datItem.GetField(Field.Manufacturer, DatHeader.ExcludeFields));
|
||||
xtw.WriteElementString("year", datItem.GetField(Field.Year, DatHeader.ExcludeFields));
|
||||
xtw.WriteElementString("company", datItem.GetField(Field.Manufacturer, Header.ExcludeFields));
|
||||
xtw.WriteElementString("year", datItem.GetField(Field.Year, Header.ExcludeFields));
|
||||
//xtw.WriteElementString("country", country);
|
||||
|
||||
xtw.Flush();
|
||||
@@ -690,10 +690,10 @@ namespace SabreTools.Library.DatFiles
|
||||
//xtw.WriteEndElement();
|
||||
|
||||
xtw.WriteStartElement("rom");
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Offset, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Offset, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("start", rom.Offset);
|
||||
//xtw.WriteElementString("type", "Normal");
|
||||
xtw.WriteElementString("hash", rom.GetField(Field.SHA1, DatHeader.ExcludeFields).ToLowerInvariant());
|
||||
xtw.WriteElementString("hash", rom.GetField(Field.SHA1, Header.ExcludeFields).ToLowerInvariant());
|
||||
//xtw.WriteElementString("remark", "");
|
||||
|
||||
// End rom
|
||||
|
||||
@@ -130,37 +130,37 @@ namespace SabreTools.Library.DatFiles
|
||||
switch (kvp?.Key.ToLowerInvariant())
|
||||
{
|
||||
case "author":
|
||||
DatHeader.Author = string.IsNullOrWhiteSpace(DatHeader.Author) ? kvp?.Value : DatHeader.Author;
|
||||
Header.Author = string.IsNullOrWhiteSpace(Header.Author) ? kvp?.Value : Header.Author;
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
case "version":
|
||||
DatHeader.Version = string.IsNullOrWhiteSpace(DatHeader.Version) ? kvp?.Value : DatHeader.Version;
|
||||
Header.Version = string.IsNullOrWhiteSpace(Header.Version) ? kvp?.Value : Header.Version;
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
case "email":
|
||||
DatHeader.Email = string.IsNullOrWhiteSpace(DatHeader.Email) ? kvp?.Value : DatHeader.Email;
|
||||
Header.Email = string.IsNullOrWhiteSpace(Header.Email) ? kvp?.Value : Header.Email;
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
case "homepage":
|
||||
DatHeader.Homepage = string.IsNullOrWhiteSpace(DatHeader.Homepage) ? kvp?.Value : DatHeader.Homepage;
|
||||
Header.Homepage = string.IsNullOrWhiteSpace(Header.Homepage) ? kvp?.Value : Header.Homepage;
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
case "url":
|
||||
DatHeader.Url = string.IsNullOrWhiteSpace(DatHeader.Url) ? kvp?.Value : DatHeader.Url;
|
||||
Header.Url = string.IsNullOrWhiteSpace(Header.Url) ? kvp?.Value : Header.Url;
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
case "date":
|
||||
DatHeader.Date = string.IsNullOrWhiteSpace(DatHeader.Date) ? kvp?.Value : DatHeader.Date;
|
||||
Header.Date = string.IsNullOrWhiteSpace(Header.Date) ? kvp?.Value : Header.Date;
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
case "comment":
|
||||
DatHeader.Comment = string.IsNullOrWhiteSpace(DatHeader.Comment) ? kvp?.Value : DatHeader.Comment;
|
||||
Header.Comment = string.IsNullOrWhiteSpace(Header.Comment) ? kvp?.Value : Header.Comment;
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
@@ -213,15 +213,15 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
|
||||
case "split":
|
||||
if (DatHeader.ForceMerging == ForceMerging.None && kvp?.Value == "1")
|
||||
DatHeader.ForceMerging = ForceMerging.Split;
|
||||
if (Header.ForceMerging == ForceMerging.None && kvp?.Value == "1")
|
||||
Header.ForceMerging = ForceMerging.Split;
|
||||
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
case "merge":
|
||||
if (DatHeader.ForceMerging == ForceMerging.None && kvp?.Value == "1")
|
||||
DatHeader.ForceMerging = ForceMerging.Merged;
|
||||
if (Header.ForceMerging == ForceMerging.None && kvp?.Value == "1")
|
||||
Header.ForceMerging = ForceMerging.Merged;
|
||||
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
@@ -267,12 +267,12 @@ namespace SabreTools.Library.DatFiles
|
||||
switch (kvp?.Key.ToLowerInvariant())
|
||||
{
|
||||
case "refname":
|
||||
DatHeader.Name = string.IsNullOrWhiteSpace(DatHeader.Name) ? kvp?.Value : DatHeader.Name;
|
||||
Header.Name = string.IsNullOrWhiteSpace(Header.Name) ? kvp?.Value : Header.Name;
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
case "version":
|
||||
DatHeader.Description = string.IsNullOrWhiteSpace(DatHeader.Description) ? kvp?.Value : DatHeader.Description;
|
||||
Header.Description = string.IsNullOrWhiteSpace(Header.Description) ? kvp?.Value : Header.Description;
|
||||
reader.ReadNextLine();
|
||||
break;
|
||||
|
||||
@@ -462,18 +462,18 @@ namespace SabreTools.Library.DatFiles
|
||||
try
|
||||
{
|
||||
iw.WriteSection("CREDITS");
|
||||
iw.WriteKeyValuePair("author", DatHeader.Author);
|
||||
iw.WriteKeyValuePair("version", DatHeader.Version);
|
||||
iw.WriteKeyValuePair("comment", DatHeader.Comment);
|
||||
iw.WriteKeyValuePair("author", Header.Author);
|
||||
iw.WriteKeyValuePair("version", Header.Version);
|
||||
iw.WriteKeyValuePair("comment", Header.Comment);
|
||||
|
||||
iw.WriteSection("DAT");
|
||||
iw.WriteKeyValuePair("version", "2.50");
|
||||
iw.WriteKeyValuePair("split", DatHeader.ForceMerging == ForceMerging.Split ? "1" : "0");
|
||||
iw.WriteKeyValuePair("merge", DatHeader.ForceMerging == ForceMerging.Full || DatHeader.ForceMerging == ForceMerging.Merged ? "1" : "0");
|
||||
iw.WriteKeyValuePair("split", Header.ForceMerging == ForceMerging.Split ? "1" : "0");
|
||||
iw.WriteKeyValuePair("merge", Header.ForceMerging == ForceMerging.Full || Header.ForceMerging == ForceMerging.Merged ? "1" : "0");
|
||||
|
||||
iw.WriteSection("EMULATOR");
|
||||
iw.WriteKeyValuePair("refname", DatHeader.Name);
|
||||
iw.WriteKeyValuePair("version", DatHeader.Description);
|
||||
iw.WriteKeyValuePair("refname", Header.Name);
|
||||
iw.WriteKeyValuePair("version", Header.Description);
|
||||
|
||||
iw.WriteSection("GAMES");
|
||||
|
||||
@@ -520,18 +520,18 @@ namespace SabreTools.Library.DatFiles
|
||||
ProcessItemName(datItem, true);
|
||||
|
||||
// Build the state based on excluded fields
|
||||
iw.WriteString($"¬{datItem.GetField(Field.CloneOf, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.CloneOf, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.MachineName, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.CloneOf, Header.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.CloneOf, Header.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.MachineName, Header.ExcludeFields)}");
|
||||
if (string.IsNullOrWhiteSpace(datItem.MachineDescription))
|
||||
iw.WriteString($"¬{datItem.GetField(Field.MachineName, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.MachineName, Header.ExcludeFields)}");
|
||||
else
|
||||
iw.WriteString($"¬{datItem.GetField(Field.Description, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.Name, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.CRC, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.Size, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.RomOf, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.Merge, DatHeader.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.Description, Header.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.Name, Header.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.CRC, Header.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.Size, Header.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.RomOf, Header.ExcludeFields)}");
|
||||
iw.WriteString($"¬{datItem.GetField(Field.Merge, Header.ExcludeFields)}");
|
||||
iw.WriteString("¬");
|
||||
iw.WriteLine();
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
parent.RemoveAt(parent.Count - 1);
|
||||
if (keep && parentcount > 1)
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? "SuperDAT" : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? "SuperDAT" : Header.Type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,50 +157,50 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
case "name":
|
||||
content = reader.ReadElementContentAsString(); ;
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? content : DatHeader.Name);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? content : Header.Name);
|
||||
superdat = superdat || content.Contains(" - SuperDAT");
|
||||
if (keep && superdat)
|
||||
{
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? "SuperDAT" : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? "SuperDAT" : Header.Type);
|
||||
}
|
||||
break;
|
||||
|
||||
case "description":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? content : DatHeader.Description);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? content : Header.Description);
|
||||
break;
|
||||
|
||||
case "rootdir":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.RootDir = (string.IsNullOrWhiteSpace(DatHeader.RootDir) ? content : DatHeader.RootDir);
|
||||
Header.RootDir = (string.IsNullOrWhiteSpace(Header.RootDir) ? content : Header.RootDir);
|
||||
break;
|
||||
|
||||
case "category":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Category = (string.IsNullOrWhiteSpace(DatHeader.Category) ? content : DatHeader.Category);
|
||||
Header.Category = (string.IsNullOrWhiteSpace(Header.Category) ? content : Header.Category);
|
||||
break;
|
||||
|
||||
case "version":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Version = (string.IsNullOrWhiteSpace(DatHeader.Version) ? content : DatHeader.Version);
|
||||
Header.Version = (string.IsNullOrWhiteSpace(Header.Version) ? content : Header.Version);
|
||||
break;
|
||||
|
||||
case "date":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Date = (string.IsNullOrWhiteSpace(DatHeader.Date) ? content.Replace(".", "/") : DatHeader.Date);
|
||||
Header.Date = (string.IsNullOrWhiteSpace(Header.Date) ? content.Replace(".", "/") : Header.Date);
|
||||
break;
|
||||
|
||||
case "author":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Author = (string.IsNullOrWhiteSpace(DatHeader.Author) ? content : DatHeader.Author);
|
||||
DatHeader.Email = (string.IsNullOrWhiteSpace(DatHeader.Email) ? reader.GetAttribute("email") : DatHeader.Email);
|
||||
DatHeader.Homepage = (string.IsNullOrWhiteSpace(DatHeader.Homepage) ? reader.GetAttribute("homepage") : DatHeader.Homepage);
|
||||
DatHeader.Url = (string.IsNullOrWhiteSpace(DatHeader.Url) ? reader.GetAttribute("url") : DatHeader.Url);
|
||||
Header.Author = (string.IsNullOrWhiteSpace(Header.Author) ? content : Header.Author);
|
||||
Header.Email = (string.IsNullOrWhiteSpace(Header.Email) ? reader.GetAttribute("email") : Header.Email);
|
||||
Header.Homepage = (string.IsNullOrWhiteSpace(Header.Homepage) ? reader.GetAttribute("homepage") : Header.Homepage);
|
||||
Header.Url = (string.IsNullOrWhiteSpace(Header.Url) ? reader.GetAttribute("url") : Header.Url);
|
||||
break;
|
||||
|
||||
case "comment":
|
||||
content = reader.ReadElementContentAsString();
|
||||
DatHeader.Comment = (string.IsNullOrWhiteSpace(DatHeader.Comment) ? content : DatHeader.Comment);
|
||||
Header.Comment = (string.IsNullOrWhiteSpace(Header.Comment) ? content : Header.Comment);
|
||||
break;
|
||||
|
||||
case "flags":
|
||||
@@ -278,7 +278,7 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
parent.RemoveAt(parent.Count - 1);
|
||||
if (keep && parentcount > 1)
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? "SuperDAT" : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? "SuperDAT" : Header.Type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -493,25 +493,25 @@ namespace SabreTools.Library.DatFiles
|
||||
switch (reader.GetAttribute("name").ToLowerInvariant())
|
||||
{
|
||||
case "type":
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? content : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? content : Header.Type);
|
||||
superdat = superdat || content.Contains("SuperDAT");
|
||||
break;
|
||||
|
||||
case "forcemerging":
|
||||
if (DatHeader.ForceMerging == ForceMerging.None)
|
||||
DatHeader.ForceMerging = content.AsForceMerging();
|
||||
if (Header.ForceMerging == ForceMerging.None)
|
||||
Header.ForceMerging = content.AsForceMerging();
|
||||
|
||||
break;
|
||||
|
||||
case "forcenodump":
|
||||
if (DatHeader.ForceNodump == ForceNodump.None)
|
||||
DatHeader.ForceNodump = content.AsForceNodump();
|
||||
if (Header.ForceNodump == ForceNodump.None)
|
||||
Header.ForceNodump = content.AsForceNodump();
|
||||
|
||||
break;
|
||||
|
||||
case "forcepacking":
|
||||
if (DatHeader.ForcePacking == ForcePacking.None)
|
||||
DatHeader.ForcePacking = content.AsForcePacking();
|
||||
if (Header.ForcePacking == ForcePacking.None)
|
||||
Header.ForcePacking = content.AsForcePacking();
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -645,34 +645,34 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
xtw.WriteStartElement("header");
|
||||
|
||||
xtw.WriteElementString("name", DatHeader.Name);
|
||||
xtw.WriteElementString("description", DatHeader.Description);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.RootDir))
|
||||
xtw.WriteElementString("rootdir", DatHeader.RootDir);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Category))
|
||||
xtw.WriteElementString("category", DatHeader.Category);
|
||||
xtw.WriteElementString("version", DatHeader.Version);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Date))
|
||||
xtw.WriteElementString("date", DatHeader.Date);
|
||||
xtw.WriteElementString("author", DatHeader.Author);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Comment))
|
||||
xtw.WriteElementString("comment", DatHeader.Comment);
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Type)
|
||||
|| DatHeader.ForcePacking != ForcePacking.None
|
||||
|| DatHeader.ForceMerging != ForceMerging.None
|
||||
|| DatHeader.ForceNodump != ForceNodump.None)
|
||||
xtw.WriteElementString("name", Header.Name);
|
||||
xtw.WriteElementString("description", Header.Description);
|
||||
if (!string.IsNullOrWhiteSpace(Header.RootDir))
|
||||
xtw.WriteElementString("rootdir", Header.RootDir);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Category))
|
||||
xtw.WriteElementString("category", Header.Category);
|
||||
xtw.WriteElementString("version", Header.Version);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Date))
|
||||
xtw.WriteElementString("date", Header.Date);
|
||||
xtw.WriteElementString("author", Header.Author);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Comment))
|
||||
xtw.WriteElementString("comment", Header.Comment);
|
||||
if (!string.IsNullOrWhiteSpace(Header.Type)
|
||||
|| Header.ForcePacking != ForcePacking.None
|
||||
|| Header.ForceMerging != ForceMerging.None
|
||||
|| Header.ForceNodump != ForceNodump.None)
|
||||
{
|
||||
xtw.WriteStartElement("flags");
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(DatHeader.Type))
|
||||
if (!string.IsNullOrWhiteSpace(Header.Type))
|
||||
{
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "type");
|
||||
xtw.WriteAttributeString("value", DatHeader.Type);
|
||||
xtw.WriteAttributeString("value", Header.Type);
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
|
||||
switch (DatHeader.ForcePacking)
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case ForcePacking.Unzip:
|
||||
xtw.WriteStartElement("flag");
|
||||
@@ -688,7 +688,7 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
|
||||
switch (DatHeader.ForceMerging)
|
||||
switch (Header.ForceMerging)
|
||||
{
|
||||
case ForceMerging.Full:
|
||||
xtw.WriteStartElement("flag");
|
||||
@@ -716,7 +716,7 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
|
||||
switch (DatHeader.ForceNodump)
|
||||
switch (Header.ForceNodump)
|
||||
{
|
||||
case ForceNodump.Ignore:
|
||||
xtw.WriteStartElement("flag");
|
||||
@@ -778,8 +778,8 @@ namespace SabreTools.Library.DatFiles
|
||||
for (int i = (last == -1 ? 0 : last); i < newsplit.Count; i++)
|
||||
{
|
||||
xtw.WriteStartElement("directory");
|
||||
xtw.WriteAttributeString("name", !DatHeader.ExcludeFields[(int)Field.MachineName] ? newsplit[i] : string.Empty);
|
||||
xtw.WriteAttributeString("description", !DatHeader.ExcludeFields[(int)Field.MachineName] ? newsplit[i] : string.Empty);
|
||||
xtw.WriteAttributeString("name", !Header.ExcludeFields[(int)Field.MachineName] ? newsplit[i] : string.Empty);
|
||||
xtw.WriteAttributeString("description", !Header.ExcludeFields[(int)Field.MachineName] ? newsplit[i] : string.Empty);
|
||||
}
|
||||
|
||||
depth = depth - (last == -1 ? 0 : last) + newsplit.Count;
|
||||
@@ -869,7 +869,7 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Archive:
|
||||
xtw.WriteStartElement("file");
|
||||
xtw.WriteAttributeString("type", "archive");
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
@@ -877,10 +877,10 @@ namespace SabreTools.Library.DatFiles
|
||||
var biosSet = datItem as BiosSet;
|
||||
xtw.WriteStartElement("file");
|
||||
xtw.WriteAttributeString("type", "biosset");
|
||||
xtw.WriteAttributeString("name", biosSet.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.BiosDescription, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", biosSet.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.BiosDescription, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("description", biosSet.Description);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Default] && biosSet.Default != null)
|
||||
xtw.WriteAttributeString("default", biosSet.Default.ToString().ToLowerInvariant());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
@@ -889,22 +889,22 @@ namespace SabreTools.Library.DatFiles
|
||||
var disk = datItem as Disk;
|
||||
xtw.WriteStartElement("file");
|
||||
xtw.WriteAttributeString("type", "disk");
|
||||
xtw.WriteAttributeString("name", disk.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", disk.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
{
|
||||
xtw.WriteStartElement("flags");
|
||||
|
||||
@@ -923,14 +923,14 @@ namespace SabreTools.Library.DatFiles
|
||||
var release = datItem as Release;
|
||||
xtw.WriteStartElement("file");
|
||||
xtw.WriteAttributeString("type", "release");
|
||||
xtw.WriteAttributeString("name", release.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", release.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Region, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("region", release.Region);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Language, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Language, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("language", release.Language);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("date", release.Date);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Default] && release.Default != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Default] && release.Default != null)
|
||||
xtw.WriteAttributeString("default", release.Default.ToString().ToLowerInvariant());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
@@ -939,28 +939,28 @@ namespace SabreTools.Library.DatFiles
|
||||
var rom = datItem as Rom;
|
||||
xtw.WriteStartElement("file");
|
||||
xtw.WriteAttributeString("type", "rom");
|
||||
xtw.WriteAttributeString("name", rom.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
xtw.WriteAttributeString("name", rom.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!Header.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Date, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("date", rom.Date);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
{
|
||||
xtw.WriteStartElement("flags");
|
||||
|
||||
@@ -978,7 +978,7 @@ namespace SabreTools.Library.DatFiles
|
||||
case ItemType.Sample:
|
||||
xtw.WriteStartElement("file");
|
||||
xtw.WriteAttributeString("type", "sample");
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.Name, Header.ExcludeFields));
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -118,71 +118,71 @@ namespace SabreTools.Library.DatFiles
|
||||
#region DatFile
|
||||
|
||||
case "DatFile.FileName":
|
||||
DatHeader.FileName = (string.IsNullOrWhiteSpace(DatHeader.FileName) ? value : DatHeader.FileName);
|
||||
Header.FileName = (string.IsNullOrWhiteSpace(Header.FileName) ? value : Header.FileName);
|
||||
break;
|
||||
|
||||
case "DatFile.Name":
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? value : DatHeader.Name);
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? value : Header.Name);
|
||||
break;
|
||||
|
||||
case "DatFile.Description":
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? value : DatHeader.Description);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? value : Header.Description);
|
||||
break;
|
||||
|
||||
case "DatFile.RootDir":
|
||||
DatHeader.RootDir = (string.IsNullOrWhiteSpace(DatHeader.RootDir) ? value : DatHeader.RootDir);
|
||||
Header.RootDir = (string.IsNullOrWhiteSpace(Header.RootDir) ? value : Header.RootDir);
|
||||
break;
|
||||
|
||||
case "DatFile.Category":
|
||||
DatHeader.Category = (string.IsNullOrWhiteSpace(DatHeader.Category) ? value : DatHeader.Category);
|
||||
Header.Category = (string.IsNullOrWhiteSpace(Header.Category) ? value : Header.Category);
|
||||
break;
|
||||
|
||||
case "DatFile.Version":
|
||||
DatHeader.Version = (string.IsNullOrWhiteSpace(DatHeader.Version) ? value : DatHeader.Version);
|
||||
Header.Version = (string.IsNullOrWhiteSpace(Header.Version) ? value : Header.Version);
|
||||
break;
|
||||
|
||||
case "DatFile.Date":
|
||||
DatHeader.Date = (string.IsNullOrWhiteSpace(DatHeader.Date) ? value : DatHeader.Date);
|
||||
Header.Date = (string.IsNullOrWhiteSpace(Header.Date) ? value : Header.Date);
|
||||
break;
|
||||
|
||||
case "DatFile.Author":
|
||||
DatHeader.Author = (string.IsNullOrWhiteSpace(DatHeader.Author) ? value : DatHeader.Author);
|
||||
Header.Author = (string.IsNullOrWhiteSpace(Header.Author) ? value : Header.Author);
|
||||
break;
|
||||
|
||||
case "DatFile.Email":
|
||||
DatHeader.Email = (string.IsNullOrWhiteSpace(DatHeader.Email) ? value : DatHeader.Email);
|
||||
Header.Email = (string.IsNullOrWhiteSpace(Header.Email) ? value : Header.Email);
|
||||
break;
|
||||
|
||||
case "DatFile.Homepage":
|
||||
DatHeader.Homepage = (string.IsNullOrWhiteSpace(DatHeader.Homepage) ? value : DatHeader.Homepage);
|
||||
Header.Homepage = (string.IsNullOrWhiteSpace(Header.Homepage) ? value : Header.Homepage);
|
||||
break;
|
||||
|
||||
case "DatFile.Url":
|
||||
DatHeader.Url = (string.IsNullOrWhiteSpace(DatHeader.Url) ? value : DatHeader.Url);
|
||||
Header.Url = (string.IsNullOrWhiteSpace(Header.Url) ? value : Header.Url);
|
||||
break;
|
||||
|
||||
case "DatFile.Comment":
|
||||
DatHeader.Comment = (string.IsNullOrWhiteSpace(DatHeader.Comment) ? value : DatHeader.Comment);
|
||||
Header.Comment = (string.IsNullOrWhiteSpace(Header.Comment) ? value : Header.Comment);
|
||||
break;
|
||||
|
||||
case "DatFile.Header":
|
||||
DatHeader.Header = (string.IsNullOrWhiteSpace(DatHeader.Header) ? value : DatHeader.Header);
|
||||
Header.Header = (string.IsNullOrWhiteSpace(Header.Header) ? value : Header.Header);
|
||||
break;
|
||||
|
||||
case "DatFile.Type":
|
||||
DatHeader.Type = (string.IsNullOrWhiteSpace(DatHeader.Type) ? value : DatHeader.Type);
|
||||
Header.Type = (string.IsNullOrWhiteSpace(Header.Type) ? value : Header.Type);
|
||||
break;
|
||||
|
||||
case "DatFile.ForceMerging":
|
||||
DatHeader.ForceMerging = (DatHeader.ForceMerging == ForceMerging.None ? value.AsForceMerging() : DatHeader.ForceMerging);
|
||||
Header.ForceMerging = (Header.ForceMerging == ForceMerging.None ? value.AsForceMerging() : Header.ForceMerging);
|
||||
break;
|
||||
|
||||
case "DatFile.ForceNodump":
|
||||
DatHeader.ForceNodump = (DatHeader.ForceNodump == ForceNodump.None ? value.AsForceNodump() : DatHeader.ForceNodump);
|
||||
Header.ForceNodump = (Header.ForceNodump == ForceNodump.None ? value.AsForceNodump() : Header.ForceNodump);
|
||||
break;
|
||||
|
||||
case "DatFile.ForcePacking":
|
||||
DatHeader.ForcePacking = (DatHeader.ForcePacking == ForcePacking.None ? value.AsForcePacking() : DatHeader.ForcePacking);
|
||||
Header.ForcePacking = (Header.ForcePacking == ForcePacking.None ? value.AsForcePacking() : Header.ForcePacking);
|
||||
break;
|
||||
|
||||
#endregion
|
||||
@@ -992,11 +992,11 @@ namespace SabreTools.Library.DatFiles
|
||||
// Build the state based on excluded fields
|
||||
// TODO: Can we have some way of saying what fields to write out? Support for read extends to all fields now
|
||||
string[] fields = new string[14]; // 17;
|
||||
fields[0] = DatHeader.FileName;
|
||||
fields[1] = DatHeader.Name;
|
||||
fields[2] = DatHeader.Description;
|
||||
fields[3] = datItem.GetField(Field.MachineName, DatHeader.ExcludeFields);
|
||||
fields[4] = datItem.GetField(Field.Description, DatHeader.ExcludeFields);
|
||||
fields[0] = Header.FileName;
|
||||
fields[1] = Header.Name;
|
||||
fields[2] = Header.Description;
|
||||
fields[3] = datItem.GetField(Field.MachineName, Header.ExcludeFields);
|
||||
fields[4] = datItem.GetField(Field.Description, Header.ExcludeFields);
|
||||
|
||||
switch (datItem.ItemType)
|
||||
{
|
||||
@@ -1004,32 +1004,32 @@ namespace SabreTools.Library.DatFiles
|
||||
var disk = datItem as Disk;
|
||||
fields[5] = "disk";
|
||||
fields[6] = string.Empty;
|
||||
fields[7] = disk.GetField(Field.Name, DatHeader.ExcludeFields);
|
||||
fields[7] = disk.GetField(Field.Name, Header.ExcludeFields);
|
||||
fields[8] = string.Empty;
|
||||
fields[9] = string.Empty;
|
||||
fields[10] = disk.GetField(Field.MD5, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[10] = disk.GetField(Field.MD5, Header.ExcludeFields).ToLowerInvariant();
|
||||
//fields[11] = disk.GetField(Field.RIPEMD160, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[11] = disk.GetField(Field.SHA1, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[12] = disk.GetField(Field.SHA256, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[11] = disk.GetField(Field.SHA1, Header.ExcludeFields).ToLowerInvariant();
|
||||
fields[12] = disk.GetField(Field.SHA256, Header.ExcludeFields).ToLowerInvariant();
|
||||
//fields[13] = disk.GetField(Field.SHA384, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
//fields[14] = disk.GetField(Field.SHA512, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[13] = disk.GetField(Field.Status, DatHeader.ExcludeFields);
|
||||
fields[13] = disk.GetField(Field.Status, Header.ExcludeFields);
|
||||
break;
|
||||
|
||||
case ItemType.Rom:
|
||||
var rom = datItem as Rom;
|
||||
fields[5] = "rom";
|
||||
fields[6] = rom.GetField(Field.Name, DatHeader.ExcludeFields);
|
||||
fields[6] = rom.GetField(Field.Name, Header.ExcludeFields);
|
||||
fields[7] = string.Empty;
|
||||
fields[8] = rom.GetField(Field.Size, DatHeader.ExcludeFields);
|
||||
fields[9] = rom.GetField(Field.CRC, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[10] = rom.GetField(Field.MD5, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[8] = rom.GetField(Field.Size, Header.ExcludeFields);
|
||||
fields[9] = rom.GetField(Field.CRC, Header.ExcludeFields).ToLowerInvariant();
|
||||
fields[10] = rom.GetField(Field.MD5, Header.ExcludeFields).ToLowerInvariant();
|
||||
//fields[11] = rom.GetField(Field.RIPEMD160, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[11] = rom.GetField(Field.SHA1, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[12] = rom.GetField(Field.SHA256, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[11] = rom.GetField(Field.SHA1, Header.ExcludeFields).ToLowerInvariant();
|
||||
fields[12] = rom.GetField(Field.SHA256, Header.ExcludeFields).ToLowerInvariant();
|
||||
//fields[13] = rom.GetField(Field.SHA384, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
//fields[14] = rom.GetField(Field.SHA512, DatHeader.ExcludeFields).ToLowerInvariant();
|
||||
fields[13] = rom.GetField(Field.Status, DatHeader.ExcludeFields);
|
||||
fields[13] = rom.GetField(Field.Status, Header.ExcludeFields);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -62,16 +62,16 @@ namespace SabreTools.Library.DatFiles
|
||||
switch (xtr.Name)
|
||||
{
|
||||
case "softwarelist":
|
||||
DatHeader.Name = (string.IsNullOrWhiteSpace(DatHeader.Name) ? xtr.GetAttribute("name") ?? string.Empty : DatHeader.Name);
|
||||
DatHeader.Description = (string.IsNullOrWhiteSpace(DatHeader.Description) ? xtr.GetAttribute("description") ?? string.Empty : DatHeader.Description);
|
||||
if (DatHeader.ForceMerging == ForceMerging.None)
|
||||
DatHeader.ForceMerging = xtr.GetAttribute("forcemerging").AsForceMerging();
|
||||
Header.Name = (string.IsNullOrWhiteSpace(Header.Name) ? xtr.GetAttribute("name") ?? string.Empty : Header.Name);
|
||||
Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? xtr.GetAttribute("description") ?? string.Empty : Header.Description);
|
||||
if (Header.ForceMerging == ForceMerging.None)
|
||||
Header.ForceMerging = xtr.GetAttribute("forcemerging").AsForceMerging();
|
||||
|
||||
if (DatHeader.ForceNodump == ForceNodump.None)
|
||||
DatHeader.ForceNodump = xtr.GetAttribute("forcenodump").AsForceNodump();
|
||||
if (Header.ForceNodump == ForceNodump.None)
|
||||
Header.ForceNodump = xtr.GetAttribute("forcenodump").AsForceNodump();
|
||||
|
||||
if (DatHeader.ForcePacking == ForcePacking.None)
|
||||
DatHeader.ForcePacking = xtr.GetAttribute("forcepacking").AsForcePacking();
|
||||
if (Header.ForcePacking == ForcePacking.None)
|
||||
Header.ForcePacking = xtr.GetAttribute("forcepacking").AsForcePacking();
|
||||
|
||||
xtr.Read();
|
||||
break;
|
||||
@@ -629,10 +629,10 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteDocType("softwarelist", null, "softwarelist.dtd", null);
|
||||
|
||||
xtw.WriteStartElement("softwarelist");
|
||||
xtw.WriteAttributeString("name", DatHeader.Name);
|
||||
xtw.WriteAttributeString("description", DatHeader.Description);
|
||||
xtw.WriteAttributeString("name", Header.Name);
|
||||
xtw.WriteAttributeString("description", Header.Description);
|
||||
|
||||
switch (DatHeader.ForcePacking)
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case ForcePacking.Unzip:
|
||||
xtw.WriteAttributeString("forcepacking", "unzip");
|
||||
@@ -642,7 +642,7 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
|
||||
switch (DatHeader.ForceMerging)
|
||||
switch (Header.ForceMerging)
|
||||
{
|
||||
case ForceMerging.Full:
|
||||
xtw.WriteAttributeString("forcemerging", "full");
|
||||
@@ -658,7 +658,7 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
}
|
||||
|
||||
switch (DatHeader.ForceNodump)
|
||||
switch (Header.ForceNodump)
|
||||
{
|
||||
case ForceNodump.Ignore:
|
||||
xtw.WriteAttributeString("forcenodump", "ignore");
|
||||
@@ -697,12 +697,12 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Build the state based on excluded fields
|
||||
xtw.WriteStartElement("software");
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.MachineName, DatHeader.ExcludeFields));
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.MachineName, Header.ExcludeFields));
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, Header.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteAttributeString("cloneof", datItem.CloneOf);
|
||||
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Supported])
|
||||
if (!Header.ExcludeFields[(int)Field.Supported])
|
||||
{
|
||||
if (datItem.Supported == true)
|
||||
xtw.WriteAttributeString("supported", "yes");
|
||||
@@ -712,16 +712,16 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteAttributeString("supported", "partial");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Description, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("description", datItem.MachineDescription);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("year", datItem.Year);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("publisher", datItem.Publisher);
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, Header.ExcludeFields)))
|
||||
xtw.WriteElementString("category", datItem.Category);
|
||||
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Infos] && datItem.Infos != null && datItem.Infos.Count > 0)
|
||||
if (!Header.ExcludeFields[(int)Field.Infos] && datItem.Infos != null && datItem.Infos.Count > 0)
|
||||
{
|
||||
foreach (KeyValuePair<string, string> kvp in datItem.Infos)
|
||||
{
|
||||
@@ -786,10 +786,10 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
// Build the state based on excluded fields
|
||||
xtw.WriteStartElement("part");
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.PartName, DatHeader.ExcludeFields));
|
||||
xtw.WriteAttributeString("interface", datItem.GetField(Field.PartInterface, DatHeader.ExcludeFields));
|
||||
xtw.WriteAttributeString("name", datItem.GetField(Field.PartName, Header.ExcludeFields));
|
||||
xtw.WriteAttributeString("interface", datItem.GetField(Field.PartInterface, Header.ExcludeFields));
|
||||
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Features] && datItem.Features != null && datItem.Features.Count > 0)
|
||||
if (!Header.ExcludeFields[(int)Field.Features] && datItem.Features != null && datItem.Features.Count > 0)
|
||||
{
|
||||
foreach (KeyValuePair<string, string> kvp in datItem.Features)
|
||||
{
|
||||
@@ -800,38 +800,38 @@ namespace SabreTools.Library.DatFiles
|
||||
}
|
||||
}
|
||||
|
||||
string areaName = datItem.GetField(Field.AreaName, DatHeader.ExcludeFields);
|
||||
string areaName = datItem.GetField(Field.AreaName, Header.ExcludeFields);
|
||||
switch (datItem.ItemType)
|
||||
{
|
||||
case ItemType.Disk:
|
||||
var disk = datItem as Disk;
|
||||
if (!DatHeader.ExcludeFields[(int)Field.AreaName] && string.IsNullOrWhiteSpace(areaName))
|
||||
if (!Header.ExcludeFields[(int)Field.AreaName] && string.IsNullOrWhiteSpace(areaName))
|
||||
areaName = "cdrom";
|
||||
|
||||
xtw.WriteStartElement("diskarea");
|
||||
xtw.WriteAttributeString("name", areaName);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.AreaSize] && disk.AreaSize != null)
|
||||
if (!Header.ExcludeFields[(int)Field.AreaSize] && disk.AreaSize != null)
|
||||
xtw.WriteAttributeString("size", disk.AreaSize.ToString());
|
||||
|
||||
xtw.WriteStartElement("disk");
|
||||
xtw.WriteAttributeString("name", disk.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
xtw.WriteAttributeString("name", disk.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("md5", disk.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("ripemd160", disk.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha1", disk.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha256", disk.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha384", disk.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha512", disk.SHA512.ToLowerInvariant());
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && disk.ItemStatus != ItemStatus.None)
|
||||
xtw.WriteAttributeString("status", disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Writable] && disk.Writable != null)
|
||||
if (!Header.ExcludeFields[(int)Field.Writable] && disk.Writable != null)
|
||||
xtw.WriteAttributeString("writable", disk.Writable == true ? "yes" : "no");
|
||||
xtw.WriteEndElement();
|
||||
|
||||
@@ -841,39 +841,39 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
case ItemType.Rom:
|
||||
var rom = datItem as Rom;
|
||||
if (!DatHeader.ExcludeFields[(int)Field.AreaName] && string.IsNullOrWhiteSpace(areaName))
|
||||
if (!Header.ExcludeFields[(int)Field.AreaName] && string.IsNullOrWhiteSpace(areaName))
|
||||
areaName = "rom";
|
||||
|
||||
xtw.WriteStartElement("dataarea");
|
||||
xtw.WriteAttributeString("name", areaName);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.AreaSize] && rom.AreaSize != null)
|
||||
if (!Header.ExcludeFields[(int)Field.AreaSize] && rom.AreaSize != null)
|
||||
xtw.WriteAttributeString("size", rom.AreaSize.ToString());
|
||||
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteAttributeString("name", rom.GetField(Field.Name, DatHeader.ExcludeFields));
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
xtw.WriteAttributeString("name", rom.GetField(Field.Name, Header.ExcludeFields));
|
||||
if (!Header.ExcludeFields[(int)Field.Size] && rom.Size != -1)
|
||||
xtw.WriteAttributeString("size", rom.Size.ToString());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CRC, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("crc", rom.CRC.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.MD5, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("md5", rom.MD5.ToLowerInvariant());
|
||||
#if NET_FRAMEWORK
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RIPEMD160, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("ripemd160", rom.RIPEMD160.ToLowerInvariant());
|
||||
#endif
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA1, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha1", rom.SHA1.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA256, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha256", rom.SHA256.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA384, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha384", rom.SHA384.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SHA512, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("sha512", rom.SHA512.ToLowerInvariant());
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Offset, DatHeader.ExcludeFields)))
|
||||
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Offset, Header.ExcludeFields)))
|
||||
xtw.WriteAttributeString("offset", rom.Offset);
|
||||
//if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Value, DatHeader.ExcludeFields)))
|
||||
// xtw.WriteAttributeString("value", rom.Value);
|
||||
if (!DatHeader.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
if (!Header.ExcludeFields[(int)Field.Status] && rom.ItemStatus != ItemStatus.None)
|
||||
xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
//if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Loadflag, DatHeader.ExcludeFields)))
|
||||
// xtw.WriteAttributeString("loadflag", rom.Loadflag);
|
||||
|
||||
@@ -2875,7 +2875,7 @@ Some special strings that can be used:
|
||||
|
||||
// Create a new DATFromDir object and process the inputs
|
||||
DatFile basedat = DatFile.Create(datHeader);
|
||||
basedat.SetDate(DateTime.Now.ToString("yyyy-MM-dd"));
|
||||
basedat.Header.Date = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
|
||||
// For each input directory, create a DAT
|
||||
foreach (string path in Inputs)
|
||||
@@ -2883,7 +2883,7 @@ Some special strings that can be used:
|
||||
if (Directory.Exists(path) || File.Exists(path))
|
||||
{
|
||||
// Clone the base Dat for information
|
||||
DatFile datdata = DatFile.Create(basedat.DatHeader);
|
||||
DatFile datdata = DatFile.Create(basedat.Header);
|
||||
|
||||
string basePath = Path.GetFullPath(path);
|
||||
bool success = datdata.PopulateFromDir(
|
||||
@@ -3128,9 +3128,9 @@ The following systems have headers that this program can work with:
|
||||
|
||||
// If we have the depot flag, respect it
|
||||
if (depot)
|
||||
datdata.RebuildDepot(Inputs, Path.Combine(outDir, datdata.DatHeader.FileName), date, delete, inverse, outputFormat, updateDat, headerToCheckAgainst);
|
||||
datdata.RebuildDepot(Inputs, Path.Combine(outDir, datdata.Header.FileName), date, delete, inverse, outputFormat, updateDat, headerToCheckAgainst);
|
||||
else
|
||||
datdata.RebuildGeneric(Inputs, Path.Combine(outDir, datdata.DatHeader.FileName), quickScan, date, delete, inverse, outputFormat, updateDat, headerToCheckAgainst, chdsAsFiles);
|
||||
datdata.RebuildGeneric(Inputs, Path.Combine(outDir, datdata.Header.FileName), quickScan, date, delete, inverse, outputFormat, updateDat, headerToCheckAgainst, chdsAsFiles);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user