Change ItemType into concerete property

This commit is contained in:
Matt Nadareski
2026-04-01 11:24:33 -04:00
parent 4035d9db86
commit 3e2bba866d
135 changed files with 629 additions and 781 deletions

View File

@@ -702,7 +702,7 @@ namespace SabreTools.Metadata.DatFiles
foreach (DatItem item in devItems)
{
// If the parent machine doesn't already contain this item, add it
if (!datItems.Exists(i => i.ReadString(Data.Models.Metadata.DatItem.TypeKey) == item.ReadString(Data.Models.Metadata.DatItem.TypeKey) && i.GetName() == item.GetName()))
if (!datItems.Exists(i => i.ItemType == item.ItemType && i.GetName() == item.GetName()))
{
// Set that we found new items
foundnew = true;
@@ -752,7 +752,7 @@ namespace SabreTools.Metadata.DatFiles
foreach (DatItem item in slotItems)
{
// If the parent machine doesn't already contain this item, add it
if (!datItems.Exists(i => i.ReadString(Data.Models.Metadata.DatItem.TypeKey) == item.ReadString(Data.Models.Metadata.DatItem.TypeKey) && i.GetName() == item.GetName()))
if (!datItems.Exists(i => i.ItemType == item.ItemType && i.GetName() == item.GetName()))
{
// Set that we found new items
foundnew = true;
@@ -870,7 +870,7 @@ namespace SabreTools.Metadata.DatFiles
foreach (var item in devItems.Values)
{
// If the parent machine doesn't already contain this item, add it
if (!items.Values.Any(i => i.ReadString(Data.Models.Metadata.DatItem.TypeKey) == item.ReadString(Data.Models.Metadata.DatItem.TypeKey)
if (!items.Values.Any(i => i.ItemType == item.ItemType
&& i.GetName() == item.GetName()))
{
// Set that we found new items
@@ -926,7 +926,7 @@ namespace SabreTools.Metadata.DatFiles
foreach (var item in slotItems.Values)
{
// If the parent machine doesn't already contain this item, add it
if (!items.Values.Any(i => i.ReadString(Data.Models.Metadata.DatItem.TypeKey) == item.ReadString(Data.Models.Metadata.DatItem.TypeKey)
if (!items.Values.Any(i => i.ItemType == item.ItemType
&& i.GetName() == item.GetName()))
{
// Set that we found new items

View File

@@ -55,7 +55,7 @@ namespace SabreTools.Metadata.DatFiles
/// <summary>
/// List of supported types for writing
/// </summary>
public abstract ItemType[] SupportedTypes { get; }
public abstract Data.Models.Metadata.ItemType[] SupportedTypes { get; }
#endregion
@@ -581,13 +581,13 @@ namespace SabreTools.Metadata.DatFiles
protected internal static string FormatPrefixPostfix(DatItem item, Machine? machine, string fix)
{
// Initialize strings
string? type = item.ReadString(Data.Models.Metadata.DatItem.TypeKey);
Data.Models.Metadata.ItemType type = item.ItemType;
string
game = machine?.GetName() ?? string.Empty,
manufacturer = machine?.ReadString(Data.Models.Metadata.Machine.ManufacturerKey) ?? string.Empty,
publisher = machine?.ReadString(Data.Models.Metadata.Machine.PublisherKey) ?? string.Empty,
category = machine?.ReadString(Data.Models.Metadata.Machine.CategoryKey) ?? string.Empty,
name = item.GetName() ?? type.AsItemType().AsStringValue() ?? string.Empty,
name = item.GetName() ?? type.AsStringValue() ?? string.Empty,
crc16 = string.Empty,
crc = string.Empty,
crc64 = string.Empty,
@@ -741,7 +741,7 @@ namespace SabreTools.Metadata.DatFiles
foreach (DatItem datItem in datItems)
{
ItemType itemType = datItem.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType();
Data.Models.Metadata.ItemType itemType = datItem.ItemType;
if (Array.Exists(SupportedTypes, t => t == itemType))
return true;
}
@@ -800,12 +800,12 @@ namespace SabreTools.Metadata.DatFiles
// Get the last item name, if applicable
string lastItemName = lastItem.GetName()
?? lastItem.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue()
?? lastItem.ItemType.AsStringValue()
?? string.Empty;
// Get the current item name, if applicable
string datItemName = datItem.GetName()
?? datItem.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue()
?? datItem.ItemType.AsStringValue()
?? string.Empty;
// If the current item exactly matches the last item, then we don't add it
@@ -897,12 +897,12 @@ namespace SabreTools.Metadata.DatFiles
// Get the last item name, if applicable
string lastItemName = lastItem.Value.Value.GetName()
?? lastItem.Value.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue()
?? lastItem.Value.Value.ItemType.AsStringValue()
?? string.Empty;
// Get the current item name, if applicable
string datItemName = datItem.Value.GetName()
?? datItem.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue()
?? datItem.Value.ItemType.AsStringValue()
?? string.Empty;
// Get sources for both items
@@ -1009,7 +1009,7 @@ namespace SabreTools.Metadata.DatFiles
}
// If we have an item type not in the list of supported values
ItemType itemType = datItem.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType();
Data.Models.Metadata.ItemType itemType = datItem.ItemType;
if (!Array.Exists(SupportedTypes, t => t == itemType))
{
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
@@ -1182,8 +1182,8 @@ namespace SabreTools.Metadata.DatFiles
return nc.Compare(xMachineName, yMachineName);
// If types don't match
string? xType = x.ReadString(Data.Models.Metadata.DatItem.TypeKey);
string? yType = y.ReadString(Data.Models.Metadata.DatItem.TypeKey);
string? xType = x.ItemType.AsStringValue();
string? yType = y.ItemType.AsStringValue();
if (xType != yType)
return xType.AsItemType() - yType.AsItemType();
@@ -1239,8 +1239,8 @@ namespace SabreTools.Metadata.DatFiles
return nc.Compare(xMachineName, yMachineName);
// If types don't match
string? xType = x.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey);
string? yType = y.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey);
string? xType = x.Value.ItemType.AsStringValue();
string? yType = y.Value.ItemType.AsStringValue();
if (xType != yType)
return xType.AsItemType() - yType.AsItemType();

View File

@@ -22,7 +22,7 @@ namespace SabreTools.Metadata.DatFiles
/// <summary>
/// Number of items for each item type
/// </summary>
private readonly Dictionary<ItemType, long> _itemCounts = [];
private readonly Dictionary<Data.Models.Metadata.ItemType, long> _itemCounts = [];
/// <summary>
/// Number of items for each item status
@@ -122,7 +122,7 @@ namespace SabreTools.Metadata.DatFiles
RemovedCount++;
// Increment the item count for the type
AddItemCount(item.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType());
AddItemCount(item.ItemType);
// Some item types require special processing
switch (item)
@@ -161,7 +161,7 @@ namespace SabreTools.Metadata.DatFiles
RemovedCount++;
// Increment the item count for the type
AddItemCount(item.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType());
AddItemCount(item.ItemType);
// Some item types require special processing
switch (item)
@@ -237,7 +237,7 @@ namespace SabreTools.Metadata.DatFiles
/// </summary>
/// <param name="itemType">Item type to retrieve</param>
/// <returns>The number of items of that type, if it exists</returns>
public long GetItemCount(ItemType itemType)
public long GetItemCount(Data.Models.Metadata.ItemType itemType)
{
lock (_itemCounts)
{
@@ -284,7 +284,7 @@ namespace SabreTools.Metadata.DatFiles
RemovedCount--;
// Decrement the item count for the type
RemoveItemCount(item.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType());
RemoveItemCount(item.ItemType);
// Some item types require special processing
switch (item)
@@ -329,7 +329,7 @@ namespace SabreTools.Metadata.DatFiles
RemovedCount--;
// Decrement the item count for the type
RemoveItemCount(item.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType());
RemoveItemCount(item.ItemType);
// Some item types require special processing
switch (item)
@@ -389,7 +389,7 @@ namespace SabreTools.Metadata.DatFiles
/// </summary>
/// <param name="itemType">Item type to increment</param>
/// <param name="interval">Amount to increment by, defaults to 1</param>
private void AddItemCount(ItemType itemType, long interval = 1)
private void AddItemCount(Data.Models.Metadata.ItemType itemType, long interval = 1)
{
lock (_itemCounts)
{
@@ -580,7 +580,7 @@ namespace SabreTools.Metadata.DatFiles
/// </summary>
/// <param name="itemType">Item type to decrement</param>
/// <param name="interval">Amount to increment by, defaults to 1</param>
private void RemoveItemCount(ItemType itemType, long interval = 1)
private void RemoveItemCount(Data.Models.Metadata.ItemType itemType, long interval = 1)
{
lock (_itemCounts)
{

View File

@@ -1,6 +1,4 @@
using SabreTools.Metadata.DatItems;
namespace SabreTools.Metadata.DatFiles.Formats
namespace SabreTools.Metadata.DatFiles.Formats
{
/// <summary>
/// Represents a Archive.org file list
@@ -8,9 +6,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class ArchiveDotOrg : SerializableDatFile<Data.Models.ArchiveDotOrg.Files, Serialization.Readers.ArchiveDotOrg, Serialization.Writers.ArchiveDotOrg, Serialization.CrossModel.ArchiveDotOrg>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -9,9 +9,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class AttractMode : SerializableDatFile<Data.Models.AttractMode.MetadataFile, Serialization.Readers.AttractMode, Serialization.Writers.AttractMode, Serialization.CrossModel.AttractMode>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -15,21 +15,21 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Archive,
ItemType.BiosSet,
ItemType.Chip,
ItemType.DipSwitch,
ItemType.Disk,
ItemType.Display,
ItemType.Driver,
ItemType.Input,
ItemType.Media,
ItemType.Release,
ItemType.Rom,
ItemType.Sample,
ItemType.Sound,
Data.Models.Metadata.ItemType.Archive,
Data.Models.Metadata.ItemType.BiosSet,
Data.Models.Metadata.ItemType.Chip,
Data.Models.Metadata.ItemType.DipSwitch,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Display,
Data.Models.Metadata.ItemType.Driver,
Data.Models.Metadata.ItemType.Input,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Release,
Data.Models.Metadata.ItemType.Rom,
Data.Models.Metadata.ItemType.Sample,
Data.Models.Metadata.ItemType.Sound,
];
#endregion

View File

@@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class DosCenter : SerializableDatFile<Data.Models.DosCenter.MetadataFile, Serialization.Readers.DosCenter, Serialization.Writers.DosCenter, Serialization.CrossModel.DosCenter>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class EverdriveSMDB : SerializableDatFile<Data.Models.EverdriveSMDB.MetadataFile, Serialization.Readers.EverdriveSMDB, Serialization.Writers.EverdriveSMDB, Serialization.CrossModel.EverdriveSMDB>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -10,10 +10,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Listrom : SerializableDatFile<Data.Models.Listrom.MetadataFile, Serialization.Readers.Listrom, Serialization.Writers.Listrom, Serialization.CrossModel.Listrom>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Rom,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -185,28 +185,28 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Adjuster,
ItemType.BiosSet,
ItemType.Chip,
ItemType.Condition,
ItemType.Configuration,
ItemType.Device,
ItemType.DeviceRef,
ItemType.DipSwitch,
ItemType.Disk,
ItemType.Display,
ItemType.Driver,
ItemType.Feature,
ItemType.Input,
ItemType.Port,
ItemType.RamOption,
ItemType.Rom,
ItemType.Sample,
ItemType.Slot,
ItemType.SoftwareList,
ItemType.Sound,
Data.Models.Metadata.ItemType.Adjuster,
Data.Models.Metadata.ItemType.BiosSet,
Data.Models.Metadata.ItemType.Chip,
Data.Models.Metadata.ItemType.Condition,
Data.Models.Metadata.ItemType.Configuration,
Data.Models.Metadata.ItemType.Device,
Data.Models.Metadata.ItemType.DeviceRef,
Data.Models.Metadata.ItemType.DipSwitch,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Display,
Data.Models.Metadata.ItemType.Driver,
Data.Models.Metadata.ItemType.Feature,
Data.Models.Metadata.ItemType.Input,
Data.Models.Metadata.ItemType.Port,
Data.Models.Metadata.ItemType.RamOption,
Data.Models.Metadata.ItemType.Rom,
Data.Models.Metadata.ItemType.Sample,
Data.Models.Metadata.ItemType.Slot,
Data.Models.Metadata.ItemType.SoftwareList,
Data.Models.Metadata.ItemType.Sound,
];
#endregion

View File

@@ -224,18 +224,18 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Archive,
ItemType.BiosSet,
ItemType.DeviceRef,
ItemType.Disk,
ItemType.Driver,
ItemType.Media,
ItemType.Release,
ItemType.Rom,
ItemType.Sample,
ItemType.SoftwareList,
Data.Models.Metadata.ItemType.Archive,
Data.Models.Metadata.ItemType.BiosSet,
Data.Models.Metadata.ItemType.DeviceRef,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Driver,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Release,
Data.Models.Metadata.ItemType.Rom,
Data.Models.Metadata.ItemType.Sample,
Data.Models.Metadata.ItemType.SoftwareList,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Md2File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Md4File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,11 +11,11 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Md5File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Missfile : DatFile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> Enum.GetValues(typeof(ItemType)) as ItemType[] ?? [];
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> Enum.GetValues(typeof(Data.Models.Metadata.ItemType)) as Data.Models.Metadata.ItemType[] ?? [];
/// <summary>
/// Constructor designed for casting a base DatFile

View File

@@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class OfflineList : SerializableDatFile<Data.Models.OfflineList.Dat, Serialization.Readers.OfflineList, Serialization.Writers.OfflineList, Serialization.CrossModel.OfflineList>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -47,9 +47,9 @@ The softwaredb.xml file contains information about rom mapper types
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
#endregion

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class RipeMD128File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class RipeMD160File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class RomCenter : SerializableDatFile<Data.Models.RomCenter.MetadataFile, Serialization.Readers.RomCenter, Serialization.Writers.RomCenter, Serialization.CrossModel.RomCenter>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -19,8 +19,12 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class SabreJSON : DatFile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> Enum.GetValues(typeof(ItemType)) as ItemType[] ?? [];
public override Data.Models.Metadata.ItemType[] SupportedTypes
#if NET5_0_OR_GREATER
=> Enum.GetValues<Data.Models.Metadata.ItemType>();
#else
=> Enum.GetValues(typeof(Data.Models.Metadata.ItemType)) as Data.Models.Metadata.ItemType[] ?? [];
#endif
/// <summary>
/// Constructor designed for casting a base DatFile
@@ -250,140 +254,144 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItemObj.Value<string>("type").AsItemType())
{
case ItemType.Adjuster:
case Data.Models.Metadata.ItemType.Adjuster:
datItem = datItemObj.ToObject<Adjuster>();
break;
case ItemType.Analog:
case Data.Models.Metadata.ItemType.Analog:
datItem = datItemObj.ToObject<Analog>();
break;
case ItemType.Archive:
case Data.Models.Metadata.ItemType.Archive:
datItem = datItemObj.ToObject<Archive>();
break;
case ItemType.BiosSet:
case Data.Models.Metadata.ItemType.BiosSet:
datItem = datItemObj.ToObject<BiosSet>();
break;
case ItemType.Blank:
case Data.Models.Metadata.ItemType.Blank:
datItem = datItemObj.ToObject<Blank>();
break;
case ItemType.Chip:
case Data.Models.Metadata.ItemType.Chip:
datItem = datItemObj.ToObject<Chip>();
break;
case ItemType.Condition:
case Data.Models.Metadata.ItemType.Condition:
datItem = datItemObj.ToObject<Condition>();
break;
case ItemType.Configuration:
case Data.Models.Metadata.ItemType.Configuration:
datItem = datItemObj.ToObject<Configuration>();
break;
case ItemType.ConfLocation:
case Data.Models.Metadata.ItemType.ConfLocation:
datItem = datItemObj.ToObject<ConfLocation>();
break;
case ItemType.ConfSetting:
case Data.Models.Metadata.ItemType.ConfSetting:
datItem = datItemObj.ToObject<ConfSetting>();
break;
case ItemType.Control:
case Data.Models.Metadata.ItemType.Control:
datItem = datItemObj.ToObject<Control>();
break;
case ItemType.DataArea:
case Data.Models.Metadata.ItemType.DataArea:
datItem = datItemObj.ToObject<DataArea>();
break;
case ItemType.Device:
case Data.Models.Metadata.ItemType.Device:
datItem = datItemObj.ToObject<Device>();
break;
case ItemType.DeviceRef:
case Data.Models.Metadata.ItemType.DeviceRef:
datItem = datItemObj.ToObject<DeviceRef>();
break;
case ItemType.DipLocation:
case Data.Models.Metadata.ItemType.DipLocation:
datItem = datItemObj.ToObject<DipLocation>();
break;
case ItemType.DipValue:
case Data.Models.Metadata.ItemType.DipValue:
datItem = datItemObj.ToObject<DipValue>();
break;
case ItemType.DipSwitch:
case Data.Models.Metadata.ItemType.DipSwitch:
datItem = datItemObj.ToObject<DipSwitch>();
break;
case ItemType.Disk:
case Data.Models.Metadata.ItemType.Disk:
datItem = datItemObj.ToObject<Disk>();
break;
case ItemType.DiskArea:
case Data.Models.Metadata.ItemType.DiskArea:
datItem = datItemObj.ToObject<DiskArea>();
break;
case ItemType.Display:
case Data.Models.Metadata.ItemType.Display:
datItem = datItemObj.ToObject<Display>();
break;
case ItemType.Driver:
case Data.Models.Metadata.ItemType.Driver:
datItem = datItemObj.ToObject<Driver>();
break;
case ItemType.Extension:
case Data.Models.Metadata.ItemType.Extension:
datItem = datItemObj.ToObject<Extension>();
break;
case ItemType.Feature:
case Data.Models.Metadata.ItemType.Feature:
datItem = datItemObj.ToObject<Feature>();
break;
case ItemType.File:
case Data.Models.Metadata.ItemType.File:
datItem = datItemObj.ToObject<DatItems.Formats.File>();
break;
case ItemType.Info:
case Data.Models.Metadata.ItemType.Info:
datItem = datItemObj.ToObject<Info>();
break;
case ItemType.Input:
case Data.Models.Metadata.ItemType.Input:
datItem = datItemObj.ToObject<Input>();
break;
case ItemType.Instance:
case Data.Models.Metadata.ItemType.Instance:
datItem = datItemObj.ToObject<Instance>();
break;
case ItemType.Media:
case Data.Models.Metadata.ItemType.Media:
datItem = datItemObj.ToObject<Media>();
break;
case ItemType.Original:
case Data.Models.Metadata.ItemType.Original:
// Cannot be converted to a DatItem
break;
case ItemType.Part:
case Data.Models.Metadata.ItemType.Part:
datItem = datItemObj.ToObject<Part>();
break;
case ItemType.PartFeature:
case Data.Models.Metadata.ItemType.PartFeature:
datItem = datItemObj.ToObject<PartFeature>();
break;
case ItemType.Port:
case Data.Models.Metadata.ItemType.Port:
datItem = datItemObj.ToObject<Port>();
break;
case ItemType.RamOption:
case Data.Models.Metadata.ItemType.RamOption:
datItem = datItemObj.ToObject<RamOption>();
break;
case ItemType.Release:
case Data.Models.Metadata.ItemType.Release:
datItem = datItemObj.ToObject<Release>();
break;
case ItemType.ReleaseDetails:
case Data.Models.Metadata.ItemType.ReleaseDetails:
datItem = datItemObj.ToObject<ReleaseDetails>();
break;
case ItemType.Rom:
case Data.Models.Metadata.ItemType.Rom:
datItem = datItemObj.ToObject<Rom>();
break;
case ItemType.Sample:
case Data.Models.Metadata.ItemType.Sample:
datItem = datItemObj.ToObject<Sample>();
break;
case ItemType.Serials:
case Data.Models.Metadata.ItemType.Serials:
datItem = datItemObj.ToObject<Serials>();
break;
case ItemType.SharedFeat:
case Data.Models.Metadata.ItemType.SharedFeat:
datItem = datItemObj.ToObject<SharedFeat>();
break;
case ItemType.Slot:
case Data.Models.Metadata.ItemType.Slot:
datItem = datItemObj.ToObject<Slot>();
break;
case ItemType.SlotOption:
case Data.Models.Metadata.ItemType.SlotOption:
datItem = datItemObj.ToObject<SlotOption>();
break;
case ItemType.SoftwareList:
case Data.Models.Metadata.ItemType.SoftwareList:
datItem = datItemObj.ToObject<DatItems.Formats.SoftwareList>();
break;
case ItemType.Sound:
case Data.Models.Metadata.ItemType.Sound:
datItem = datItemObj.ToObject<Sound>();
break;
case ItemType.SourceDetails:
case Data.Models.Metadata.ItemType.SourceDetails:
datItem = datItemObj.ToObject<SourceDetails>();
break;
case ItemType.NULL:
// TODO: Implement these?
case Data.Models.Metadata.ItemType.Dump:
case Data.Models.Metadata.ItemType.Software:
case Data.Models.Metadata.ItemType.Video:
case Data.Models.Metadata.ItemType.NULL:
default:
// This should never happen
break;

View File

@@ -18,11 +18,11 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class SabreXML : DatFile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
#if NET5_0_OR_GREATER
=> Enum.GetValues<ItemType>();
=> Enum.GetValues<Data.Models.Metadata.ItemType>();
#else
=> Enum.GetValues(typeof(ItemType)) as ItemType[] ?? [];
=> Enum.GetValues(typeof(Data.Models.Metadata.ItemType)) as Data.Models.Metadata.ItemType[] ?? [];
#endif
/// <summary>

View File

@@ -15,11 +15,11 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class SfvFile : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,11 +11,11 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Sha1File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,10 +11,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Sha256File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Sha384File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Sha512File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -78,14 +78,14 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.DipSwitch,
ItemType.Disk,
ItemType.Info,
ItemType.PartFeature,
ItemType.Rom,
ItemType.SharedFeat,
Data.Models.Metadata.ItemType.DipSwitch,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Info,
Data.Models.Metadata.ItemType.PartFeature,
Data.Models.Metadata.ItemType.Rom,
Data.Models.Metadata.ItemType.SharedFeat,
];
#endregion

View File

@@ -11,10 +11,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class SpamSumFile : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -661,9 +661,9 @@ namespace SabreTools.Metadata.DatFiles
private ItemKey GetBestAvailable()
{
// Get the required counts
long diskCount = DatStatistics.GetItemCount(ItemType.Disk);
long mediaCount = DatStatistics.GetItemCount(ItemType.Media);
long romCount = DatStatistics.GetItemCount(ItemType.Rom);
long diskCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Disk);
long mediaCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Media);
long romCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Rom);
long nodumpCount = DatStatistics.GetStatusCount(ItemStatus.Nodump);
// If all items are supposed to have a SHA-512, we bucket by that
@@ -863,10 +863,10 @@ namespace SabreTools.Metadata.DatFiles
return nc.Compare(xMachineName, yMachineName);
// If types don't match
string? xType = x.ReadString(Data.Models.Metadata.DatItem.TypeKey);
string? yType = y.ReadString(Data.Models.Metadata.DatItem.TypeKey);
Data.Models.Metadata.ItemType xType = x.ItemType;
Data.Models.Metadata.ItemType yType = y.ItemType;
if (xType != yType)
return xType.AsItemType() - yType.AsItemType();
return xType - yType;
// If directory names don't match
string? xDirectoryName = Path.GetDirectoryName(TextHelper.RemovePathUnsafeCharacters(x.GetName() ?? string.Empty));

View File

@@ -976,9 +976,9 @@ namespace SabreTools.Metadata.DatFiles
private ItemKey GetBestAvailable()
{
// Get the required counts
long diskCount = DatStatistics.GetItemCount(ItemType.Disk);
long mediaCount = DatStatistics.GetItemCount(ItemType.Media);
long romCount = DatStatistics.GetItemCount(ItemType.Rom);
long diskCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Disk);
long mediaCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Media);
long romCount = DatStatistics.GetItemCount(Data.Models.Metadata.ItemType.Rom);
long nodumpCount = DatStatistics.GetStatusCount(ItemStatus.Nodump);
// If all items are supposed to have a SHA-512, we bucket by that
@@ -1197,10 +1197,10 @@ namespace SabreTools.Metadata.DatFiles
return nc.Compare(xMachineName, yMachineName);
// If types don't match
string? xType = x.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey);
string? yType = y.Value.ReadString(Data.Models.Metadata.DatItem.TypeKey);
Data.Models.Metadata.ItemType xType = x.Value.ItemType;
Data.Models.Metadata.ItemType yType = y.Value.ItemType;
if (xType != yType)
return xType.AsItemType() - yType.AsItemType();
return xType - yType;
// If directory names don't match
string? xDirectoryName = Path.GetDirectoryName(TextHelper.RemovePathUnsafeCharacters(x.Value.GetName()));