diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index f4e6f2ad..56375711 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -115,7 +115,7 @@ namespace SabreTools.DatFiles /// DatHeader to get the values from public static DatFile Create(DatHeader datHeader) { - DatFile datFile = Create(datHeader.DatFormat); + DatFile datFile = Create(datHeader.GetFieldValue(DatHeader.DatFormatKey)); datFile.Header = (DatHeader)datHeader.Clone(); return datFile; } @@ -636,7 +636,7 @@ namespace SabreTools.DatFiles if (!GetSupportedTypes().Contains(datItem.GetFieldValue(Models.Metadata.DatItem.TypeKey))) { string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); - logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {Header?.DatFormat}"); + logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {Header?.GetFieldValue(DatHeader.DatFormatKey)}"); return true; } @@ -646,9 +646,9 @@ namespace SabreTools.DatFiles { string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); #if NET20 || NET35 - logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.DatFormat}: {string.Join(", ", [.. missingFields])}"); + logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.GetFieldValue(DatHeader.DatFormatKey)}: {string.Join(", ", [.. missingFields])}"); #else - logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.DatFormat}: {string.Join(", ", missingFields)}"); + logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.GetFieldValue(DatHeader.DatFormatKey)}: {string.Join(", ", missingFields)}"); #endif return true; } diff --git a/SabreTools.DatFiles/DatHeader.cs b/SabreTools.DatFiles/DatHeader.cs index 05648dd5..8e1d4ac9 100644 --- a/SabreTools.DatFiles/DatHeader.cs +++ b/SabreTools.DatFiles/DatHeader.cs @@ -23,6 +23,11 @@ namespace SabreTools.DatFiles /// public const string AddExtensionKey = "ADDEXTENSION"; + /// + /// Read or write format + /// + public const string DatFormatKey = "DATFORMAT"; + /// /// External name of the DAT /// @@ -67,12 +72,6 @@ namespace SabreTools.DatFiles #region Fields - /// - /// Read or write format - /// - [JsonIgnore, XmlIgnore] - public DatFormat DatFormat { get; set; } - [JsonIgnore] public bool InfosSpecified { @@ -166,11 +165,10 @@ namespace SabreTools.DatFiles { var header = new DatHeader() { - DatFormat = this.DatFormat, - InputDepot = this.InputDepot?.Clone() as DepotInformation, OutputDepot = this.OutputDepot?.Clone() as DepotInformation, }; + header.SetFieldValue(DatHeader.AddExtensionKey, GetFieldValue(DatHeader.AddExtensionKey)); header.SetFieldValue(Models.Metadata.Header.AuthorKey, GetFieldValue(Models.Metadata.Header.AuthorKey)); header.SetFieldValue(Models.Metadata.Header.BiosModeKey, GetFieldValue(Models.Metadata.Header.BiosModeKey)); header.SetFieldValue(Models.Metadata.Header.BuildKey, GetFieldValue(Models.Metadata.Header.BuildKey)); @@ -178,6 +176,7 @@ namespace SabreTools.DatFiles header.SetFieldValue(Models.Metadata.Header.CategoryKey, GetFieldValue(Models.Metadata.Header.CategoryKey)); header.SetFieldValue(Models.Metadata.Header.CommentKey, GetFieldValue(Models.Metadata.Header.CommentKey)); header.SetFieldValue(Models.Metadata.Header.DateKey, GetFieldValue(Models.Metadata.Header.DateKey)); + header.SetFieldValue(DatHeader.DatFormatKey, GetFieldValue(DatHeader.DatFormatKey)); header.SetFieldValue(Models.Metadata.Header.DatVersionKey, GetFieldValue(Models.Metadata.Header.DatVersionKey)); header.SetFieldValue(Models.Metadata.Header.DebugKey, GetFieldValue(Models.Metadata.Header.DebugKey)); header.SetFieldValue(Models.Metadata.Header.DescriptionKey, GetFieldValue(Models.Metadata.Header.DescriptionKey)); @@ -186,6 +185,7 @@ namespace SabreTools.DatFiles header.SetFieldValue(Models.Metadata.Header.ForceMergingKey, GetFieldValue(Models.Metadata.Header.ForceMergingKey)); header.SetFieldValue(Models.Metadata.Header.ForceNodumpKey, GetFieldValue(Models.Metadata.Header.ForceNodumpKey)); header.SetFieldValue(Models.Metadata.Header.ForcePackingKey, GetFieldValue(Models.Metadata.Header.ForcePackingKey)); + header.SetFieldValue(DatHeader.GameNameKey, GetFieldValue(DatHeader.GameNameKey)); header.SetFieldValue(Models.Metadata.Header.HeaderKey, GetFieldValue(Models.Metadata.Header.HeaderKey)); header.SetFieldValue(Models.Metadata.Header.HomepageKey, GetFieldValue(Models.Metadata.Header.HomepageKey)); header.SetFieldValue(Models.Metadata.Header.IdKey, GetFieldValue(Models.Metadata.Header.IdKey)); @@ -195,6 +195,11 @@ namespace SabreTools.DatFiles header.SetFieldValue(Models.Metadata.Header.LockSampleModeKey, GetFieldValue(Models.Metadata.Header.LockSampleModeKey)); header.SetFieldValue(Models.Metadata.Header.MameConfigKey, GetFieldValue(Models.Metadata.Header.MameConfigKey)); header.SetFieldValue(Models.Metadata.Header.NameKey, GetFieldValue(Models.Metadata.Header.NameKey)); + header.SetFieldValue(DatHeader.PostfixKey, GetFieldValue(DatHeader.PostfixKey)); + header.SetFieldValue(DatHeader.PrefixKey, GetFieldValue(DatHeader.PrefixKey)); + header.SetFieldValue(DatHeader.QuotesKey, GetFieldValue(DatHeader.QuotesKey)); + header.SetFieldValue(DatHeader.RemoveExtensionKey, GetFieldValue(DatHeader.RemoveExtensionKey)); + header.SetFieldValue(DatHeader.ReplaceExtensionKey, GetFieldValue(DatHeader.ReplaceExtensionKey)); header.SetFieldValue(Models.Metadata.Header.RomTitleKey, GetFieldValue(Models.Metadata.Header.RomTitleKey)); header.SetFieldValue(Models.Metadata.Header.RomModeKey, GetFieldValue(Models.Metadata.Header.RomModeKey)); header.SetFieldValue(Models.Metadata.Header.RootDirKey, GetFieldValue(Models.Metadata.Header.RootDirKey)); @@ -204,16 +209,8 @@ namespace SabreTools.DatFiles header.SetFieldValue(Models.Metadata.Header.SystemKey, GetFieldValue(Models.Metadata.Header.SystemKey)); header.SetFieldValue(Models.Metadata.Header.TypeKey, GetFieldValue(Models.Metadata.Header.TypeKey)); header.SetFieldValue(Models.Metadata.Header.UrlKey, GetFieldValue(Models.Metadata.Header.UrlKey)); - header.SetFieldValue(Models.Metadata.Header.VersionKey, GetFieldValue(Models.Metadata.Header.VersionKey)); - - header.SetFieldValue(DatHeader.AddExtensionKey, GetFieldValue(DatHeader.AddExtensionKey)); - header.SetFieldValue(DatHeader.GameNameKey, GetFieldValue(DatHeader.GameNameKey)); - header.SetFieldValue(DatHeader.PostfixKey, GetFieldValue(DatHeader.PostfixKey)); - header.SetFieldValue(DatHeader.PrefixKey, GetFieldValue(DatHeader.PrefixKey)); - header.SetFieldValue(DatHeader.RemoveExtensionKey, GetFieldValue(DatHeader.RemoveExtensionKey)); - header.SetFieldValue(DatHeader.ReplaceExtensionKey, GetFieldValue(DatHeader.ReplaceExtensionKey)); - header.SetFieldValue(DatHeader.QuotesKey, GetFieldValue(DatHeader.QuotesKey)); header.SetFieldValue(DatHeader.UseRomNameKey, GetFieldValue(DatHeader.UseRomNameKey)); + header.SetFieldValue(Models.Metadata.Header.VersionKey, GetFieldValue(Models.Metadata.Header.VersionKey)); return header; } @@ -223,14 +220,12 @@ namespace SabreTools.DatFiles /// public DatHeader CloneStandard() { - var header = new DatHeader() - { - DatFormat = this.DatFormat, - }; + var header = new DatHeader(); header.SetFieldValue(Models.Metadata.Header.AuthorKey, GetFieldValue(Models.Metadata.Header.AuthorKey)); header.SetFieldValue(Models.Metadata.Header.CategoryKey, GetFieldValue(Models.Metadata.Header.CategoryKey)); header.SetFieldValue(Models.Metadata.Header.CommentKey, GetFieldValue(Models.Metadata.Header.CommentKey)); header.SetFieldValue(Models.Metadata.Header.DateKey, GetFieldValue(Models.Metadata.Header.DateKey)); + header.SetFieldValue(DatHeader.DatFormatKey, GetFieldValue(DatHeader.DatFormatKey)); header.SetFieldValue(Models.Metadata.Header.DescriptionKey, GetFieldValue(Models.Metadata.Header.DescriptionKey)); header.SetFieldValue(Models.Metadata.Header.EmailKey, GetFieldValue(Models.Metadata.Header.EmailKey)); header.SetFieldValue(DatHeader.FileNameKey, GetFieldValue(DatHeader.FileNameKey)); @@ -255,12 +250,11 @@ namespace SabreTools.DatFiles { var header = new DatHeader() { - DatFormat = this.DatFormat, - InputDepot = this.InputDepot?.Clone() as DepotInformation, OutputDepot = this.OutputDepot?.Clone() as DepotInformation, }; header.SetFieldValue(DatHeader.AddExtensionKey, GetFieldValue(DatHeader.AddExtensionKey)); + header.SetFieldValue(DatHeader.DatFormatKey, GetFieldValue(DatHeader.DatFormatKey)); header.SetFieldValue(DatHeader.GameNameKey, GetFieldValue(DatHeader.GameNameKey)); header.SetFieldValue(DatHeader.PostfixKey, GetFieldValue(DatHeader.PostfixKey)); header.SetFieldValue(DatHeader.PrefixKey, GetFieldValue(DatHeader.PrefixKey)); @@ -332,8 +326,8 @@ namespace SabreTools.DatFiles if (datHeader.GetFieldValue(Models.Metadata.Header.ForcePackingKey) != PackingFlag.None) SetFieldValue(Models.Metadata.Header.ForcePackingKey, datHeader.GetFieldValue(Models.Metadata.Header.ForcePackingKey)); - if (datHeader.DatFormat != 0x00) - DatFormat = datHeader.DatFormat; + if (datHeader.GetFieldValue(DatHeader.DatFormatKey) != 0x00) + SetFieldValue(DatHeader.DatFormatKey, datHeader.GetFieldValue(DatHeader.DatFormatKey)); if (!string.IsNullOrEmpty(datHeader.GetFieldValue(DatHeader.PrefixKey))) SetFieldValue(DatHeader.PrefixKey, datHeader.GetFieldValue(DatHeader.PrefixKey)); @@ -421,9 +415,9 @@ namespace SabreTools.DatFiles // CSV #if NETFRAMEWORK - if ((DatFormat & DatFormat.CSV) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.CSV) != 0) #else - if (DatFormat.HasFlag(DatFormat.CSV)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.CSV)) #endif { outfileNames.Add(DatFormat.CSV, CreateOutFileNamesHelper(outDir, ".csv", overwrite)); @@ -436,9 +430,9 @@ namespace SabreTools.DatFiles // ClrMamePro #if NETFRAMEWORK - if ((DatFormat & DatFormat.ClrMamePro) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.ClrMamePro) != 0) #else - if (DatFormat.HasFlag(DatFormat.ClrMamePro)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.ClrMamePro)) #endif { outfileNames.Add(DatFormat.ClrMamePro, CreateOutFileNamesHelper(outDir, ".dat", overwrite)); @@ -447,9 +441,9 @@ namespace SabreTools.DatFiles // RomCenter #if NETFRAMEWORK - if ((DatFormat & DatFormat.RomCenter) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.RomCenter) != 0) #else - if (DatFormat.HasFlag(DatFormat.RomCenter)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.RomCenter)) #endif { if (usedExtensions.Contains(".dat")) @@ -466,9 +460,9 @@ namespace SabreTools.DatFiles // DOSCenter #if NETFRAMEWORK - if ((DatFormat & DatFormat.DOSCenter) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.DOSCenter) != 0) #else - if (DatFormat.HasFlag(DatFormat.DOSCenter)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.DOSCenter)) #endif { if (usedExtensions.Contains(".dat")) @@ -489,9 +483,9 @@ namespace SabreTools.DatFiles // JSON #if NETFRAMEWORK - if ((DatFormat & DatFormat.SabreJSON) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.SabreJSON) != 0) #else - if (DatFormat.HasFlag(DatFormat.SabreJSON)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.SabreJSON)) #endif { outfileNames.Add(DatFormat.SabreJSON, CreateOutFileNamesHelper(outDir, ".json", overwrite)); @@ -504,9 +498,9 @@ namespace SabreTools.DatFiles // Redump MD5 #if NETFRAMEWORK - if ((DatFormat & DatFormat.RedumpMD5) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.RedumpMD5) != 0) #else - if (DatFormat.HasFlag(DatFormat.RedumpMD5)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.RedumpMD5)) #endif { outfileNames.Add(DatFormat.RedumpMD5, CreateOutFileNamesHelper(outDir, ".md5", overwrite)); @@ -519,9 +513,9 @@ namespace SabreTools.DatFiles // Redump SFV #if NETFRAMEWORK - if ((DatFormat & DatFormat.RedumpSFV) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.RedumpSFV) != 0) #else - if (DatFormat.HasFlag(DatFormat.RedumpSFV)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.RedumpSFV)) #endif { outfileNames.Add(DatFormat.RedumpSFV, CreateOutFileNamesHelper(outDir, ".sfv", overwrite)); @@ -534,9 +528,9 @@ namespace SabreTools.DatFiles // Redump SHA-1 #if NETFRAMEWORK - if ((DatFormat & DatFormat.RedumpSHA1) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.RedumpSHA1) != 0) #else - if (DatFormat.HasFlag(DatFormat.RedumpSHA1)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.RedumpSHA1)) #endif { outfileNames.Add(DatFormat.RedumpSHA1, CreateOutFileNamesHelper(outDir, ".sha1", overwrite)); @@ -549,9 +543,9 @@ namespace SabreTools.DatFiles // Redump SHA-256 #if NETFRAMEWORK - if ((DatFormat & DatFormat.RedumpSHA256) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.RedumpSHA256) != 0) #else - if (DatFormat.HasFlag(DatFormat.RedumpSHA256)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.RedumpSHA256)) #endif { outfileNames.Add(DatFormat.RedumpSHA256, CreateOutFileNamesHelper(outDir, ".sha256", overwrite)); @@ -564,9 +558,9 @@ namespace SabreTools.DatFiles // Redump SHA-384 #if NETFRAMEWORK - if ((DatFormat & DatFormat.RedumpSHA384) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.RedumpSHA384) != 0) #else - if (DatFormat.HasFlag(DatFormat.RedumpSHA384)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.RedumpSHA384)) #endif { outfileNames.Add(DatFormat.RedumpSHA384, CreateOutFileNamesHelper(outDir, ".sha384", overwrite)); @@ -579,9 +573,9 @@ namespace SabreTools.DatFiles // Redump SHA-512 #if NETFRAMEWORK - if ((DatFormat & DatFormat.RedumpSHA512) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.RedumpSHA512) != 0) #else - if (DatFormat.HasFlag(DatFormat.RedumpSHA512)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.RedumpSHA512)) #endif { outfileNames.Add(DatFormat.RedumpSHA512, CreateOutFileNamesHelper(outDir, ".sha512", overwrite)); @@ -594,9 +588,9 @@ namespace SabreTools.DatFiles // Redump SpamSum #if NETFRAMEWORK - if ((DatFormat & DatFormat.RedumpSpamSum) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.RedumpSpamSum) != 0) #else - if (DatFormat.HasFlag(DatFormat.RedumpSpamSum)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.RedumpSpamSum)) #endif { outfileNames.Add(DatFormat.RedumpSpamSum, CreateOutFileNamesHelper(outDir, ".spamsum", overwrite)); @@ -609,9 +603,9 @@ namespace SabreTools.DatFiles // SSV #if NETFRAMEWORK - if ((DatFormat & DatFormat.SSV) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.SSV) != 0) #else - if (DatFormat.HasFlag(DatFormat.SSV)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.SSV)) #endif { outfileNames.Add(DatFormat.SSV, CreateOutFileNamesHelper(outDir, ".ssv", overwrite)); @@ -624,9 +618,9 @@ namespace SabreTools.DatFiles // TSV #if NETFRAMEWORK - if ((DatFormat & DatFormat.TSV) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.TSV) != 0) #else - if (DatFormat.HasFlag(DatFormat.TSV)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.TSV)) #endif { outfileNames.Add(DatFormat.TSV, CreateOutFileNamesHelper(outDir, ".tsv", overwrite)); @@ -639,9 +633,9 @@ namespace SabreTools.DatFiles // AttractMode #if NETFRAMEWORK - if ((DatFormat & DatFormat.AttractMode) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.AttractMode) != 0) #else - if (DatFormat.HasFlag(DatFormat.AttractMode)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.AttractMode)) #endif { outfileNames.Add(DatFormat.AttractMode, CreateOutFileNamesHelper(outDir, ".txt", overwrite)); @@ -650,9 +644,9 @@ namespace SabreTools.DatFiles // MAME Listroms #if NETFRAMEWORK - if ((DatFormat & DatFormat.Listrom) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.Listrom) != 0) #else - if (DatFormat.HasFlag(DatFormat.Listrom)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.Listrom)) #endif { if (usedExtensions.Contains(".txt")) @@ -669,9 +663,9 @@ namespace SabreTools.DatFiles // Missfile #if NETFRAMEWORK - if ((DatFormat & DatFormat.MissFile) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.MissFile) != 0) #else - if (DatFormat.HasFlag(DatFormat.MissFile)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.MissFile)) #endif { if (usedExtensions.Contains(".txt")) @@ -688,9 +682,9 @@ namespace SabreTools.DatFiles // Everdrive SMDB #if NETFRAMEWORK - if ((DatFormat & DatFormat.EverdriveSMDB) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.EverdriveSMDB) != 0) #else - if (DatFormat.HasFlag(DatFormat.EverdriveSMDB)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.EverdriveSMDB)) #endif { if (usedExtensions.Contains(".txt")) @@ -711,18 +705,18 @@ namespace SabreTools.DatFiles // Logiqx XML #if NETFRAMEWORK - if ((DatFormat & DatFormat.Logiqx) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.Logiqx) != 0) #else - if (DatFormat.HasFlag(DatFormat.Logiqx)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.Logiqx)) #endif { outfileNames.Add(DatFormat.Logiqx, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); usedExtensions.Add(".xml"); } #if NETFRAMEWORK - if ((DatFormat & DatFormat.LogiqxDeprecated) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.LogiqxDeprecated) != 0) #else - if (DatFormat.HasFlag(DatFormat.LogiqxDeprecated)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.LogiqxDeprecated)) #endif { outfileNames.Add(DatFormat.LogiqxDeprecated, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); @@ -731,9 +725,9 @@ namespace SabreTools.DatFiles // SabreDAT #if NETFRAMEWORK - if ((DatFormat & DatFormat.SabreXML) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.SabreXML) != 0) #else - if (DatFormat.HasFlag(DatFormat.SabreXML)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.SabreXML)) #endif { if (usedExtensions.Contains(".xml")) @@ -750,9 +744,9 @@ namespace SabreTools.DatFiles // Software List #if NETFRAMEWORK - if ((DatFormat & DatFormat.SoftwareList) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.SoftwareList) != 0) #else - if (DatFormat.HasFlag(DatFormat.SoftwareList)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.SoftwareList)) #endif { if (usedExtensions.Contains(".xml")) @@ -769,9 +763,9 @@ namespace SabreTools.DatFiles // MAME Listxml #if NETFRAMEWORK - if ((DatFormat & DatFormat.Listxml) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.Listxml) != 0) #else - if (DatFormat.HasFlag(DatFormat.Listxml)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.Listxml)) #endif { if (usedExtensions.Contains(".xml")) @@ -788,9 +782,9 @@ namespace SabreTools.DatFiles // OfflineList #if NETFRAMEWORK - if ((DatFormat & DatFormat.OfflineList) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.OfflineList) != 0) #else - if (DatFormat.HasFlag(DatFormat.OfflineList)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.OfflineList)) #endif { if (usedExtensions.Contains(".xml")) @@ -807,9 +801,9 @@ namespace SabreTools.DatFiles // openMSX #if NETFRAMEWORK - if ((DatFormat & DatFormat.OpenMSX) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.OpenMSX) != 0) #else - if (DatFormat.HasFlag(DatFormat.OpenMSX)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.OpenMSX)) #endif { if (usedExtensions.Contains(".xml")) @@ -826,9 +820,9 @@ namespace SabreTools.DatFiles // Archive.org #if NETFRAMEWORK - if ((DatFormat & DatFormat.ArchiveDotOrg) != 0) + if ((GetFieldValue(DatHeader.DatFormatKey) & DatFormat.ArchiveDotOrg) != 0) #else - if (DatFormat.HasFlag(DatFormat.ArchiveDotOrg)) + if (GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.ArchiveDotOrg)) #endif { if (usedExtensions.Contains(".xml")) diff --git a/SabreTools.DatTools/Parser.cs b/SabreTools.DatTools/Parser.cs index 44a64bbc..0e53ea84 100644 --- a/SabreTools.DatTools/Parser.cs +++ b/SabreTools.DatTools/Parser.cs @@ -102,7 +102,9 @@ namespace SabreTools.DatTools // If the output type isn't set already, get the internal output type DatFormat currentPathFormat = GetDatFormat(currentPath); - datFile.Header.DatFormat = datFile.Header.DatFormat == 0 ? currentPathFormat : datFile.Header.DatFormat; + datFile.Header.SetFieldValue(DatHeader.DatFormatKey, datFile.Header.GetFieldValue(DatHeader.DatFormatKey) == 0 + ? currentPathFormat + : datFile.Header.GetFieldValue(DatHeader.DatFormatKey)); datFile.Items.SetBucketedBy(ItemKey.CRC); // Setting this because it can reduce issues later InternalStopwatch watch = new($"Parsing '{currentPath}' into internal DAT"); diff --git a/SabreTools.DatTools/Writer.cs b/SabreTools.DatTools/Writer.cs index ff161b36..3fa5c837 100644 --- a/SabreTools.DatTools/Writer.cs +++ b/SabreTools.DatTools/Writer.cs @@ -58,10 +58,10 @@ namespace SabreTools.DatTools InternalStopwatch watch = new($"Writing out internal dat to '{outDir}'"); // If the DAT has no output format, default to XML - if (datFile.Header.DatFormat == 0) + if (datFile.Header.GetFieldValue(DatHeader.DatFormatKey) == 0) { logger.Verbose("No DAT format defined, defaulting to XML"); - datFile.Header.DatFormat = DatFormat.Logiqx; + datFile.Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.Logiqx); } // Make sure that the three essential fields are filled in diff --git a/SabreTools.Test/DatFiles/DatHeaderTests.cs b/SabreTools.Test/DatFiles/DatHeaderTests.cs index 296befba..e87ed93f 100644 --- a/SabreTools.Test/DatFiles/DatHeaderTests.cs +++ b/SabreTools.Test/DatFiles/DatHeaderTests.cs @@ -14,11 +14,9 @@ namespace SabreTools.Test.DatFiles public void CreateOutFileNamesTest(DatFormat datFormat, string extension) { // Create the empty DatHeader - var datHeader = new DatHeader - { - DatFormat = datFormat, - }; + var datHeader = new DatHeader(); datHeader.SetFieldValue(DatHeader.FileNameKey, "test.dat"); + datHeader.SetFieldValue(DatHeader.DatFormatKey, datFormat); // Invoke the method string outDir = "C:\\Test"; @@ -34,11 +32,9 @@ namespace SabreTools.Test.DatFiles public void CreateOutFileNamesAllOutputsTest() { // Create the empty DatHeader - var datHeader = new DatHeader - { - DatFormat = DatFormat.ALL, - }; + var datHeader = new DatHeader(); datHeader.SetFieldValue(DatHeader.FileNameKey, "test.dat"); + datHeader.SetFieldValue(DatHeader.DatFormatKey, DatFormat.ALL); // Invoke the method string outDir = "C:\\Test"; diff --git a/SabreTools.Test/DatTools/ParserTests.cs b/SabreTools.Test/DatTools/ParserTests.cs index 26967a98..d441d5d7 100644 --- a/SabreTools.Test/DatTools/ParserTests.cs +++ b/SabreTools.Test/DatTools/ParserTests.cs @@ -42,7 +42,7 @@ namespace SabreTools.Test.DatTools filename = Path.Combine(Environment.CurrentDirectory, "TestData", filename); var datFile = SabreTools.DatTools.Parser.CreateAndParse(filename, throwOnError: true); - Assert.Equal(datFormat, datFile.Header.DatFormat); + Assert.Equal(datFormat, datFile.Header.GetFieldValue(DatHeader.DatFormatKey)); Assert.Equal(totalCount, datFile.Items.TotalCount); } } diff --git a/SabreTools/Features/BaseFeature.cs b/SabreTools/Features/BaseFeature.cs index 95022666..d7f3bf9d 100644 --- a/SabreTools/Features/BaseFeature.cs +++ b/SabreTools/Features/BaseFeature.cs @@ -2198,11 +2198,11 @@ Some special strings that can be used: } else if (dftemp == DatFormat.Logiqx && deprecated) { - datHeader.DatFormat |= DatFormat.LogiqxDeprecated; + datHeader.SetFieldValue(DatHeader.DatFormatKey, datHeader.GetFieldValue(DatHeader.DatFormatKey) | DatFormat.LogiqxDeprecated); } else { - datHeader.DatFormat |= dftemp; + datHeader.SetFieldValue(DatHeader.DatFormatKey, datHeader.GetFieldValue(DatHeader.DatFormatKey) | dftemp); } } diff --git a/SabreTools/Features/Batch.cs b/SabreTools/Features/Batch.cs index c025d7d2..680d0dfa 100644 --- a/SabreTools/Features/Batch.cs +++ b/SabreTools/Features/Batch.cs @@ -480,10 +480,10 @@ Reset the internal state: reset();"; public override void Process(BatchState batchState) { // Assume there could be multiple - batchState.DatFile.Header.DatFormat = 0x00; + batchState.DatFile.Header.SetFieldValue(DatHeader.DatFormatKey, 0x00); foreach (string format in Arguments) { - batchState.DatFile.Header.DatFormat |= GetDatFormat(format); + batchState.DatFile.Header.SetFieldValue(DatHeader.DatFormatKey, batchState.DatFile.Header.GetFieldValue(DatHeader.DatFormatKey) | GetDatFormat(format)); } } } @@ -804,7 +804,7 @@ Reset the internal state: reset();"; // Read in the individual arguments (string? type, string? key) = FilterParser.ParseFilterId(Arguments[0]); - + // If we had an invalid input, log and continue if ((type == null || !string.Equals(type, Models.Metadata.MetadataFile.HeaderKey, StringComparison.OrdinalIgnoreCase)) && key == null) { diff --git a/SabreTools/Features/Update.cs b/SabreTools/Features/Update.cs index 800b11b0..19ab16a1 100644 --- a/SabreTools/Features/Update.cs +++ b/SabreTools/Features/Update.cs @@ -167,9 +167,9 @@ namespace SabreTools.Features DatFile datFile = DatFile.Create(Header); logger.User($"Processing '{Path.GetFileName(inputPath.CurrentPath)}'"); Parser.ParseInto(datFile, inputPath, keep: true, - keepext: datFile.Header.DatFormat.HasFlag(DatFormat.TSV) - || datFile.Header.DatFormat.HasFlag(DatFormat.CSV) - || datFile.Header.DatFormat.HasFlag(DatFormat.SSV)); + keepext: datFile.Header.GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.TSV) + || datFile.Header.GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.CSV) + || datFile.Header.GetFieldValue(DatHeader.DatFormatKey).HasFlag(DatFormat.SSV)); // Perform additional processing steps Extras!.ApplyExtras(datFile);