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

@@ -85,7 +85,7 @@ namespace SabreTools.Metadata.DatItems
/// <summary>
/// Item type for the object
/// </summary>
protected abstract ItemType ItemType { get; }
internal abstract Data.Models.Metadata.ItemType ItemType { get; }
#endregion
@@ -223,8 +223,8 @@ namespace SabreTools.Metadata.DatItems
return false;
// Get the types for comparison
ItemType selfType = ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType();
ItemType otherType = other.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType();
Data.Models.Metadata.ItemType selfType = ItemType;
Data.Models.Metadata.ItemType otherType = other.ItemType;
// If we don't have a matched type, return false
if (selfType != otherType)

View File

@@ -18,7 +18,6 @@ namespace SabreTools.Metadata.DatItems
_internal = new T();
SetName(string.Empty);
Write(Data.Models.Metadata.DatItem.TypeKey, ItemType);
Write(MachineKey, new Machine());
}
@@ -29,7 +28,6 @@ namespace SabreTools.Metadata.DatItems
{
_internal = item;
Write(Data.Models.Metadata.DatItem.TypeKey, ItemType);
Write(MachineKey, new Machine());
}
@@ -78,8 +76,8 @@ namespace SabreTools.Metadata.DatItems
return false;
// Get the types for comparison
ItemType selfType = ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType();
ItemType otherType = other.ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType();
Data.Models.Metadata.ItemType selfType = ItemType;
Data.Models.Metadata.ItemType otherType = other.ItemType;
// If we don't have a matched type, return false
if (selfType != otherType)

View File

@@ -41,153 +41,6 @@ namespace SabreTools.Metadata.DatItems
SpamSum,
}
/// <summary>
/// Determine what type of file an item is
/// </summary>
public enum ItemType
{
/// <summary>
/// This is a fake flag that is used for filter only
/// </summary>
NULL = 0,
// "Actionable" item types
/// <summary>"rom"</summary>
Rom,
/// <summary>"disk"</summary>
Disk,
/// <summary>"file"</summary>
File,
/// <summary>"media"</summary>
Media,
// "Auxiliary" item types
/// <summary>"adjuster"</summary>
Adjuster,
/// <summary>"analog"</summary>
Analog,
/// <summary>"archive"</summary>
Archive,
/// <summary>"biosset"</summary>
BiosSet,
/// <summary>"chip"</summary>
Chip,
/// <summary>"condition"</summary>
Condition,
/// <summary>"configuration"</summary>
Configuration,
/// <summary>"conflocation"</summary>
ConfLocation,
/// <summary>"confsetting"</summary>
ConfSetting,
/// <summary>"control"</summary>
Control,
/// <summary>"dataarea"</summary>
DataArea,
/// <summary>"device"</summary>
Device,
/// <summary>"device_ref", "deviceref"</summary>
DeviceRef,
/// <summary>"diplocation"</summary>
DipLocation,
/// <summary>"dipswitch"</summary>
DipSwitch,
/// <summary>"dipvalue"</summary>
DipValue,
/// <summary>"diskarea"</summary>
DiskArea,
/// <summary>"display"</summary>
Display,
/// <summary>"driver"</summary>
Driver,
/// <summary>"extension"</summary>
Extension,
/// <summary>"feature"</summary>
Feature,
/// <summary>"info"</summary>
Info,
/// <summary>"input"</summary>
Input,
/// <summary>"instance"</summary>
Instance,
/// <summary>"original"</summary>
Original,
/// <summary>"part"</summary>
Part,
/// <summary>"part_feature", "partfeature"</summary>
PartFeature,
/// <summary>"port"</summary>
Port,
/// <summary>"ramoption", "ram_option"</summary>
RamOption,
/// <summary>"release"</summary>
Release,
/// <summary>"release_details", "releasedetails"</summary>
ReleaseDetails,
/// <summary>"sample"</summary>
Sample,
/// <summary>"serials"</summary>
Serials,
/// <summary>"sharedfeat", "shared_feat", "sharedfeature", "shared_feature"</summary>
SharedFeat,
/// <summary>"slot"</summary>
Slot,
/// <summary>"slotoption", "slot_option"</summary>
SlotOption,
/// <summary>"softwarelist", "software_list"</summary>
SoftwareList,
/// <summary>"sound"</summary>
Sound,
/// <summary>"source_details", "sourcedetails"</summary>
SourceDetails,
/// <summary>"blank"</summary>
Blank = 99, // This is not a real type, only used internally
}
/// <summary>
/// Determine what type of machine it is
/// </summary>

View File

@@ -9,58 +9,61 @@ namespace SabreTools.Metadata.DatItems
/// </summary>
/// <param name="value">String value to parse/param>
/// <returns>Enum value representing the input, default on error</returns>
public static ItemType AsItemType(this string? value)
public static Data.Models.Metadata.ItemType AsItemType(this string? value)
{
return value?.ToLowerInvariant() switch
{
// "Actionable" item types
"rom" => ItemType.Rom,
"disk" => ItemType.Disk,
"file" => ItemType.File,
"media" => ItemType.Media,
"rom" => Data.Models.Metadata.ItemType.Rom,
"disk" => Data.Models.Metadata.ItemType.Disk,
"file" => Data.Models.Metadata.ItemType.File,
"media" => Data.Models.Metadata.ItemType.Media,
// "Auxiliary" item types
"adjuster" => ItemType.Adjuster,
"analog" => ItemType.Analog,
"archive" => ItemType.Archive,
"biosset" => ItemType.BiosSet,
"chip" => ItemType.Chip,
"condition" => ItemType.Condition,
"configuration" => ItemType.Configuration,
"conflocation" => ItemType.ConfLocation,
"confsetting" => ItemType.ConfSetting,
"control" => ItemType.Control,
"dataarea" => ItemType.DataArea,
"device" => ItemType.Device,
"device_ref" or "deviceref" => ItemType.DeviceRef,
"diplocation" => ItemType.DipLocation,
"dipswitch" => ItemType.DipSwitch,
"dipvalue" => ItemType.DipValue,
"diskarea" => ItemType.DiskArea,
"display" => ItemType.Display,
"driver" => ItemType.Driver,
"extension" => ItemType.Extension,
"feature" => ItemType.Feature,
"info" => ItemType.Info,
"input" => ItemType.Input,
"instance" => ItemType.Instance,
"original" => ItemType.Original,
"part" => ItemType.Part,
"part_feature" or "partfeature" => ItemType.PartFeature,
"port" => ItemType.Port,
"ramoption" or "ram_option" => ItemType.RamOption,
"release" => ItemType.Release,
"release_details" or "releasedetails" => ItemType.ReleaseDetails,
"sample" => ItemType.Sample,
"serials" => ItemType.Serials,
"sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => ItemType.SharedFeat,
"slot" => ItemType.Slot,
"slotoption" or "slot_option" => ItemType.SlotOption,
"softwarelist" or "software_list" => ItemType.SoftwareList,
"sound" => ItemType.Sound,
"source_details" or "sourcedetails" => ItemType.SourceDetails,
"blank" => ItemType.Blank,
_ => ItemType.NULL,
"adjuster" => Data.Models.Metadata.ItemType.Adjuster,
"analog" => Data.Models.Metadata.ItemType.Analog,
"archive" => Data.Models.Metadata.ItemType.Archive,
"biosset" => Data.Models.Metadata.ItemType.BiosSet,
"chip" => Data.Models.Metadata.ItemType.Chip,
"condition" => Data.Models.Metadata.ItemType.Condition,
"configuration" => Data.Models.Metadata.ItemType.Configuration,
"conflocation" => Data.Models.Metadata.ItemType.ConfLocation,
"confsetting" => Data.Models.Metadata.ItemType.ConfSetting,
"control" => Data.Models.Metadata.ItemType.Control,
"dataarea" => Data.Models.Metadata.ItemType.DataArea,
"device" => Data.Models.Metadata.ItemType.Device,
"device_ref" or "deviceref" => Data.Models.Metadata.ItemType.DeviceRef,
"diplocation" => Data.Models.Metadata.ItemType.DipLocation,
"dipswitch" => Data.Models.Metadata.ItemType.DipSwitch,
"dipvalue" => Data.Models.Metadata.ItemType.DipValue,
"diskarea" => Data.Models.Metadata.ItemType.DiskArea,
"display" => Data.Models.Metadata.ItemType.Display,
"driver" => Data.Models.Metadata.ItemType.Driver,
"dump" => Data.Models.Metadata.ItemType.Dump,
"extension" => Data.Models.Metadata.ItemType.Extension,
"feature" => Data.Models.Metadata.ItemType.Feature,
"info" => Data.Models.Metadata.ItemType.Info,
"input" => Data.Models.Metadata.ItemType.Input,
"instance" => Data.Models.Metadata.ItemType.Instance,
"original" => Data.Models.Metadata.ItemType.Original,
"part" => Data.Models.Metadata.ItemType.Part,
"part_feature" or "partfeature" => Data.Models.Metadata.ItemType.PartFeature,
"port" => Data.Models.Metadata.ItemType.Port,
"ramoption" or "ram_option" => Data.Models.Metadata.ItemType.RamOption,
"release" => Data.Models.Metadata.ItemType.Release,
"release_details" or "releasedetails" => Data.Models.Metadata.ItemType.ReleaseDetails,
"sample" => Data.Models.Metadata.ItemType.Sample,
"serials" => Data.Models.Metadata.ItemType.Serials,
"sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => Data.Models.Metadata.ItemType.SharedFeat,
"slot" => Data.Models.Metadata.ItemType.Slot,
"slotoption" or "slot_option" => Data.Models.Metadata.ItemType.SlotOption,
"software" => Data.Models.Metadata.ItemType.Software,
"softwarelist" or "software_list" => Data.Models.Metadata.ItemType.SoftwareList,
"sound" => Data.Models.Metadata.ItemType.Sound,
"source_details" or "sourcedetails" => Data.Models.Metadata.ItemType.SourceDetails,
"video" => Data.Models.Metadata.ItemType.Video,
"blank" => Data.Models.Metadata.ItemType.Blank,
_ => Data.Models.Metadata.ItemType.NULL,
};
}
@@ -90,60 +93,62 @@ namespace SabreTools.Metadata.DatItems
/// </summary>
/// <param name="value">Enum value to parse/param>
/// <returns>String value representing the input, default on error</returns>
public static string? AsStringValue(this ItemType value)
public static string? AsStringValue(this Data.Models.Metadata.ItemType value)
{
return value switch
{
// "Actionable" item types
ItemType.Rom => "rom",
ItemType.Disk => "disk",
ItemType.File => "file",
ItemType.Media => "media",
Data.Models.Metadata.ItemType.Rom => "rom",
Data.Models.Metadata.ItemType.Disk => "disk",
Data.Models.Metadata.ItemType.File => "file",
Data.Models.Metadata.ItemType.Media => "media",
// "Auxiliary" item types
Data.Models.Metadata.ItemType.Adjuster => "adjuster",
Data.Models.Metadata.ItemType.Analog => "analog",
Data.Models.Metadata.ItemType.Archive => "archive",
Data.Models.Metadata.ItemType.BiosSet => "biosset",
Data.Models.Metadata.ItemType.Chip => "chip",
Data.Models.Metadata.ItemType.Condition => "condition",
Data.Models.Metadata.ItemType.Configuration => "configuration",
Data.Models.Metadata.ItemType.ConfLocation => "conflocation",
Data.Models.Metadata.ItemType.ConfSetting => "confsetting",
Data.Models.Metadata.ItemType.Control => "control",
Data.Models.Metadata.ItemType.DataArea => "dataarea",
Data.Models.Metadata.ItemType.Device => "device",
Data.Models.Metadata.ItemType.DeviceRef => "device_ref",
Data.Models.Metadata.ItemType.DipLocation => "diplocation",
Data.Models.Metadata.ItemType.DipSwitch => "dipswitch",
Data.Models.Metadata.ItemType.DipValue => "dipvalue",
Data.Models.Metadata.ItemType.DiskArea => "diskarea",
Data.Models.Metadata.ItemType.Display => "display",
Data.Models.Metadata.ItemType.Driver => "driver",
Data.Models.Metadata.ItemType.Dump => "dump",
Data.Models.Metadata.ItemType.Extension => "extension",
Data.Models.Metadata.ItemType.Feature => "feature",
Data.Models.Metadata.ItemType.Info => "info",
Data.Models.Metadata.ItemType.Input => "input",
Data.Models.Metadata.ItemType.Instance => "instance",
Data.Models.Metadata.ItemType.Original => "original",
Data.Models.Metadata.ItemType.Part => "part",
Data.Models.Metadata.ItemType.PartFeature => "part_feature",
Data.Models.Metadata.ItemType.Port => "port",
Data.Models.Metadata.ItemType.RamOption => "ramoption",
Data.Models.Metadata.ItemType.Release => "release",
Data.Models.Metadata.ItemType.ReleaseDetails => "release_details",
Data.Models.Metadata.ItemType.Sample => "sample",
Data.Models.Metadata.ItemType.Serials => "serials",
Data.Models.Metadata.ItemType.SharedFeat => "sharedfeat",
Data.Models.Metadata.ItemType.Slot => "slot",
Data.Models.Metadata.ItemType.SlotOption => "slotoption",
Data.Models.Metadata.ItemType.Software => "software",
Data.Models.Metadata.ItemType.SoftwareList => "softwarelist",
Data.Models.Metadata.ItemType.Sound => "sound",
Data.Models.Metadata.ItemType.SourceDetails => "source_details",
Data.Models.Metadata.ItemType.Video => "video",
Data.Models.Metadata.ItemType.Blank => "blank",
ItemType.Adjuster => "adjuster",
ItemType.Analog => "analog",
ItemType.Archive => "archive",
ItemType.BiosSet => "biosset",
ItemType.Chip => "chip",
ItemType.Condition => "condition",
ItemType.Configuration => "configuration",
ItemType.ConfLocation => "conflocation",
ItemType.ConfSetting => "confsetting",
ItemType.Control => "control",
ItemType.DataArea => "dataarea",
ItemType.Device => "device",
ItemType.DeviceRef => "device_ref",
ItemType.DipLocation => "diplocation",
ItemType.DipSwitch => "dipswitch",
ItemType.DipValue => "dipvalue",
ItemType.DiskArea => "diskarea",
ItemType.Display => "display",
ItemType.Driver => "driver",
ItemType.Extension => "extension",
ItemType.Feature => "feature",
ItemType.Info => "info",
ItemType.Input => "input",
ItemType.Instance => "instance",
ItemType.Original => "original",
ItemType.Part => "part",
ItemType.PartFeature => "part_feature",
ItemType.Port => "port",
ItemType.RamOption => "ramoption",
ItemType.Release => "release",
ItemType.ReleaseDetails => "release_details",
ItemType.Sample => "sample",
ItemType.Serials => "serials",
ItemType.SharedFeat => "sharedfeat",
ItemType.Slot => "slot",
ItemType.SlotOption => "slotoption",
ItemType.SoftwareList => "softwarelist",
ItemType.Sound => "sound",
ItemType.SourceDetails => "source_details",
ItemType.Blank => "blank",
ItemType.NULL => null,
Data.Models.Metadata.ItemType.NULL => null,
_ => null,
};
}

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Adjuster;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Adjuster;
[JsonIgnore]
public bool ConditionsSpecified

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Analog;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Analog;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Archive;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Archive;
// TODO: None of the following are used or checked

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.BiosSet;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.BiosSet;
#endregion

View File

@@ -12,7 +12,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Blank;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Blank;
#endregion
@@ -21,10 +21,7 @@ namespace SabreTools.Metadata.DatItems.Formats
/// <summary>
/// Create a default, empty Blank object
/// </summary>
public Blank()
{
Write(Data.Models.Metadata.DatItem.TypeKey, ItemType);
}
public Blank() { }
#endregion
@@ -37,7 +34,6 @@ namespace SabreTools.Metadata.DatItems.Formats
blank.Write(MachineKey, GetMachine());
blank.Write(RemoveKey, ReadBool(RemoveKey));
blank.Write<Source?>(SourceKey, Read<Source?>(SourceKey));
blank.Write<string?>(Data.Models.Metadata.DatItem.TypeKey, ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue());
return blank;
}
@@ -80,7 +76,7 @@ namespace SabreTools.Metadata.DatItems.Formats
public override bool Equals(DatItem? other)
{
// If we don't have a blank, return false
if (ReadString(Data.Models.Metadata.DatItem.TypeKey) != other?.ReadString(Data.Models.Metadata.DatItem.TypeKey))
if (ItemType != other?.ItemType)
return false;
// Otherwise, treat it as a Blank

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Chip;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Chip;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Condition;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Condition;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.ConfLocation;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ConfLocation;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.ConfSetting;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ConfSetting;
[JsonIgnore]
public bool ConditionsSpecified

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Configuration;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Configuration;
[JsonIgnore]
public bool ConditionsSpecified

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Control;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Control;
#endregion

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.DataArea;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DataArea;
#endregion

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Device;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Device;
[JsonIgnore]
public bool InstancesSpecified

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.DeviceRef;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DeviceRef;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.DipLocation;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DipLocation;
#endregion

View File

@@ -23,7 +23,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.DipSwitch;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DipSwitch;
[JsonIgnore]
public bool ConditionsSpecified

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.DipValue;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DipValue;
[JsonIgnore]
public bool ConditionsSpecified

View File

@@ -29,7 +29,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Disk;
internal override ItemType ItemType => ItemType.Disk;
[JsonIgnore]
public bool DiskAreaSpecified

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.DiskArea;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.DiskArea;
#endregion

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Display;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Display;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Driver;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Driver;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Extension;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Extension;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Feature;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Feature;
#endregion

View File

@@ -27,7 +27,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.File;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.File;
/// <summary>
/// ID value
@@ -100,10 +100,7 @@ namespace SabreTools.Metadata.DatItems.Formats
/// <summary>
/// Create a default, empty File object
/// </summary>
public File()
{
Write(Data.Models.Metadata.DatItem.TypeKey, ItemType);
}
public File() { }
#endregion
@@ -164,7 +161,7 @@ namespace SabreTools.Metadata.DatItems.Formats
bool dupefound = false;
// If we don't have a file, return false
if (ReadString(Data.Models.Metadata.DatItem.TypeKey) != other?.ReadString(Data.Models.Metadata.DatItem.TypeKey))
if (ItemType != other?.ItemType)
return dupefound;
// Otherwise, treat it as a File

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Info;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Info;
#endregion

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Input;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Input;
[JsonIgnore]
public bool ControlsSpecified

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Instance;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Instance;
#endregion

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Media;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Media;
#endregion

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Part;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Part;
[JsonIgnore]
public bool FeaturesSpecified

View File

@@ -22,7 +22,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.PartFeature;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature;
#endregion

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Port;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Port;
[JsonIgnore]
public bool AnalogsSpecified

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.RamOption;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.RamOption;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Release;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Release;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.ReleaseDetails;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.ReleaseDetails;
#endregion

View File

@@ -29,7 +29,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Rom;
internal override ItemType ItemType => ItemType.Rom;
[JsonIgnore]
public bool ItemStatusSpecified
@@ -118,7 +118,7 @@ namespace SabreTools.Metadata.DatItems.Formats
SetName(name);
Write<string?>(Data.Models.Metadata.Rom.OffsetKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey));
Write<string?>(Data.Models.Metadata.Rom.OpenMSXMediaType, subType?.AsStringValue());
Write<string?>(Data.Models.Metadata.Rom.OpenMSXType, rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType) ?? rom.ReadString(Data.Models.Metadata.DatItem.TypeKey));
Write<string?>(Data.Models.Metadata.Rom.OpenMSXType, rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType) ?? rom.ItemType.ToString());
Write<string?>(Data.Models.Metadata.Rom.RemarkKey, rom.ReadString(Data.Models.Metadata.Rom.RemarkKey));
Write<string?>(Data.Models.Metadata.Rom.SHA1Key, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key));
Write<string?>(Data.Models.Metadata.Rom.StartKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey));

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Sample;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Sample;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Serials;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Serials;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.SharedFeat;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SharedFeat;
#endregion

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Slot;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Slot;
[JsonIgnore]
public bool SlotOptionsSpecified

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.SlotOption;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SlotOption;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.SoftwareList;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SoftwareList;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.Sound;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.Sound;
#endregion

View File

@@ -13,7 +13,7 @@ namespace SabreTools.Metadata.DatItems.Formats
#region Fields
/// <inheritdoc>/>
protected override ItemType ItemType => ItemType.SourceDetails;
internal override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.SourceDetails;
#endregion

View File

@@ -30,6 +30,10 @@
<None Include="README.md" Pack="true" PackagePath="" />
</ItemGroup>
<ItemGroup>
<InternalsVisibleTo Include="SabreTools.Metadata.DatItems.Test" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
<PackageReference Include="SabreTools.Hashing" Version="[2.0.0]" />