diff --git a/SabreTools.Library/DatFiles/ClrMamePro.cs b/SabreTools.Library/DatFiles/ClrMamePro.cs
index aef95efe..29e7d98a 100644
--- a/SabreTools.Library/DatFiles/ClrMamePro.cs
+++ b/SabreTools.Library/DatFiles/ClrMamePro.cs
@@ -113,29 +113,7 @@ namespace SabreTools.Library.DatFiles
}
// Create the proper DatItem based on the type
- DatItem item;
- switch (temptype)
- {
- case ItemType.Archive:
- item = new Archive();
- break;
- case ItemType.BiosSet:
- item = new BiosSet();
- break;
- case ItemType.Disk:
- item = new Disk();
- break;
- case ItemType.Release:
- item = new Release();
- break;
- case ItemType.Sample:
- item = new Sample();
- break;
- case ItemType.Rom:
- default:
- item = new Rom();
- break;
- }
+ DatItem item = Utilities.GetDatItem(temptype);
// Then populate it with information
item.MachineName = tempgamename;
diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs
index ce7017c1..18bb7ac7 100644
--- a/SabreTools.Library/DatFiles/SeparatedValue.cs
+++ b/SabreTools.Library/DatFiles/SeparatedValue.cs
@@ -204,27 +204,7 @@ namespace SabreTools.Library.DatFiles
machineDesc = value;
break;
case "DatItem.Type":
- switch (value.ToLowerInvariant())
- {
- case "archive":
- itemType = ItemType.Archive;
- break;
- case "biosset":
- itemType = ItemType.BiosSet;
- break;
- case "disk":
- itemType = ItemType.Disk;
- break;
- case "release":
- itemType = ItemType.Release;
- break;
- case "rom":
- itemType = ItemType.Rom;
- break;
- case "sample":
- itemType = ItemType.Sample;
- break;
- }
+ itemType = Utilities.GetItemType(value) ?? ItemType.Rom;
break;
case "Rom.Name":
case "Disk.Name":
@@ -255,26 +235,7 @@ namespace SabreTools.Library.DatFiles
sha512 = value;
break;
case "DatItem.Nodump":
- switch (value.ToLowerInvariant())
- {
- case "baddump":
- status = ItemStatus.BadDump;
- break;
- case "good":
- status = ItemStatus.Good;
- break;
- case "no":
- case "none":
- status = ItemStatus.None;
- break;
- case "nodump":
- case "yes":
- status = ItemStatus.Nodump;
- break;
- case "verified":
- status = ItemStatus.Verified;
- break;
- }
+ status = Utilities.GetItemStatus(value);
break;
}
}
diff --git a/SabreTools.Library/Tools/Utilities.cs b/SabreTools.Library/Tools/Utilities.cs
index a2c328ca..e2181ee1 100644
--- a/SabreTools.Library/Tools/Utilities.cs
+++ b/SabreTools.Library/Tools/Utilities.cs
@@ -372,6 +372,7 @@ namespace SabreTools.Library.Tools
switch (status?.ToLowerInvariant())
{
case "none":
+ case "no":
default:
return ItemStatus.None;
case "good":
@@ -379,12 +380,39 @@ namespace SabreTools.Library.Tools
case "baddump":
return ItemStatus.BadDump;
case "nodump":
+ case "yes":
return ItemStatus.Nodump;
case "verified":
return ItemStatus.Verified;
}
}
+ ///
+ /// Get ItemType? value from input string
+ ///
+ /// String to get value from
+ /// ItemType? value corresponding to the string
+ public static ItemType? GetItemType(string itemType)
+ {
+ switch (itemType?.ToLowerInvariant())
+ {
+ case "archive":
+ return ItemType.Archive;
+ case "biosset":
+ return ItemType.BiosSet;
+ case "disk":
+ return ItemType.Disk;
+ case "release":
+ return ItemType.Release;
+ case "rom":
+ return ItemType.Rom;
+ case "sample":
+ return ItemType.Sample;
+ default:
+ return null;
+ }
+ }
+
///
/// Get MachineType value from input string
///
@@ -754,6 +782,31 @@ namespace SabreTools.Library.Tools
return null;
}
+ ///
+ /// Create a specific type of DatItem to be used based on an ItemType
+ ///
+ /// Type of the DatItem to be created
+ /// DatItem of the specific internal type that corresponds to the inputs
+ public static DatItem GetDatItem(ItemType itemType)
+ {
+ switch (itemType)
+ {
+ case ItemType.Archive:
+ return new Archive();
+ case ItemType.BiosSet:
+ return new BiosSet();
+ case ItemType.Disk:
+ return new Disk();
+ case ItemType.Release:
+ return new Release();
+ case ItemType.Sample:
+ return new Sample();
+ case ItemType.Rom:
+ default:
+ return new Rom();
+ }
+ }
+
#endregion
#region File Information