From 419ea5ce31562b74dc5cf123d489a1c85ef31b42 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 20 Aug 2020 20:38:29 -0700 Subject: [PATCH] Move to MergingFlag --- SabreTools.Library/DatFiles/ClrMamePro.cs | 24 +- SabreTools.Library/DatFiles/DatFile.cs | 12 +- SabreTools.Library/DatFiles/DatHeader.cs | 27 ++- SabreTools.Library/DatFiles/Enums.cs | 66 +++--- SabreTools.Library/DatFiles/Json.cs | 84 ++++--- SabreTools.Library/DatFiles/Logiqx.cs | 87 ++++--- SabreTools.Library/DatFiles/RomCenter.cs | 12 +- SabreTools.Library/DatFiles/SabreDat.cs | 36 +-- SabreTools.Library/DatFiles/SeparatedValue.cs | 12 +- SabreTools.Library/DatFiles/SoftwareList.cs | 30 +-- SabreTools.Library/Tools/Converters.cs | 224 +++++++++--------- SabreTools/Features/BaseFeature.cs | 7 +- 12 files changed, 342 insertions(+), 279 deletions(-) diff --git a/SabreTools.Library/DatFiles/ClrMamePro.cs b/SabreTools.Library/DatFiles/ClrMamePro.cs index d05fa04f..c35f5c6d 100644 --- a/SabreTools.Library/DatFiles/ClrMamePro.cs +++ b/SabreTools.Library/DatFiles/ClrMamePro.cs @@ -162,18 +162,18 @@ namespace SabreTools.Library.DatFiles superdat = superdat || itemVal.Contains("SuperDAT"); break; case "forcemerging": - if (Header.ForceMerging == ForceMerging.None) - Header.ForceMerging = itemVal.AsForceMerging(); + if (Header.ForceMerging == MergingFlag.None) + Header.ForceMerging = itemVal.AsMergingFlag(); break; case "forcezipping": - if (Header.ForcePacking == ForcePacking.None) - Header.ForcePacking = itemVal.AsForcePacking(); + if (Header.ForcePacking == PackingFlag.None) + Header.ForcePacking = itemVal.AsPackingFlag(); break; case "forcepacking": - if (Header.ForcePacking == ForcePacking.None) - Header.ForcePacking = itemVal.AsForcePacking(); + if (Header.ForcePacking == PackingFlag.None) + Header.ForcePacking = itemVal.AsPackingFlag(); break; } @@ -567,26 +567,26 @@ namespace SabreTools.Library.DatFiles switch (Header.ForcePacking) { - case ForcePacking.Unzip: + case PackingFlag.Unzip: cmpw.WriteStandalone("forcezipping", "no", false); break; - case ForcePacking.Zip: + case PackingFlag.Zip: cmpw.WriteStandalone("forcezipping", "yes", false); break; } switch (Header.ForceMerging) { - case ForceMerging.Full: + case MergingFlag.Full: cmpw.WriteStandalone("forcemerging", "full", false); break; - case ForceMerging.Split: + case MergingFlag.Split: cmpw.WriteStandalone("forcemerging", "split", false); break; - case ForceMerging.Merged: + case MergingFlag.Merged: cmpw.WriteStandalone("forcemerging", "merged", false); break; - case ForceMerging.NonMerged: + case MergingFlag.NonMerged: cmpw.WriteStandalone("forcemerging", "nonmerged", false); break; } diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs index 4eb4c726..f5a31d4d 100644 --- a/SabreTools.Library/DatFiles/DatFile.cs +++ b/SabreTools.Library/DatFiles/DatFile.cs @@ -2382,14 +2382,14 @@ 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 && Header.ForcePacking != ForcePacking.None) + if (outputFormat == OutputFormat.Folder && Header.ForcePacking != PackingFlag.None) { switch (Header.ForcePacking) { - case ForcePacking.Zip: + case PackingFlag.Zip: outputFormat = OutputFormat.TorrentZip; break; - case ForcePacking.Unzip: + case PackingFlag.Unzip: outputFormat = OutputFormat.Folder; break; } @@ -2569,14 +2569,14 @@ namespace SabreTools.Library.DatFiles } // Now we want to get forcepack flag if it's not overridden - if (outputFormat == OutputFormat.Folder && Header.ForcePacking != ForcePacking.None) + if (outputFormat == OutputFormat.Folder && Header.ForcePacking != PackingFlag.None) { switch (Header.ForcePacking) { - case ForcePacking.Zip: + case PackingFlag.Zip: outputFormat = OutputFormat.TorrentZip; break; - case ForcePacking.Unzip: + case PackingFlag.Unzip: outputFormat = OutputFormat.Folder; break; } diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs index bdb3368c..8ed1c5b1 100644 --- a/SabreTools.Library/DatFiles/DatHeader.cs +++ b/SabreTools.Library/DatFiles/DatHeader.cs @@ -106,21 +106,21 @@ namespace SabreTools.Library.DatFiles /// /// TODO: Make nullable [JsonProperty("forcemerging")] - public ForceMerging ForceMerging { get; set; } + public MergingFlag ForceMerging { get; set; } /// /// Force nodump handling when loaded /// /// TODO: Make nullable [JsonProperty("forcenodump")] - public ForceNodump ForceNodump { get; set; } + public NodumpFlag ForceNodump { get; set; } /// /// Force output packing when loaded /// /// TODO: Make nullable [JsonProperty("forcepacking")] - public ForcePacking ForcePacking { get; set; } + public PackingFlag ForcePacking { get; set; } /// /// Read or write format @@ -206,38 +206,41 @@ namespace SabreTools.Library.DatFiles /// /// RomCenter rom mode /// + /// (merged|split|unmerged) "split" [JsonProperty("rommode")] - public string RomMode { get; set; } // (merged|split|unmerged) "split" + public MergingFlag RomMode { get; set; } /// /// RomCenter bios mode /// + /// (merged|split|unmerged) "split" [JsonProperty("biosmode")] - public string BiosMode { get; set; } // (merged|split|unmerged) "split" + public MergingFlag BiosMode { get; set; } /// /// RomCenter sample mode /// + /// (merged|unmerged) "merged" [JsonProperty("samplemode")] - public string SampleMode { get; set; } // (merged|unmerged) "merged" + public MergingFlag SampleMode { get; set; } /// /// RomCenter lock rom mode /// [JsonProperty("lockrommode")] - public bool? LockRomMode { get; set; } // (yes|no) "no" + public bool? LockRomMode { get; set; } /// /// RomCenter lock bios mode /// [JsonProperty("lockbiosmode")] - public bool? LockBiosMode { get; set; } // (yes|no) "no" + public bool? LockBiosMode { get; set; } /// /// RomCenter lock sample mode /// [JsonProperty("locksamplemode")] - public bool? LockSampleMode { get; set; } // (yes|no) "no" + public bool? LockSampleMode { get; set; } #endregion @@ -537,13 +540,13 @@ namespace SabreTools.Library.DatFiles if (!string.IsNullOrWhiteSpace(datHeader.Type)) Type = datHeader.Type; - if (datHeader.ForceMerging != ForceMerging.None) + if (datHeader.ForceMerging != MergingFlag.None) ForceMerging = datHeader.ForceMerging; - if (datHeader.ForceNodump != ForceNodump.None) + if (datHeader.ForceNodump != NodumpFlag.None) ForceNodump = datHeader.ForceNodump; - if (datHeader.ForcePacking != ForcePacking.None) + if (datHeader.ForcePacking != PackingFlag.None) ForcePacking = datHeader.ForcePacking; if (datHeader.DatFormat != 0x00) diff --git a/SabreTools.Library/DatFiles/Enums.cs b/SabreTools.Library/DatFiles/Enums.cs index 517e0ea6..d29de789 100644 --- a/SabreTools.Library/DatFiles/Enums.cs +++ b/SabreTools.Library/DatFiles/Enums.cs @@ -196,39 +196,6 @@ namespace SabreTools.Library.DatFiles SHA512, } - /// - /// Determines forcemerging tag for DAT output - /// - public enum ForceMerging - { - None = 0, - Split, - Merged, - NonMerged, - Full, - } - - /// - /// Determines forcenodump tag for DAT output - /// - public enum ForceNodump - { - None = 0, - Obsolete, - Required, - Ignore, - } - - /// - /// Determines forcepacking tag for DAT output - /// - public enum ForcePacking - { - None = 0, - Zip, - Unzip, - } - /// /// Available hashing types /// @@ -256,6 +223,39 @@ namespace SabreTools.Library.DatFiles #endif } + /// + /// Determines merging tag handling for DAT output + /// + public enum MergingFlag + { + None = 0, + Split, + Merged, + NonMerged, + Full, + } + + /// + /// Determines nodump tag handling for DAT output + /// + public enum NodumpFlag + { + None = 0, + Obsolete, + Required, + Ignore, + } + + /// + /// Determines packing tag handling for DAT output + /// + public enum PackingFlag + { + None = 0, + Zip, + Unzip, + } + /// /// Determines which files should be skipped in DFD /// diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs index b97f0b90..a4fffea6 100644 --- a/SabreTools.Library/DatFiles/Json.cs +++ b/SabreTools.Library/DatFiles/Json.cs @@ -194,20 +194,20 @@ namespace SabreTools.Library.DatFiles break; case "forcemerging": - if (Header.ForceMerging == ForceMerging.None) - Header.ForceMerging = jtr.ReadAsString().AsForceMerging(); + if (Header.ForceMerging == MergingFlag.None) + Header.ForceMerging = jtr.ReadAsString().AsMergingFlag(); break; case "forcenodump": - if (Header.ForceNodump == ForceNodump.None) - Header.ForceNodump = jtr.ReadAsString().AsForceNodump(); + if (Header.ForceNodump == NodumpFlag.None) + Header.ForceNodump = jtr.ReadAsString().AsNodumpFlag(); break; case "forcepacking": - if (Header.ForcePacking == ForcePacking.None) - Header.ForcePacking = jtr.ReadAsString().AsForcePacking(); + if (Header.ForcePacking == PackingFlag.None) + Header.ForcePacking = jtr.ReadAsString().AsPackingFlag(); break; @@ -236,17 +236,17 @@ namespace SabreTools.Library.DatFiles case "rommode": content = jtr.ReadAsString(); - Header.RomMode = (Header.RomMode == null ? content : Header.RomMode); + Header.RomMode = (Header.RomMode == MergingFlag.None ? content.AsMergingFlag() : Header.RomMode); break; case "biosmode": content = jtr.ReadAsString(); - Header.BiosMode = (Header.BiosMode == null ? content : Header.BiosMode); + Header.BiosMode = (Header.BiosMode == MergingFlag.None ? content.AsMergingFlag() : Header.BiosMode); break; case "samplemode": content = jtr.ReadAsString(); - Header.Build = (Header.SampleMode == null ? content : Header.SampleMode); + Header.SampleMode = (Header.SampleMode == MergingFlag.None ? content.AsMergingFlag() : Header.SampleMode); break; case "lockrommode": @@ -1083,50 +1083,50 @@ namespace SabreTools.Library.DatFiles jtw.WritePropertyName("type"); jtw.WriteValue(Header.Type); } - if (Header.ForceMerging != ForceMerging.None) + if (Header.ForceMerging != MergingFlag.None) { jtw.WritePropertyName("forcemerging"); switch (Header.ForceMerging) { - case ForceMerging.Full: + case MergingFlag.Full: jtw.WriteValue("full"); break; - case ForceMerging.Split: + case MergingFlag.Split: jtw.WriteValue("split"); break; - case ForceMerging.Merged: + case MergingFlag.Merged: jtw.WriteValue("merged"); break; - case ForceMerging.NonMerged: + case MergingFlag.NonMerged: jtw.WriteValue("nonmerged"); break; } } - if (Header.ForcePacking != ForcePacking.None) + if (Header.ForcePacking != PackingFlag.None) { jtw.WritePropertyName("forcepacking"); switch (Header.ForcePacking) { - case ForcePacking.Unzip: + case PackingFlag.Unzip: jtw.WriteValue("unzip"); break; - case ForcePacking.Zip: + case PackingFlag.Zip: jtw.WriteValue("zip"); break; } } - if (Header.ForceNodump != ForceNodump.None) + if (Header.ForceNodump != NodumpFlag.None) { jtw.WritePropertyName("forcenodump"); switch (Header.ForceNodump) { - case ForceNodump.Ignore: + case NodumpFlag.Ignore: jtw.WriteValue("ignore"); break; - case ForceNodump.Obsolete: + case NodumpFlag.Obsolete: jtw.WriteValue("obsolete"); break; - case ForceNodump.Required: + case NodumpFlag.Required: jtw.WriteValue("required"); break; } @@ -1171,22 +1171,52 @@ namespace SabreTools.Library.DatFiles jtw.WriteValue(Header.Build); } - if (!string.IsNullOrWhiteSpace(Header.RomMode)) + if (Header.RomMode != MergingFlag.None) { jtw.WritePropertyName("rommode"); - jtw.WriteValue(Header.RomMode); + switch (Header.RomMode) + { + case MergingFlag.Split: + jtw.WriteValue("split"); + break; + case MergingFlag.Merged: + jtw.WriteValue("merged"); + break; + case MergingFlag.NonMerged: + jtw.WriteValue("unmerged"); + break; + } } - if (!string.IsNullOrWhiteSpace(Header.BiosMode)) + if (Header.BiosMode != MergingFlag.None) { jtw.WritePropertyName("biosmode"); - jtw.WriteValue(Header.BiosMode); + switch (Header.BiosMode) + { + case MergingFlag.Split: + jtw.WriteValue("split"); + break; + case MergingFlag.Merged: + jtw.WriteValue("merged"); + break; + case MergingFlag.NonMerged: + jtw.WriteValue("unmerged"); + break; + } } - if (!string.IsNullOrWhiteSpace(Header.SampleMode)) + if (Header.SampleMode != MergingFlag.None) { jtw.WritePropertyName("samplemode"); - jtw.WriteValue(Header.SampleMode); + switch (Header.SampleMode) + { + case MergingFlag.Merged: + jtw.WriteValue("merged"); + break; + case MergingFlag.NonMerged: + jtw.WriteValue("unmerged"); + break; + } } if (Header.LockRomMode != null) diff --git a/SabreTools.Library/DatFiles/Logiqx.cs b/SabreTools.Library/DatFiles/Logiqx.cs index 4679d024..616abe26 100644 --- a/SabreTools.Library/DatFiles/Logiqx.cs +++ b/SabreTools.Library/DatFiles/Logiqx.cs @@ -221,14 +221,14 @@ namespace SabreTools.Library.DatFiles if (Header.HeaderSkipper == null) Header.HeaderSkipper = reader.GetAttribute("header"); - if (Header.ForceMerging == ForceMerging.None) - Header.ForceMerging = reader.GetAttribute("forcemerging").AsForceMerging(); + if (Header.ForceMerging == MergingFlag.None) + Header.ForceMerging = reader.GetAttribute("forcemerging").AsMergingFlag(); - if (Header.ForceNodump == ForceNodump.None) - Header.ForceNodump = reader.GetAttribute("forcenodump").AsForceNodump(); + if (Header.ForceNodump == NodumpFlag.None) + Header.ForceNodump = reader.GetAttribute("forcenodump").AsNodumpFlag(); - if (Header.ForcePacking == ForcePacking.None) - Header.ForcePacking = reader.GetAttribute("forcepacking").AsForcePacking(); + if (Header.ForcePacking == PackingFlag.None) + Header.ForcePacking = reader.GetAttribute("forcepacking").AsPackingFlag(); reader.Read(); break; @@ -238,13 +238,13 @@ namespace SabreTools.Library.DatFiles Header.System = reader.GetAttribute("plugin"); if (Header.RomMode == null) - Header.RomMode = reader.GetAttribute("rommode"); + Header.RomMode = reader.GetAttribute("rommode").AsMergingFlag(); if (Header.BiosMode == null) - Header.BiosMode = reader.GetAttribute("biosmode"); + Header.BiosMode = reader.GetAttribute("biosmode").AsMergingFlag(); if (Header.SampleMode == null) - Header.SampleMode = reader.GetAttribute("samplemode"); + Header.SampleMode = reader.GetAttribute("samplemode").AsMergingFlag(); if (Header.LockRomMode == null) Header.LockRomMode = reader.GetAttribute("lockrommode").AsYesNo(); @@ -799,47 +799,47 @@ namespace SabreTools.Library.DatFiles if (!string.IsNullOrWhiteSpace(Header.Type)) xtw.WriteElementString("type", Header.Type); - if (Header.ForcePacking != ForcePacking.None - || Header.ForceMerging != ForceMerging.None - || Header.ForceNodump != ForceNodump.None + if (Header.ForcePacking != PackingFlag.None + || Header.ForceMerging != MergingFlag.None + || Header.ForceNodump != NodumpFlag.None || !string.IsNullOrWhiteSpace(Header.HeaderSkipper)) { xtw.WriteStartElement("clrmamepro"); switch (Header.ForcePacking) { - case ForcePacking.Unzip: + case PackingFlag.Unzip: xtw.WriteAttributeString("forcepacking", "unzip"); break; - case ForcePacking.Zip: + case PackingFlag.Zip: xtw.WriteAttributeString("forcepacking", "zip"); break; } switch (Header.ForceMerging) { - case ForceMerging.Full: + case MergingFlag.Full: xtw.WriteAttributeString("forcemerging", "full"); break; - case ForceMerging.Split: + case MergingFlag.Split: xtw.WriteAttributeString("forcemerging", "split"); break; - case ForceMerging.Merged: + case MergingFlag.Merged: xtw.WriteAttributeString("forcemerging", "merged"); break; - case ForceMerging.NonMerged: + case MergingFlag.NonMerged: xtw.WriteAttributeString("forcemerging", "nonmerged"); break; } switch (Header.ForceNodump) { - case ForceNodump.Ignore: + case NodumpFlag.Ignore: xtw.WriteAttributeString("forcenodump", "ignore"); break; - case ForceNodump.Obsolete: + case NodumpFlag.Obsolete: xtw.WriteAttributeString("forcenodump", "obsolete"); break; - case ForceNodump.Required: + case NodumpFlag.Required: xtw.WriteAttributeString("forcenodump", "required"); break; } @@ -852,23 +852,50 @@ namespace SabreTools.Library.DatFiles } if (Header.System != null - || Header.RomMode != null || Header.LockRomMode != null - || Header.BiosMode != null || Header.LockBiosMode != null - || Header.SampleMode != null || Header.LockSampleMode != null) + || Header.RomMode != MergingFlag.None || Header.LockRomMode != null + || Header.BiosMode != MergingFlag.None || Header.LockBiosMode != null + || Header.SampleMode != MergingFlag.None || Header.LockSampleMode != null) { xtw.WriteStartElement("romcenter"); if (!string.IsNullOrWhiteSpace(Header.System)) xtw.WriteAttributeString("plugin", Header.System); - if (!string.IsNullOrWhiteSpace(Header.RomMode)) - xtw.WriteAttributeString("rommode", Header.RomMode); + switch (Header.RomMode) + { + case MergingFlag.Split: + xtw.WriteAttributeString("rommode", "split"); + break; + case MergingFlag.Merged: + xtw.WriteAttributeString("rommode", "merged"); + break; + case MergingFlag.NonMerged: + xtw.WriteAttributeString("rommode", "unmerged"); + break; + } - if (!string.IsNullOrWhiteSpace(Header.BiosMode)) - xtw.WriteAttributeString("biosmode", Header.BiosMode); + switch (Header.BiosMode) + { + case MergingFlag.Split: + xtw.WriteAttributeString("biosmode", "split"); + break; + case MergingFlag.Merged: + xtw.WriteAttributeString("biosmode", "merged"); + break; + case MergingFlag.NonMerged: + xtw.WriteAttributeString("biosmode", "unmerged"); + break; + } - if (!string.IsNullOrWhiteSpace(Header.SampleMode)) - xtw.WriteAttributeString("samplemode", Header.SampleMode); + switch (Header.SampleMode) + { + case MergingFlag.Merged: + xtw.WriteAttributeString("samplemode", "merged"); + break; + case MergingFlag.NonMerged: + xtw.WriteAttributeString("samplemode", "unmerged"); + break; + } if (Header.LockRomMode != null) { diff --git a/SabreTools.Library/DatFiles/RomCenter.cs b/SabreTools.Library/DatFiles/RomCenter.cs index 8f09bd0b..31918b85 100644 --- a/SabreTools.Library/DatFiles/RomCenter.cs +++ b/SabreTools.Library/DatFiles/RomCenter.cs @@ -212,15 +212,15 @@ namespace SabreTools.Library.DatFiles break; case "split": - if (Header.ForceMerging == ForceMerging.None && kvp?.Value == "1") - Header.ForceMerging = ForceMerging.Split; + if (Header.ForceMerging == MergingFlag.None && kvp?.Value == "1") + Header.ForceMerging = MergingFlag.Split; reader.ReadNextLine(); break; case "merge": - if (Header.ForceMerging == ForceMerging.None && kvp?.Value == "1") - Header.ForceMerging = ForceMerging.Merged; + if (Header.ForceMerging == MergingFlag.None && kvp?.Value == "1") + Header.ForceMerging = MergingFlag.Merged; reader.ReadNextLine(); break; @@ -475,8 +475,8 @@ namespace SabreTools.Library.DatFiles iw.WriteSection("DAT"); iw.WriteKeyValuePair("version", Header.RomCenterVersion ?? "2.50"); iw.WriteKeyValuePair("plugin", Header.System); - iw.WriteKeyValuePair("split", Header.ForceMerging == ForceMerging.Split ? "1" : "0"); - iw.WriteKeyValuePair("merge", Header.ForceMerging == ForceMerging.Full || Header.ForceMerging == ForceMerging.Merged ? "1" : "0"); + iw.WriteKeyValuePair("split", Header.ForceMerging == MergingFlag.Split ? "1" : "0"); + iw.WriteKeyValuePair("merge", Header.ForceMerging == MergingFlag.Full || Header.ForceMerging == MergingFlag.Merged ? "1" : "0"); iw.WriteSection("EMULATOR"); iw.WriteKeyValuePair("refname", Header.Name); diff --git a/SabreTools.Library/DatFiles/SabreDat.cs b/SabreTools.Library/DatFiles/SabreDat.cs index 1efef8a4..b01f47c0 100644 --- a/SabreTools.Library/DatFiles/SabreDat.cs +++ b/SabreTools.Library/DatFiles/SabreDat.cs @@ -516,20 +516,20 @@ namespace SabreTools.Library.DatFiles break; case "forcemerging": - if (Header.ForceMerging == ForceMerging.None) - Header.ForceMerging = content.AsForceMerging(); + if (Header.ForceMerging == MergingFlag.None) + Header.ForceMerging = content.AsMergingFlag(); break; case "forcenodump": - if (Header.ForceNodump == ForceNodump.None) - Header.ForceNodump = content.AsForceNodump(); + if (Header.ForceNodump == NodumpFlag.None) + Header.ForceNodump = content.AsNodumpFlag(); break; case "forcepacking": - if (Header.ForcePacking == ForcePacking.None) - Header.ForcePacking = content.AsForcePacking(); + if (Header.ForcePacking == PackingFlag.None) + Header.ForcePacking = content.AsPackingFlag(); break; } @@ -676,9 +676,9 @@ namespace SabreTools.Library.DatFiles 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) + || Header.ForcePacking != PackingFlag.None + || Header.ForceMerging != MergingFlag.None + || Header.ForceNodump != NodumpFlag.None) { xtw.WriteStartElement("flags"); @@ -692,13 +692,13 @@ namespace SabreTools.Library.DatFiles switch (Header.ForcePacking) { - case ForcePacking.Unzip: + case PackingFlag.Unzip: xtw.WriteStartElement("flag"); xtw.WriteAttributeString("name", "forcepacking"); xtw.WriteAttributeString("value", "unzip"); xtw.WriteEndElement(); break; - case ForcePacking.Zip: + case PackingFlag.Zip: xtw.WriteStartElement("flag"); xtw.WriteAttributeString("name", "forcepacking"); xtw.WriteAttributeString("value", "zip"); @@ -708,25 +708,25 @@ namespace SabreTools.Library.DatFiles switch (Header.ForceMerging) { - case ForceMerging.Full: + case MergingFlag.Full: xtw.WriteStartElement("flag"); xtw.WriteAttributeString("name", "forcemerging"); xtw.WriteAttributeString("value", "full"); xtw.WriteEndElement(); break; - case ForceMerging.Split: + case MergingFlag.Split: xtw.WriteStartElement("flag"); xtw.WriteAttributeString("name", "forcemerging"); xtw.WriteAttributeString("value", "split"); xtw.WriteEndElement(); break; - case ForceMerging.Merged: + case MergingFlag.Merged: xtw.WriteStartElement("flag"); xtw.WriteAttributeString("name", "forcemerging"); xtw.WriteAttributeString("value", "merged"); xtw.WriteEndElement(); break; - case ForceMerging.NonMerged: + case MergingFlag.NonMerged: xtw.WriteStartElement("flag"); xtw.WriteAttributeString("name", "forcemerging"); xtw.WriteAttributeString("value", "nonmerged"); @@ -736,19 +736,19 @@ namespace SabreTools.Library.DatFiles switch (Header.ForceNodump) { - case ForceNodump.Ignore: + case NodumpFlag.Ignore: xtw.WriteStartElement("flag"); xtw.WriteAttributeString("name", "forcenodump"); xtw.WriteAttributeString("value", "ignore"); xtw.WriteEndElement(); break; - case ForceNodump.Obsolete: + case NodumpFlag.Obsolete: xtw.WriteStartElement("flag"); xtw.WriteAttributeString("name", "forcenodump"); xtw.WriteAttributeString("value", "obsolete"); xtw.WriteEndElement(); break; - case ForceNodump.Required: + case NodumpFlag.Required: xtw.WriteStartElement("flag"); xtw.WriteAttributeString("name", "forcenodump"); xtw.WriteAttributeString("value", "required"); diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs index 20d27c3c..77558764 100644 --- a/SabreTools.Library/DatFiles/SeparatedValue.cs +++ b/SabreTools.Library/DatFiles/SeparatedValue.cs @@ -175,15 +175,15 @@ namespace SabreTools.Library.DatFiles break; case "DatFile.ForceMerging": - Header.ForceMerging = (Header.ForceMerging == ForceMerging.None ? value.AsForceMerging() : Header.ForceMerging); + Header.ForceMerging = (Header.ForceMerging == MergingFlag.None ? value.AsMergingFlag() : Header.ForceMerging); break; case "DatFile.ForceNodump": - Header.ForceNodump = (Header.ForceNodump == ForceNodump.None ? value.AsForceNodump() : Header.ForceNodump); + Header.ForceNodump = (Header.ForceNodump == NodumpFlag.None ? value.AsNodumpFlag() : Header.ForceNodump); break; case "DatFile.ForcePacking": - Header.ForcePacking = (Header.ForcePacking == ForcePacking.None ? value.AsForcePacking() : Header.ForcePacking); + Header.ForcePacking = (Header.ForcePacking == PackingFlag.None ? value.AsPackingFlag() : Header.ForcePacking); break; #endregion @@ -207,15 +207,15 @@ namespace SabreTools.Library.DatFiles break; case "DatFile.RomMode": - Header.RomMode = (Header.RomMode == null ? value : Header.RomMode); + Header.RomMode = (Header.RomMode == MergingFlag.None ? value.AsMergingFlag() : Header.RomMode); break; case "DatFile.BiosMode": - Header.BiosMode = (Header.BiosMode == null ? value : Header.BiosMode); + Header.BiosMode = (Header.BiosMode == MergingFlag.None ? value.AsMergingFlag() : Header.BiosMode); break; case "DatFile.SampleMode": - Header.SampleMode = (Header.SampleMode == null ? value : Header.SampleMode); + Header.SampleMode = (Header.SampleMode == MergingFlag.None ? value.AsMergingFlag() : Header.SampleMode); break; case "DatFile.LockRomMode": diff --git a/SabreTools.Library/DatFiles/SoftwareList.cs b/SabreTools.Library/DatFiles/SoftwareList.cs index 8c76f0e2..cfeedf3b 100644 --- a/SabreTools.Library/DatFiles/SoftwareList.cs +++ b/SabreTools.Library/DatFiles/SoftwareList.cs @@ -64,14 +64,14 @@ namespace SabreTools.Library.DatFiles case "softwarelist": Header.Name = (Header.Name == null ? xtr.GetAttribute("name") ?? string.Empty : Header.Name); Header.Description = (Header.Description == null ? xtr.GetAttribute("description") ?? string.Empty : Header.Description); - if (Header.ForceMerging == ForceMerging.None) - Header.ForceMerging = xtr.GetAttribute("forcemerging").AsForceMerging(); + if (Header.ForceMerging == MergingFlag.None) + Header.ForceMerging = xtr.GetAttribute("forcemerging").AsMergingFlag(); - if (Header.ForceNodump == ForceNodump.None) - Header.ForceNodump = xtr.GetAttribute("forcenodump").AsForceNodump(); + if (Header.ForceNodump == NodumpFlag.None) + Header.ForceNodump = xtr.GetAttribute("forcenodump").AsNodumpFlag(); - if (Header.ForcePacking == ForcePacking.None) - Header.ForcePacking = xtr.GetAttribute("forcepacking").AsForcePacking(); + if (Header.ForcePacking == PackingFlag.None) + Header.ForcePacking = xtr.GetAttribute("forcepacking").AsPackingFlag(); xtr.Read(); break; @@ -644,39 +644,39 @@ namespace SabreTools.Library.DatFiles switch (Header.ForcePacking) { - case ForcePacking.Unzip: + case PackingFlag.Unzip: xtw.WriteAttributeString("forcepacking", "unzip"); break; - case ForcePacking.Zip: + case PackingFlag.Zip: xtw.WriteAttributeString("forcepacking", "zip"); break; } switch (Header.ForceMerging) { - case ForceMerging.Full: + case MergingFlag.Full: xtw.WriteAttributeString("forcemerging", "full"); break; - case ForceMerging.Split: + case MergingFlag.Split: xtw.WriteAttributeString("forcemerging", "split"); break; - case ForceMerging.Merged: + case MergingFlag.Merged: xtw.WriteAttributeString("forcemerging", "merged"); break; - case ForceMerging.NonMerged: + case MergingFlag.NonMerged: xtw.WriteAttributeString("forcemerging", "nonmerged"); break; } switch (Header.ForceNodump) { - case ForceNodump.Ignore: + case NodumpFlag.Ignore: xtw.WriteAttributeString("forcenodump", "ignore"); break; - case ForceNodump.Obsolete: + case NodumpFlag.Obsolete: xtw.WriteAttributeString("forcenodump", "obsolete"); break; - case ForceNodump.Required: + case NodumpFlag.Required: xtw.WriteAttributeString("forcenodump", "required"); break; } diff --git a/SabreTools.Library/Tools/Converters.cs b/SabreTools.Library/Tools/Converters.cs index 3bd6bd29..e86765ae 100644 --- a/SabreTools.Library/Tools/Converters.cs +++ b/SabreTools.Library/Tools/Converters.cs @@ -357,106 +357,6 @@ namespace SabreTools.Library.Tools } } - /// - /// Get ForceMerging value from input string - /// - /// String to get value from - /// ForceMerging value corresponding to the string - public static ForceMerging AsForceMerging(this string forcemerge) - { -#if NET_FRAMEWORK - switch (forcemerge?.ToLowerInvariant()) - { - case "split": - return ForceMerging.Split; - case "merged": - return ForceMerging.Merged; - case "nonmerged": - return ForceMerging.NonMerged; - case "full": - return ForceMerging.Full; - case "none": - default: - return ForceMerging.None; - } -#else - return forcemerge?.ToLowerInvariant() switch - { - "split" => ForceMerging.Split, - "merged" => ForceMerging.Merged, - "nonmerged" => ForceMerging.NonMerged, - "full" => ForceMerging.Full, - "none" => ForceMerging.None, - _ => ForceMerging.None, - }; -#endif - } - - /// - /// Get ForceNodump value from input string - /// - /// String to get value from - /// ForceNodump value corresponding to the string - public static ForceNodump AsForceNodump(this string forcend) - { -#if NET_FRAMEWORK - switch (forcend?.ToLowerInvariant()) - { - case "obsolete": - return ForceNodump.Obsolete; - case "required": - return ForceNodump.Required; - case "ignore": - return ForceNodump.Ignore; - case "none": - default: - return ForceNodump.None; - } -#else - return forcend?.ToLowerInvariant() switch - { - "obsolete" => ForceNodump.Obsolete, - "required" => ForceNodump.Required, - "ignore" => ForceNodump.Ignore, - "none" => ForceNodump.None, - _ => ForceNodump.None, - }; -#endif - } - - /// - /// Get ForcePacking value from input string - /// - /// String to get value from - /// ForcePacking value corresponding to the string - public static ForcePacking AsForcePacking(this string forcepack) - { -#if NET_FRAMEWORK - switch (forcepack?.ToLowerInvariant()) - { - case "yes": - case "zip": - return ForcePacking.Zip; - case "no": - case "unzip": - return ForcePacking.Unzip; - case "none": - default: - return ForcePacking.None; - } -#else - return forcepack?.ToLowerInvariant() switch - { - "yes" => ForcePacking.Zip, - "zip" => ForcePacking.Zip, - "no" => ForcePacking.Unzip, - "unzip" => ForcePacking.Unzip, - "none" => ForcePacking.None, - _ => ForcePacking.None, - }; -#endif - } - /// /// Get ItemStatus value from input string /// @@ -574,36 +474,138 @@ namespace SabreTools.Library.Tools #endif } + /// + /// Get MergingFlag value from input string + /// + /// String to get value from + /// MergingFlag value corresponding to the string + public static MergingFlag AsMergingFlag(this string merging) + { +#if NET_FRAMEWORK + switch (merging?.ToLowerInvariant()) + { + case "split": + return MergingFlag.Split; + case "merged": + return MergingFlag.Merged; + case "nonmerged": + case "unmerged": + return MergingFlag.NonMerged; + case "full": + return MergingFlag.Full; + case "none": + default: + return MergingFlag.None; + } +#else + return merging?.ToLowerInvariant() switch + { + "split" => MergingFlag.Split, + "merged" => MergingFlag.Merged, + "nonmerged" => MergingFlag.NonMerged, + "unmerged" => MergingFlag.NonMerged, + "full" => MergingFlag.Full, + "none" => MergingFlag.None, + _ => MergingFlag.None, + }; +#endif + } + + /// + /// Get NodumpFlag value from input string + /// + /// String to get value from + /// NodumpFlag value corresponding to the string + public static NodumpFlag AsNodumpFlag(this string nodump) + { +#if NET_FRAMEWORK + switch (nodump?.ToLowerInvariant()) + { + case "obsolete": + return NodumpFlag.Obsolete; + case "required": + return NodumpFlag.Required; + case "ignore": + return NodumpFlag.Ignore; + case "none": + default: + return NodumpFlag.None; + } +#else + return nodump?.ToLowerInvariant() switch + { + "obsolete" => NodumpFlag.Obsolete, + "required" => NodumpFlag.Required, + "ignore" => NodumpFlag.Ignore, + "none" => NodumpFlag.None, + _ => NodumpFlag.None, + }; +#endif + } + + /// + /// Get PackingFlag value from input string + /// + /// String to get value from + /// PackingFlag value corresponding to the string + public static PackingFlag AsPackingFlag(this string packing) + { +#if NET_FRAMEWORK + switch (packing?.ToLowerInvariant()) + { + case "yes": + case "zip": + return PackingFlag.Zip; + case "no": + case "unzip": + return PackingFlag.Unzip; + case "none": + default: + return PackingFlag.None; + } +#else + return packing?.ToLowerInvariant() switch + { + "yes" => PackingFlag.Zip, + "zip" => PackingFlag.Zip, + "no" => PackingFlag.Unzip, + "unzip" => PackingFlag.Unzip, + "none" => PackingFlag.None, + _ => PackingFlag.None, + }; +#endif + } + /// /// Get SplitType value from input ForceMerging /// /// ForceMerging to get value from /// SplitType value corresponding to the string - public static SplitType AsSplitType(this ForceMerging forceMerging) + public static SplitType AsSplitType(this MergingFlag forceMerging) { #if NET_FRAMEWORK switch (forceMerging) { - case ForceMerging.Split: + case MergingFlag.Split: return SplitType.Split; - case ForceMerging.Merged: + case MergingFlag.Merged: return SplitType.Merged; - case ForceMerging.NonMerged: + case MergingFlag.NonMerged: return SplitType.NonMerged; - case ForceMerging.Full: + case MergingFlag.Full: return SplitType.FullNonMerged; - case ForceMerging.None: + case MergingFlag.None: default: return SplitType.None; } #else return forceMerging switch { - ForceMerging.Split => SplitType.Split, - ForceMerging.Merged => SplitType.Merged, - ForceMerging.NonMerged => SplitType.NonMerged, - ForceMerging.Full => SplitType.FullNonMerged, - ForceMerging.None => SplitType.None, + MergingFlag.Split => SplitType.Split, + MergingFlag.Merged => SplitType.Merged, + MergingFlag.NonMerged => SplitType.NonMerged, + MergingFlag.Full => SplitType.FullNonMerged, + MergingFlag.None => SplitType.None, _ => SplitType.None, }; #endif diff --git a/SabreTools/Features/BaseFeature.cs b/SabreTools/Features/BaseFeature.cs index 32b4fe7f..bee4df30 100644 --- a/SabreTools/Features/BaseFeature.cs +++ b/SabreTools/Features/BaseFeature.cs @@ -2634,6 +2634,7 @@ Some special strings that can be used: /// private DatHeader GetDatHeader(Dictionary features) { + // TODO: Sort this by region, like the actual header DatHeader datHeader = new DatHeader { AddExtension = GetString(features, AddExtensionStringValue), @@ -2645,9 +2646,9 @@ Some special strings that can be used: Description = GetString(features, DescriptionStringValue), Email = GetString(features, EmailStringValue), FileName = GetString(features, FilenameStringValue), - ForceMerging = GetString(features, ForceMergingStringValue).AsForceMerging(), - ForceNodump = GetString(features, ForceNodumpStringValue).AsForceNodump(), - ForcePacking = GetString(features, ForcePackingStringValue).AsForcePacking(), + ForceMerging = GetString(features, ForceMergingStringValue).AsMergingFlag(), + ForceNodump = GetString(features, ForceNodumpStringValue).AsNodumpFlag(), + ForcePacking = GetString(features, ForcePackingStringValue).AsPackingFlag(), GameName = GetBoolean(features, GamePrefixValue), HeaderSkipper = GetString(features, HeaderStringValue), Homepage = GetString(features, HomepageStringValue),