Move to MergingFlag

This commit is contained in:
Matt Nadareski
2020-08-20 20:38:29 -07:00
parent 7555523799
commit 419ea5ce31
12 changed files with 342 additions and 279 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -106,21 +106,21 @@ namespace SabreTools.Library.DatFiles
/// </summary>
/// TODO: Make nullable
[JsonProperty("forcemerging")]
public ForceMerging ForceMerging { get; set; }
public MergingFlag ForceMerging { get; set; }
/// <summary>
/// Force nodump handling when loaded
/// </summary>
/// TODO: Make nullable
[JsonProperty("forcenodump")]
public ForceNodump ForceNodump { get; set; }
public NodumpFlag ForceNodump { get; set; }
/// <summary>
/// Force output packing when loaded
/// </summary>
/// TODO: Make nullable
[JsonProperty("forcepacking")]
public ForcePacking ForcePacking { get; set; }
public PackingFlag ForcePacking { get; set; }
/// <summary>
/// Read or write format
@@ -206,38 +206,41 @@ namespace SabreTools.Library.DatFiles
/// <summary>
/// RomCenter rom mode
/// </summary>
/// <remarks>(merged|split|unmerged) "split"</remarks>
[JsonProperty("rommode")]
public string RomMode { get; set; } // (merged|split|unmerged) "split"
public MergingFlag RomMode { get; set; }
/// <summary>
/// RomCenter bios mode
/// </summary>
/// <remarks>(merged|split|unmerged) "split"</remarks>
[JsonProperty("biosmode")]
public string BiosMode { get; set; } // (merged|split|unmerged) "split"
public MergingFlag BiosMode { get; set; }
/// <summary>
/// RomCenter sample mode
/// </summary>
/// <remarks>(merged|unmerged) "merged"</remarks>
[JsonProperty("samplemode")]
public string SampleMode { get; set; } // (merged|unmerged) "merged"
public MergingFlag SampleMode { get; set; }
/// <summary>
/// RomCenter lock rom mode
/// </summary>
[JsonProperty("lockrommode")]
public bool? LockRomMode { get; set; } // (yes|no) "no"
public bool? LockRomMode { get; set; }
/// <summary>
/// RomCenter lock bios mode
/// </summary>
[JsonProperty("lockbiosmode")]
public bool? LockBiosMode { get; set; } // (yes|no) "no"
public bool? LockBiosMode { get; set; }
/// <summary>
/// RomCenter lock sample mode
/// </summary>
[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)

View File

@@ -196,39 +196,6 @@ namespace SabreTools.Library.DatFiles
SHA512,
}
/// <summary>
/// Determines forcemerging tag for DAT output
/// </summary>
public enum ForceMerging
{
None = 0,
Split,
Merged,
NonMerged,
Full,
}
/// <summary>
/// Determines forcenodump tag for DAT output
/// </summary>
public enum ForceNodump
{
None = 0,
Obsolete,
Required,
Ignore,
}
/// <summary>
/// Determines forcepacking tag for DAT output
/// </summary>
public enum ForcePacking
{
None = 0,
Zip,
Unzip,
}
/// <summary>
/// Available hashing types
/// </summary>
@@ -256,6 +223,39 @@ namespace SabreTools.Library.DatFiles
#endif
}
/// <summary>
/// Determines merging tag handling for DAT output
/// </summary>
public enum MergingFlag
{
None = 0,
Split,
Merged,
NonMerged,
Full,
}
/// <summary>
/// Determines nodump tag handling for DAT output
/// </summary>
public enum NodumpFlag
{
None = 0,
Obsolete,
Required,
Ignore,
}
/// <summary>
/// Determines packing tag handling for DAT output
/// </summary>
public enum PackingFlag
{
None = 0,
Zip,
Unzip,
}
/// <summary>
/// Determines which files should be skipped in DFD
/// </summary>

View File

@@ -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)

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -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");

View File

@@ -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":

View File

@@ -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;
}

View File

@@ -357,106 +357,6 @@ namespace SabreTools.Library.Tools
}
}
/// <summary>
/// Get ForceMerging value from input string
/// </summary>
/// <param name="forcemerge">String to get value from</param>
/// <returns>ForceMerging value corresponding to the string</returns>
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
}
/// <summary>
/// Get ForceNodump value from input string
/// </summary>
/// <param name="forcend">String to get value from</param>
/// <returns>ForceNodump value corresponding to the string</returns>
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
}
/// <summary>
/// Get ForcePacking value from input string
/// </summary>
/// <param name="forcepack">String to get value from</param>
/// <returns>ForcePacking value corresponding to the string</returns>
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
}
/// <summary>
/// Get ItemStatus value from input string
/// </summary>
@@ -574,36 +474,138 @@ namespace SabreTools.Library.Tools
#endif
}
/// <summary>
/// Get MergingFlag value from input string
/// </summary>
/// <param name="merging">String to get value from</param>
/// <returns>MergingFlag value corresponding to the string</returns>
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
}
/// <summary>
/// Get NodumpFlag value from input string
/// </summary>
/// <param name="nodump">String to get value from</param>
/// <returns>NodumpFlag value corresponding to the string</returns>
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
}
/// <summary>
/// Get PackingFlag value from input string
/// </summary>
/// <param name="packing">String to get value from</param>
/// <returns>PackingFlag value corresponding to the string</returns>
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
}
/// <summary>
/// Get SplitType value from input ForceMerging
/// </summary>
/// <param name="forceMerging">ForceMerging to get value from</param>
/// <returns>SplitType value corresponding to the string</returns>
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

View File

@@ -2634,6 +2634,7 @@ Some special strings that can be used:
/// </summary>
private DatHeader GetDatHeader(Dictionary<string, Feature> 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),