mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Finish and use more enum conversions
This commit is contained in:
@@ -565,31 +565,11 @@ namespace SabreTools.Library.DatFiles
|
||||
if (!string.IsNullOrWhiteSpace(Header.Comment))
|
||||
cmpw.WriteStandalone("comment", Header.Comment);
|
||||
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case PackingFlag.Unzip:
|
||||
cmpw.WriteStandalone("forcezipping", "no", false);
|
||||
break;
|
||||
case PackingFlag.Zip:
|
||||
cmpw.WriteStandalone("forcezipping", "yes", false);
|
||||
break;
|
||||
}
|
||||
if (Header.ForcePacking != PackingFlag.None)
|
||||
cmpw.WriteStandalone("forcezipping", Header.ForcePacking.FromPackingFlag(true), false);
|
||||
|
||||
switch (Header.ForceMerging)
|
||||
{
|
||||
case MergingFlag.Full:
|
||||
cmpw.WriteStandalone("forcemerging", "full", false);
|
||||
break;
|
||||
case MergingFlag.Split:
|
||||
cmpw.WriteStandalone("forcemerging", "split", false);
|
||||
break;
|
||||
case MergingFlag.Merged:
|
||||
cmpw.WriteStandalone("forcemerging", "merged", false);
|
||||
break;
|
||||
case MergingFlag.NonMerged:
|
||||
cmpw.WriteStandalone("forcemerging", "nonmerged", false);
|
||||
break;
|
||||
}
|
||||
if (Header.ForceMerging != MergingFlag.None)
|
||||
cmpw.WriteStandalone("forcemerging", Header.ForceMerging.FromMergingFlag(false), false);
|
||||
|
||||
// End clrmamepro
|
||||
cmpw.WriteEndElement();
|
||||
|
||||
@@ -1011,8 +1011,8 @@ namespace SabreTools.Library.DatFiles
|
||||
MachineDescriptionToName();
|
||||
|
||||
// If we are using tags from the DAT, set the proper input for split type unless overridden
|
||||
if (useTags && filter.InternalSplit == SplitType.None)
|
||||
filter.InternalSplit = Header.ForceMerging.AsSplitType();
|
||||
if (useTags && filter.InternalSplit == MergingFlag.None)
|
||||
filter.InternalSplit = Header.ForceMerging;
|
||||
|
||||
// Run internal splitting
|
||||
ProcessSplitType(filter.InternalSplit);
|
||||
@@ -1344,30 +1344,30 @@ namespace SabreTools.Library.DatFiles
|
||||
#region Internal Splitting/Merging
|
||||
|
||||
/// <summary>
|
||||
/// Process items according to SplitType
|
||||
/// Process items according to split type
|
||||
/// </summary>
|
||||
/// <param name="splitType">SplitType to implement</param>
|
||||
public void ProcessSplitType(SplitType splitType)
|
||||
/// <param name="splitType">MergingFlag to implement</param>
|
||||
public void ProcessSplitType(MergingFlag splitType)
|
||||
{
|
||||
// Now we pre-process the DAT with the splitting/merging mode
|
||||
switch (splitType)
|
||||
{
|
||||
case SplitType.None:
|
||||
case MergingFlag.None:
|
||||
// No-op
|
||||
break;
|
||||
case SplitType.DeviceNonMerged:
|
||||
case MergingFlag.Device:
|
||||
CreateDeviceNonMergedSets(DedupeType.None);
|
||||
break;
|
||||
case SplitType.FullNonMerged:
|
||||
case MergingFlag.Full:
|
||||
CreateFullyNonMergedSets(DedupeType.None);
|
||||
break;
|
||||
case SplitType.NonMerged:
|
||||
case MergingFlag.NonMerged:
|
||||
CreateNonMergedSets(DedupeType.None);
|
||||
break;
|
||||
case SplitType.Merged:
|
||||
case MergingFlag.Merged:
|
||||
CreateMergedSets(DedupeType.None);
|
||||
break;
|
||||
case SplitType.Split:
|
||||
case MergingFlag.Split:
|
||||
CreateSplitSets(DedupeType.None);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -213,6 +213,7 @@ namespace SabreTools.Library.DatFiles
|
||||
Merged,
|
||||
NonMerged,
|
||||
Full,
|
||||
Device, // This is not usually defined for Merging flags
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -246,19 +247,6 @@ namespace SabreTools.Library.DatFiles
|
||||
File,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines how a DAT will be split internally
|
||||
/// </summary>
|
||||
public enum SplitType
|
||||
{
|
||||
None = 0,
|
||||
NonMerged,
|
||||
Merged,
|
||||
FullNonMerged,
|
||||
Split,
|
||||
DeviceNonMerged
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines what sort of files get externally hashed
|
||||
/// </summary>
|
||||
|
||||
@@ -1034,18 +1034,7 @@ namespace SabreTools.Library.DatFiles
|
||||
if (datItem.Machine.MachineType.HasFlag(MachineType.Mechanical))
|
||||
xtw.WriteAttributeString("ismechanical", "yes");
|
||||
|
||||
switch (datItem.Machine.Runnable)
|
||||
{
|
||||
case Runnable.No:
|
||||
xtw.WriteAttributeString("runnable", "no");
|
||||
break;
|
||||
case Runnable.Partial:
|
||||
xtw.WriteAttributeString("runnable", "partial");
|
||||
break;
|
||||
case Runnable.Yes:
|
||||
xtw.WriteAttributeString("runnable", "yes");
|
||||
break;
|
||||
}
|
||||
xtw.WriteOptionalAttributeString("runnable", datItem.Machine.Runnable.FromRunnable());
|
||||
|
||||
if (!string.Equals(datItem.Machine.Name, datItem.Machine.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteOptionalAttributeString("cloneof", datItem.Machine.CloneOf);
|
||||
@@ -1150,7 +1139,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteOptionalAttributeString("region", disk.Region);
|
||||
xtw.WriteOptionalAttributeString("index", disk.Index);
|
||||
xtw.WriteOptionalAttributeString("writable", disk.Writable.FromYesNo());
|
||||
if (disk.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", disk.ItemStatus.ToString());
|
||||
xtw.WriteOptionalAttributeString("status", disk.ItemStatus.FromItemStatus(false));
|
||||
xtw.WriteOptionalAttributeString("optional", disk.Optional.FromYesNo());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
@@ -1173,7 +1162,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteOptionalAttributeString("merge", rom.MergeTag);
|
||||
xtw.WriteOptionalAttributeString("region", rom.Region);
|
||||
xtw.WriteOptionalAttributeString("offset", rom.Offset);
|
||||
if (rom.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("status", rom.ItemStatus.FromItemStatus(false));
|
||||
xtw.WriteOptionalAttributeString("optional", rom.Optional.FromYesNo());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
@@ -785,45 +785,10 @@ namespace SabreTools.Library.DatFiles
|
||||
|| !string.IsNullOrWhiteSpace(Header.HeaderSkipper))
|
||||
{
|
||||
xtw.WriteStartElement("clrmamepro");
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case PackingFlag.Unzip:
|
||||
xtw.WriteAttributeString("forcepacking", "unzip");
|
||||
break;
|
||||
case PackingFlag.Zip:
|
||||
xtw.WriteAttributeString("forcepacking", "zip");
|
||||
break;
|
||||
}
|
||||
|
||||
switch (Header.ForceMerging)
|
||||
{
|
||||
case MergingFlag.Full:
|
||||
xtw.WriteAttributeString("forcemerging", "full");
|
||||
break;
|
||||
case MergingFlag.Split:
|
||||
xtw.WriteAttributeString("forcemerging", "split");
|
||||
break;
|
||||
case MergingFlag.Merged:
|
||||
xtw.WriteAttributeString("forcemerging", "merged");
|
||||
break;
|
||||
case MergingFlag.NonMerged:
|
||||
xtw.WriteAttributeString("forcemerging", "nonmerged");
|
||||
break;
|
||||
}
|
||||
|
||||
switch (Header.ForceNodump)
|
||||
{
|
||||
case NodumpFlag.Ignore:
|
||||
xtw.WriteAttributeString("forcenodump", "ignore");
|
||||
break;
|
||||
case NodumpFlag.Obsolete:
|
||||
xtw.WriteAttributeString("forcenodump", "obsolete");
|
||||
break;
|
||||
case NodumpFlag.Required:
|
||||
xtw.WriteAttributeString("forcenodump", "required");
|
||||
break;
|
||||
}
|
||||
|
||||
xtw.WriteOptionalAttributeString("forcepacking", Header.ForcePacking.FromPackingFlag(false));
|
||||
xtw.WriteOptionalAttributeString("forcemerging", Header.ForceMerging.FromMergingFlag(false));
|
||||
xtw.WriteOptionalAttributeString("forcenodump", Header.ForceNodump.FromNodumpFlag());
|
||||
xtw.WriteOptionalAttributeString("header", Header.HeaderSkipper);
|
||||
|
||||
// End clrmamepro
|
||||
@@ -838,43 +803,9 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartElement("romcenter");
|
||||
|
||||
xtw.WriteOptionalAttributeString("plugin", Header.System);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
switch (Header.SampleMode)
|
||||
{
|
||||
case MergingFlag.Merged:
|
||||
xtw.WriteAttributeString("samplemode", "merged");
|
||||
break;
|
||||
case MergingFlag.NonMerged:
|
||||
xtw.WriteAttributeString("samplemode", "unmerged");
|
||||
break;
|
||||
}
|
||||
|
||||
xtw.WriteOptionalAttributeString("rommode", Header.RomMode.FromMergingFlag(true));
|
||||
xtw.WriteOptionalAttributeString("biosmode", Header.BiosMode.FromMergingFlag(true));
|
||||
xtw.WriteOptionalAttributeString("samplemode", Header.SampleMode.FromMergingFlag(true));
|
||||
xtw.WriteOptionalAttributeString("lockrommode", Header.LockRomMode.FromYesNo());
|
||||
xtw.WriteOptionalAttributeString("lockbiosmode", Header.LockBiosMode.FromYesNo());
|
||||
xtw.WriteOptionalAttributeString("locksamplemode", Header.LockSampleMode.FromYesNo());
|
||||
@@ -921,21 +852,7 @@ namespace SabreTools.Library.DatFiles
|
||||
if (datItem.Machine.MachineType.HasFlag(MachineType.Mechanical))
|
||||
xtw.WriteAttributeString("ismechanical", "yes");
|
||||
|
||||
if (datItem.Machine.Runnable != Runnable.NULL)
|
||||
{
|
||||
switch (datItem.Machine.Runnable)
|
||||
{
|
||||
case Runnable.No:
|
||||
xtw.WriteAttributeString("runnable", "no");
|
||||
break;
|
||||
case Runnable.Partial:
|
||||
xtw.WriteAttributeString("runnable", "partial");
|
||||
break;
|
||||
case Runnable.Yes:
|
||||
xtw.WriteAttributeString("runnable", "yes");
|
||||
break;
|
||||
}
|
||||
}
|
||||
xtw.WriteOptionalAttributeString("runnable", datItem.Machine.Runnable.FromRunnable());
|
||||
|
||||
if (!string.Equals(datItem.Machine.Name, datItem.Machine.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteOptionalAttributeString("cloneof", datItem.Machine.CloneOf);
|
||||
@@ -1065,7 +982,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512?.ToLowerInvariant());
|
||||
if (disk.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("status", disk.ItemStatus.FromItemStatus(false));
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
@@ -1095,7 +1012,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteOptionalAttributeString("sha384", rom.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("date", rom.Date);
|
||||
if (rom.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("status", rom.ItemStatus.FromItemStatus(false));
|
||||
xtw.WriteOptionalAttributeString("inverted", rom.Inverted.FromYesNo());
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
|
||||
@@ -739,7 +739,7 @@ namespace SabreTools.Library.DatFiles
|
||||
// Default to Rom for converting from other formats
|
||||
case OpenMSXSubType.Rom:
|
||||
case OpenMSXSubType.NULL:
|
||||
xtw.WriteStartElement("rom");
|
||||
xtw.WriteStartElement(datItem.OpenMSXSubType.FromOpenMSXSubType());
|
||||
xtw.WriteRequiredElementString("hash", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalElementString("start", rom.Offset);
|
||||
xtw.WriteOptionalElementString("type", rom.OpenMSXType);
|
||||
@@ -748,7 +748,7 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
|
||||
case OpenMSXSubType.MegaRom:
|
||||
xtw.WriteStartElement("megarom");
|
||||
xtw.WriteStartElement(datItem.OpenMSXSubType.FromOpenMSXSubType());
|
||||
xtw.WriteRequiredElementString("hash", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalElementString("start", rom.Offset);
|
||||
xtw.WriteOptionalElementString("type", rom.OpenMSXType);
|
||||
@@ -757,7 +757,7 @@ namespace SabreTools.Library.DatFiles
|
||||
break;
|
||||
|
||||
case OpenMSXSubType.SCCPlusCart:
|
||||
xtw.WriteStartElement("sccpluscart");
|
||||
xtw.WriteStartElement(datItem.OpenMSXSubType.FromOpenMSXSubType());
|
||||
xtw.WriteOptionalElementString("boot", rom.Boot);
|
||||
xtw.WriteRequiredElementString("hash", rom.SHA1?.ToLowerInvariant());
|
||||
xtw.WriteOptionalElementString("remark", rom.Remark);
|
||||
|
||||
@@ -686,70 +686,28 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
|
||||
switch (Header.ForcePacking)
|
||||
if (Header.ForcePacking != PackingFlag.None)
|
||||
{
|
||||
case PackingFlag.Unzip:
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcepacking");
|
||||
xtw.WriteAttributeString("value", "unzip");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
case PackingFlag.Zip:
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcepacking");
|
||||
xtw.WriteAttributeString("value", "zip");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcepacking");
|
||||
xtw.WriteOptionalAttributeString("value", Header.ForcePacking.FromPackingFlag(false));
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
|
||||
switch (Header.ForceMerging)
|
||||
if (Header.ForceMerging != MergingFlag.None)
|
||||
{
|
||||
case MergingFlag.Full:
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcemerging");
|
||||
xtw.WriteAttributeString("value", "full");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
case MergingFlag.Split:
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcemerging");
|
||||
xtw.WriteAttributeString("value", "split");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
case MergingFlag.Merged:
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcemerging");
|
||||
xtw.WriteAttributeString("value", "merged");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
case MergingFlag.NonMerged:
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcemerging");
|
||||
xtw.WriteAttributeString("value", "nonmerged");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcemerging");
|
||||
xtw.WriteAttributeString("value", Header.ForceMerging.FromMergingFlag(false));
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
|
||||
switch (Header.ForceNodump)
|
||||
if (Header.ForceNodump != NodumpFlag.None)
|
||||
{
|
||||
case NodumpFlag.Ignore:
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcenodump");
|
||||
xtw.WriteAttributeString("value", "ignore");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
case NodumpFlag.Obsolete:
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcenodump");
|
||||
xtw.WriteAttributeString("value", "obsolete");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
case NodumpFlag.Required:
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcenodump");
|
||||
xtw.WriteAttributeString("value", "required");
|
||||
xtw.WriteEndElement();
|
||||
break;
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "forcenodump");
|
||||
xtw.WriteAttributeString("value", Header.ForceNodump.FromNodumpFlag());
|
||||
xtw.WriteEndElement();
|
||||
}
|
||||
|
||||
// End flags
|
||||
@@ -916,7 +874,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "status");
|
||||
xtw.WriteAttributeString("value", disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteAttributeString("value", disk.ItemStatus.FromItemStatus(false));
|
||||
xtw.WriteEndElement();
|
||||
|
||||
// End flags
|
||||
@@ -959,7 +917,7 @@ namespace SabreTools.Library.DatFiles
|
||||
|
||||
xtw.WriteStartElement("flag");
|
||||
xtw.WriteAttributeString("name", "status");
|
||||
xtw.WriteAttributeString("value", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteAttributeString("value", rom.ItemStatus.FromItemStatus(false));
|
||||
xtw.WriteEndElement();
|
||||
|
||||
// End flags
|
||||
|
||||
@@ -736,45 +736,9 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteStartElement("softwarelist");
|
||||
xtw.WriteRequiredAttributeString("name", Header.Name);
|
||||
xtw.WriteRequiredAttributeString("description", Header.Description);
|
||||
|
||||
switch (Header.ForcePacking)
|
||||
{
|
||||
case PackingFlag.Unzip:
|
||||
xtw.WriteAttributeString("forcepacking", "unzip");
|
||||
break;
|
||||
case PackingFlag.Zip:
|
||||
xtw.WriteAttributeString("forcepacking", "zip");
|
||||
break;
|
||||
}
|
||||
|
||||
switch (Header.ForceMerging)
|
||||
{
|
||||
case MergingFlag.Full:
|
||||
xtw.WriteAttributeString("forcemerging", "full");
|
||||
break;
|
||||
case MergingFlag.Split:
|
||||
xtw.WriteAttributeString("forcemerging", "split");
|
||||
break;
|
||||
case MergingFlag.Merged:
|
||||
xtw.WriteAttributeString("forcemerging", "merged");
|
||||
break;
|
||||
case MergingFlag.NonMerged:
|
||||
xtw.WriteAttributeString("forcemerging", "nonmerged");
|
||||
break;
|
||||
}
|
||||
|
||||
switch (Header.ForceNodump)
|
||||
{
|
||||
case NodumpFlag.Ignore:
|
||||
xtw.WriteAttributeString("forcenodump", "ignore");
|
||||
break;
|
||||
case NodumpFlag.Obsolete:
|
||||
xtw.WriteAttributeString("forcenodump", "obsolete");
|
||||
break;
|
||||
case NodumpFlag.Required:
|
||||
xtw.WriteAttributeString("forcenodump", "required");
|
||||
break;
|
||||
}
|
||||
xtw.WriteOptionalAttributeString("forcepacking", Header.ForcePacking.FromPackingFlag(false));
|
||||
xtw.WriteOptionalAttributeString("forcemerging", Header.ForceMerging.FromMergingFlag(false));
|
||||
xtw.WriteOptionalAttributeString("forcenodump", Header.ForceNodump.FromNodumpFlag());
|
||||
|
||||
xtw.Flush();
|
||||
}
|
||||
@@ -807,18 +771,7 @@ namespace SabreTools.Library.DatFiles
|
||||
if (!string.Equals(datItem.Machine.Name, datItem.Machine.CloneOf, StringComparison.OrdinalIgnoreCase))
|
||||
xtw.WriteOptionalAttributeString("cloneof", datItem.Machine.CloneOf);
|
||||
|
||||
switch (datItem.Machine.Supported)
|
||||
{
|
||||
case Supported.No:
|
||||
xtw.WriteAttributeString("supported", "no");
|
||||
break;
|
||||
case Supported.Partial:
|
||||
xtw.WriteAttributeString("supported", "partial");
|
||||
break;
|
||||
case Supported.Yes:
|
||||
xtw.WriteAttributeString("supported", "yes");
|
||||
break;
|
||||
}
|
||||
xtw.WriteOptionalAttributeString("supported", datItem.Machine.Supported.FromSupported());
|
||||
|
||||
xtw.WriteOptionalElementString("description", datItem.Machine.Description);
|
||||
xtw.WriteOptionalElementString("year", datItem.Machine.Year);
|
||||
@@ -960,7 +913,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteOptionalAttributeString("sha256", disk.SHA256?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha384", disk.SHA384?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("sha512", disk.SHA512?.ToLowerInvariant());
|
||||
if (disk.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", disk.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("status", disk.ItemStatus.FromItemStatus(false));
|
||||
xtw.WriteOptionalAttributeString("writable", disk.Writable.FromYesNo());
|
||||
xtw.WriteEndElement();
|
||||
|
||||
@@ -993,7 +946,7 @@ namespace SabreTools.Library.DatFiles
|
||||
xtw.WriteOptionalAttributeString("sha512", rom.SHA512?.ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("offset", rom.Offset);
|
||||
xtw.WriteOptionalAttributeString("value", rom.Value);
|
||||
if (rom.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
|
||||
xtw.WriteOptionalAttributeString("status", rom.ItemStatus.FromItemStatus(false));
|
||||
xtw.WriteOptionalAttributeString("loadflag", rom.LoadFlag);
|
||||
xtw.WriteEndElement();
|
||||
|
||||
|
||||
@@ -473,7 +473,7 @@ namespace SabreTools.Library.Filtering
|
||||
/// <summary>
|
||||
/// Internally split a DatFile
|
||||
/// </summary>
|
||||
public SplitType InternalSplit { get; set; }
|
||||
public MergingFlag InternalSplit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Remove all unicode characters
|
||||
|
||||
@@ -6,6 +6,41 @@ namespace SabreTools.Library.Tools
|
||||
{
|
||||
public static class Converters
|
||||
{
|
||||
#region Enum to Enum
|
||||
|
||||
/// <summary>
|
||||
/// Get the field associated with each hash type
|
||||
/// </summary>
|
||||
public static Field AsField(this Hash hash)
|
||||
{
|
||||
switch (hash)
|
||||
{
|
||||
case Hash.CRC:
|
||||
return Field.CRC;
|
||||
case Hash.MD5:
|
||||
return Field.MD5;
|
||||
#if NET_FRAMEWORK
|
||||
case Hash.RIPEMD160:
|
||||
return Field.RIPEMD160;
|
||||
#endif
|
||||
case Hash.SHA1:
|
||||
return Field.SHA1;
|
||||
case Hash.SHA256:
|
||||
return Field.SHA256;
|
||||
case Hash.SHA384:
|
||||
return Field.SHA384;
|
||||
case Hash.SHA512:
|
||||
return Field.SHA512;
|
||||
|
||||
default:
|
||||
return Field.NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region String to Enum
|
||||
|
||||
/// <summary>
|
||||
/// Get DatFormat value from input string
|
||||
/// </summary>
|
||||
@@ -85,35 +120,6 @@ namespace SabreTools.Library.Tools
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the field associated with each hash type
|
||||
/// </summary>
|
||||
public static Field AsField(this Hash hash)
|
||||
{
|
||||
switch (hash)
|
||||
{
|
||||
case Hash.CRC:
|
||||
return Field.CRC;
|
||||
case Hash.MD5:
|
||||
return Field.MD5;
|
||||
#if NET_FRAMEWORK
|
||||
case Hash.RIPEMD160:
|
||||
return Field.RIPEMD160;
|
||||
#endif
|
||||
case Hash.SHA1:
|
||||
return Field.SHA1;
|
||||
case Hash.SHA256:
|
||||
return Field.SHA256;
|
||||
case Hash.SHA384:
|
||||
return Field.SHA384;
|
||||
case Hash.SHA512:
|
||||
return Field.SHA512;
|
||||
|
||||
default:
|
||||
return Field.NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get Field value from input string
|
||||
/// </summary>
|
||||
@@ -632,6 +638,8 @@ namespace SabreTools.Library.Tools
|
||||
return MergingFlag.NonMerged;
|
||||
case "full":
|
||||
return MergingFlag.Full;
|
||||
case "device":
|
||||
return MergingFlag.Device;
|
||||
case "none":
|
||||
default:
|
||||
return MergingFlag.None;
|
||||
@@ -775,41 +783,6 @@ namespace SabreTools.Library.Tools
|
||||
#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 MergingFlag forceMerging)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (forceMerging)
|
||||
{
|
||||
case MergingFlag.Split:
|
||||
return SplitType.Split;
|
||||
case MergingFlag.Merged:
|
||||
return SplitType.Merged;
|
||||
case MergingFlag.NonMerged:
|
||||
return SplitType.NonMerged;
|
||||
case MergingFlag.Full:
|
||||
return SplitType.FullNonMerged;
|
||||
case MergingFlag.None:
|
||||
default:
|
||||
return SplitType.None;
|
||||
}
|
||||
#else
|
||||
return forceMerging switch
|
||||
{
|
||||
MergingFlag.Split => SplitType.Split,
|
||||
MergingFlag.Merged => SplitType.Merged,
|
||||
MergingFlag.NonMerged => SplitType.NonMerged,
|
||||
MergingFlag.Full => SplitType.FullNonMerged,
|
||||
MergingFlag.None => SplitType.None,
|
||||
_ => SplitType.None,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get StatReportFormat value from input string
|
||||
/// </summary>
|
||||
@@ -910,13 +883,349 @@ namespace SabreTools.Library.Tools
|
||||
#endif
|
||||
}
|
||||
|
||||
// TODO: Write From variants for all above
|
||||
#endregion
|
||||
|
||||
#region Enum to String
|
||||
|
||||
// TODO: DatFormat -> string
|
||||
// TODO: Field -> string
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input ItemStatus
|
||||
/// </summary>
|
||||
/// <param name="status">ItemStatus to get value from</param>
|
||||
/// <param name="yesno">True to use Yes/No format instead</param>
|
||||
/// <returns>String value corresponding to the ItemStatus</returns>
|
||||
public static string FromItemStatus(this ItemStatus status, bool yesno)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (status)
|
||||
{
|
||||
case ItemStatus.Good:
|
||||
return "good";
|
||||
case ItemStatus.BadDump:
|
||||
return "baddump";
|
||||
case ItemStatus.Nodump:
|
||||
return yesno ? "yes" : "nodump";
|
||||
case ItemStatus.Verified:
|
||||
return "verified";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return status switch
|
||||
{
|
||||
ItemStatus.Good => "good",
|
||||
ItemStatus.BadDump => "baddump",
|
||||
ItemStatus.Nodump => yesno ? "yes" : "nodump",
|
||||
ItemStatus.Verified => "verified",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input ItemType?
|
||||
/// </summary>
|
||||
/// <param name="itemType">ItemType? to get value from</param>
|
||||
/// <returns>String value corresponding to the ItemType?</returns>
|
||||
public static string FromItemType(this ItemType? itemType)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (itemType)
|
||||
{
|
||||
case ItemType.Archive:
|
||||
return "archive";
|
||||
case ItemType.BiosSet:
|
||||
return "biosset";
|
||||
case ItemType.Blank:
|
||||
return "blank";
|
||||
case ItemType.Disk:
|
||||
return "disk";
|
||||
case ItemType.Release:
|
||||
return "release";
|
||||
case ItemType.Rom:
|
||||
return "rom";
|
||||
case ItemType.Sample:
|
||||
return "sample";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return itemType switch
|
||||
{
|
||||
ItemType.Archive => "archive",
|
||||
ItemType.BiosSet => "biosset",
|
||||
ItemType.Blank => "blank",
|
||||
ItemType.Disk => "disk",
|
||||
ItemType.Release => "release",
|
||||
ItemType.Rom => "rom",
|
||||
ItemType.Sample => "sample",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input MachineType
|
||||
/// </summary>
|
||||
/// <param name="gametype">MachineType to get value from</param>
|
||||
/// <param name="romCenter">True to use old naming instead</param>
|
||||
/// <returns>String value corresponding to the MachineType</returns>
|
||||
public static string FromMachineType(this MachineType gametype, bool old)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (gametype)
|
||||
{
|
||||
case MachineType.Bios:
|
||||
return "bios";
|
||||
case MachineType.Device:
|
||||
return old ? "dev" : "device";
|
||||
case MachineType.Mechanical:
|
||||
return old ? "mech" : "mechanical";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return gametype switch
|
||||
{
|
||||
MachineType.Bios => "bios",
|
||||
MachineType.Device => old ? "dev" : "device",
|
||||
MachineType.Mechanical => old ? "mech" : "mechanical",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input MergingFlag
|
||||
/// </summary>
|
||||
/// <param name="merging">MergingFlag to get value from</param>
|
||||
/// <param name="romCenter">True to use RomCenter naming instead</param>
|
||||
/// <returns>String value corresponding to the MergingFlag</returns>
|
||||
public static string FromMergingFlag(this MergingFlag merging, bool romCenter)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (merging)
|
||||
{
|
||||
case MergingFlag.Split:
|
||||
return "split";
|
||||
case MergingFlag.Merged:
|
||||
return "merged";
|
||||
case MergingFlag.NonMerged:
|
||||
return romCenter ? "unmerged" : "nonmerged";
|
||||
case MergingFlag.Full:
|
||||
return "full";
|
||||
case MergingFlag.Device:
|
||||
return "device";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return merging switch
|
||||
{
|
||||
MergingFlag.Split => "split",
|
||||
MergingFlag.Merged => "merged",
|
||||
MergingFlag.NonMerged => romCenter ? "unmerged" : "nonmerged",
|
||||
MergingFlag.Full => "full",
|
||||
MergingFlag.Device => "device",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input NodumpFlag
|
||||
/// </summary>
|
||||
/// <param name="nodump">NodumpFlag to get value from</param>
|
||||
/// <returns>String value corresponding to the NodumpFlag</returns>
|
||||
public static string FromNodumpFlag(this NodumpFlag nodump)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (nodump)
|
||||
{
|
||||
case NodumpFlag.Obsolete:
|
||||
return "obsolete";
|
||||
case NodumpFlag.Required:
|
||||
return "required";
|
||||
case NodumpFlag.Ignore:
|
||||
return "ignore";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return nodump switch
|
||||
{
|
||||
NodumpFlag.Obsolete => "obsolete",
|
||||
NodumpFlag.Required => "required",
|
||||
NodumpFlag.Ignore => "ignore",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input OpenMSXSubType
|
||||
/// </summary>
|
||||
/// <param name="itemType">OpenMSXSubType to get value from</param>
|
||||
/// <returns>String value corresponding to the OpenMSXSubType</returns>
|
||||
public static string FromOpenMSXSubType(this OpenMSXSubType itemType)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (itemType)
|
||||
{
|
||||
case OpenMSXSubType.Rom:
|
||||
return "rom";
|
||||
case OpenMSXSubType.MegaRom:
|
||||
return "megarom";
|
||||
case OpenMSXSubType.SCCPlusCart:
|
||||
return "sccpluscart";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return itemType switch
|
||||
{
|
||||
OpenMSXSubType.Rom => "rom",
|
||||
OpenMSXSubType.MegaRom => "megarom",
|
||||
OpenMSXSubType.SCCPlusCart => "sccpluscart",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input PackingFlag
|
||||
/// </summary>
|
||||
/// <param name="packing">PackingFlag to get value from</param>
|
||||
/// <param name="yesno">True to use Yes/No format instead</param>
|
||||
/// <returns>String value corresponding to the PackingFlag</returns>
|
||||
public static string FromPackingFlag(this PackingFlag packing, bool yesno)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (packing)
|
||||
{
|
||||
case PackingFlag.Zip:
|
||||
return yesno ? "yes" : "zip";
|
||||
case PackingFlag.Unzip:
|
||||
return yesno ? "no" : "unzip";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return packing switch
|
||||
{
|
||||
PackingFlag.Zip => yesno ? "yes" : "zip",
|
||||
PackingFlag.Unzip => yesno ? "yes" : "zip",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input Runnable
|
||||
/// </summary>
|
||||
/// <param name="runnable">Runnable to get value from</param>
|
||||
/// <returns>String value corresponding to the Runnable</returns>
|
||||
public static string FromRunnable(this Runnable runnable)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (runnable)
|
||||
{
|
||||
case Runnable.No:
|
||||
return "no";
|
||||
case Runnable.Partial:
|
||||
return "partial";
|
||||
case Runnable.Yes:
|
||||
return "yes";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return runnable switch
|
||||
{
|
||||
Runnable.No => "no",
|
||||
Runnable.Partial => "partial",
|
||||
Runnable.Yes => "yes",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input StatReportFormat
|
||||
/// </summary>
|
||||
/// <param name="input">StatReportFormat to get value from</param>
|
||||
/// <returns>String value corresponding to the StatReportFormat</returns>
|
||||
public static string FromStatReportFormat(this StatReportFormat input)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (input)
|
||||
{
|
||||
case StatReportFormat.All:
|
||||
return "all";
|
||||
case StatReportFormat.CSV:
|
||||
return "csv";
|
||||
case StatReportFormat.HTML:
|
||||
return "html";
|
||||
case StatReportFormat.SSV:
|
||||
return "ssv";
|
||||
case StatReportFormat.Textfile:
|
||||
return "text";
|
||||
case StatReportFormat.TSV:
|
||||
return "tsv";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return input switch
|
||||
{
|
||||
StatReportFormat.All => "all",
|
||||
StatReportFormat.CSV => "csv",
|
||||
StatReportFormat.HTML => "html",
|
||||
StatReportFormat.SSV => "ssv",
|
||||
StatReportFormat.Textfile => "text",
|
||||
StatReportFormat.TSV => "tsv",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input Supported
|
||||
/// </summary>
|
||||
/// <param name="supported">Supported to get value from</param>
|
||||
/// <returns>String value corresponding to the Supported</returns>
|
||||
public static string FromSupported(this Supported supported)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
switch (supported)
|
||||
{
|
||||
case Supported.No:
|
||||
return "no";
|
||||
case Supported.Partial:
|
||||
return "partial";
|
||||
case Supported.Yes:
|
||||
return "yes";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
#else
|
||||
return supported switch
|
||||
{
|
||||
Supported.No => "no",
|
||||
Supported.Partial => "partial",
|
||||
Supported.Yes => "yes",
|
||||
_ => null,
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get string value from input bool?
|
||||
/// </summary>
|
||||
/// <param name="yesno">bool? to get value from</param>
|
||||
/// <returns>string corresponding to the bool?</returns>
|
||||
/// <returns>String corresponding to the bool?</returns>
|
||||
public static string FromYesNo(this bool? yesno)
|
||||
{
|
||||
#if NET_FRAMEWORK
|
||||
@@ -938,5 +1247,7 @@ namespace SabreTools.Library.Tools
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2990,19 +2990,19 @@ Some special strings that can be used:
|
||||
/// <summary>
|
||||
/// Get SplitType from feature list
|
||||
/// </summary>
|
||||
private SplitType GetSplitType(Dictionary<string, Feature> features)
|
||||
private MergingFlag GetSplitType(Dictionary<string, Feature> features)
|
||||
{
|
||||
SplitType splitType = SplitType.None;
|
||||
MergingFlag splitType = MergingFlag.None;
|
||||
if (GetBoolean(features, DatDeviceNonMergedValue))
|
||||
splitType = SplitType.DeviceNonMerged;
|
||||
splitType = MergingFlag.Device;
|
||||
else if (GetBoolean(features, DatFullNonMergedValue))
|
||||
splitType = SplitType.FullNonMerged;
|
||||
splitType = MergingFlag.Full;
|
||||
else if (GetBoolean(features, DatMergedValue))
|
||||
splitType = SplitType.Merged;
|
||||
splitType = MergingFlag.Merged;
|
||||
else if (GetBoolean(features, DatNonMergedValue))
|
||||
splitType = SplitType.NonMerged;
|
||||
splitType = MergingFlag.NonMerged;
|
||||
else if (GetBoolean(features, DatSplitValue))
|
||||
splitType = SplitType.Split;
|
||||
splitType = MergingFlag.Split;
|
||||
|
||||
return splitType;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user