mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Convert remaining items, add NameKey
This commit is contained in:
@@ -447,7 +447,7 @@ namespace SabreTools.Core
|
|||||||
Device,
|
Device,
|
||||||
|
|
||||||
[Mapping("device_ref", "deviceref")]
|
[Mapping("device_ref", "deviceref")]
|
||||||
DeviceReference,
|
DeviceRef,
|
||||||
|
|
||||||
[Mapping("diplocation")]
|
[Mapping("diplocation")]
|
||||||
DipLocation,
|
DipLocation,
|
||||||
@@ -510,7 +510,7 @@ namespace SabreTools.Core
|
|||||||
Serials,
|
Serials,
|
||||||
|
|
||||||
[Mapping("sharedfeat", "shared_feat", "sharedfeature", "shared_feature")]
|
[Mapping("sharedfeat", "shared_feat", "sharedfeature", "shared_feature")]
|
||||||
SharedFeature,
|
SharedFeat,
|
||||||
|
|
||||||
[Mapping("slot")]
|
[Mapping("slot")]
|
||||||
Slot,
|
Slot,
|
||||||
|
|||||||
@@ -400,7 +400,7 @@ namespace SabreTools.DatFiles
|
|||||||
// Loop through the items and add
|
// Loop through the items and add
|
||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
{
|
{
|
||||||
var datItem = new DatItems.Formats.DeviceReference(item);
|
var datItem = new DatItems.Formats.DeviceRef(item);
|
||||||
datItem.SetFieldValue<DatItems.Source?>(DatItems.DatItem.SourceKey, new DatItems.Source { Index = indexId, Name = filename });
|
datItem.SetFieldValue<DatItems.Source?>(DatItems.DatItem.SourceKey, new DatItems.Source { Index = indexId, Name = filename });
|
||||||
datItem.CopyMachineInformation(machine);
|
datItem.CopyMachineInformation(machine);
|
||||||
ParseAddHelper(datItem, statsOnly);
|
ParseAddHelper(datItem, statsOnly);
|
||||||
@@ -859,7 +859,7 @@ namespace SabreTools.DatFiles
|
|||||||
// Loop through the items and add
|
// Loop through the items and add
|
||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
{
|
{
|
||||||
var datItem = new DatItems.Formats.SharedFeature(item);
|
var datItem = new DatItems.Formats.SharedFeat(item);
|
||||||
datItem.SetFieldValue<DatItems.Source?>(DatItems.DatItem.SourceKey, new DatItems.Source { Index = indexId, Name = filename });
|
datItem.SetFieldValue<DatItems.Source?>(DatItems.DatItem.SourceKey, new DatItems.Source { Index = indexId, Name = filename });
|
||||||
datItem.CopyMachineInformation(machine);
|
datItem.CopyMachineInformation(machine);
|
||||||
ParseAddHelper(datItem, statsOnly);
|
ParseAddHelper(datItem, statsOnly);
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
containsItems = true;
|
containsItems = true;
|
||||||
foreach (var deviceref in devicerefs)
|
foreach (var deviceref in devicerefs)
|
||||||
{
|
{
|
||||||
var item = new DeviceReference();
|
var item = new DeviceRef();
|
||||||
item.SetName(deviceref.Name);
|
item.SetName(deviceref.Name);
|
||||||
item.SetFieldValue<Source?>(DatItem.SourceKey, new Source { Index = indexId, Name = filename });
|
item.SetFieldValue<Source?>(DatItem.SourceKey, new Source { Index = indexId, Name = filename });
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
ItemType.Condition,
|
ItemType.Condition,
|
||||||
ItemType.Configuration,
|
ItemType.Configuration,
|
||||||
ItemType.Device,
|
ItemType.Device,
|
||||||
ItemType.DeviceReference,
|
ItemType.DeviceRef,
|
||||||
ItemType.DipSwitch,
|
ItemType.DipSwitch,
|
||||||
ItemType.Disk,
|
ItemType.Disk,
|
||||||
ItemType.Display,
|
ItemType.Display,
|
||||||
@@ -76,7 +76,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DeviceReference deviceref:
|
case DeviceRef deviceref:
|
||||||
if (string.IsNullOrEmpty(deviceref.GetName()))
|
if (string.IsNullOrEmpty(deviceref.GetName()))
|
||||||
missingFields.Add(Models.Metadata.DeviceRef.NameKey);
|
missingFields.Add(Models.Metadata.DeviceRef.NameKey);
|
||||||
break;
|
break;
|
||||||
@@ -290,7 +290,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
case Disk disk:
|
case Disk disk:
|
||||||
disks.Add(CreateDisk(disk));
|
disks.Add(CreateDisk(disk));
|
||||||
break;
|
break;
|
||||||
case DeviceReference deviceref:
|
case DeviceRef deviceref:
|
||||||
deviceRefs.Add(CreateDeviceRef(deviceref));
|
deviceRefs.Add(CreateDeviceRef(deviceref));
|
||||||
break;
|
break;
|
||||||
case Sample sample:
|
case Sample sample:
|
||||||
@@ -459,7 +459,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a DeviceRef from the current DeviceReference DatItem
|
/// Create a DeviceRef from the current DeviceReference DatItem
|
||||||
/// <summary>
|
/// <summary>
|
||||||
private static Models.Listxml.DeviceRef CreateDeviceRef(DeviceReference item)
|
private static Models.Listxml.DeviceRef CreateDeviceRef(DeviceRef item)
|
||||||
{
|
{
|
||||||
var deviceref = new Models.Listxml.DeviceRef
|
var deviceref = new Models.Listxml.DeviceRef
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DeviceReference deviceref:
|
case DeviceRef deviceref:
|
||||||
if (string.IsNullOrEmpty(deviceref.GetName()))
|
if (string.IsNullOrEmpty(deviceref.GetName()))
|
||||||
missingFields.Add(Models.Metadata.DeviceRef.NameKey);
|
missingFields.Add(Models.Metadata.DeviceRef.NameKey);
|
||||||
break;
|
break;
|
||||||
@@ -352,7 +352,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
case Archive archive:
|
case Archive archive:
|
||||||
archives.Add(CreateArchive(archive));
|
archives.Add(CreateArchive(archive));
|
||||||
break;
|
break;
|
||||||
case DeviceReference deviceref:
|
case DeviceRef deviceref:
|
||||||
devicerefs.Add(CreateDeviceRef(deviceref));
|
devicerefs.Add(CreateDeviceRef(deviceref));
|
||||||
break;
|
break;
|
||||||
case Driver driver:
|
case Driver driver:
|
||||||
@@ -595,7 +595,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a DeviceRef from the current Chip DatItem
|
/// Create a DeviceRef from the current Chip DatItem
|
||||||
/// <summary>
|
/// <summary>
|
||||||
private static Models.Logiqx.DeviceRef CreateDeviceRef(DeviceReference item)
|
private static Models.Logiqx.DeviceRef CreateDeviceRef(DeviceRef item)
|
||||||
{
|
{
|
||||||
var deviceref = new Models.Logiqx.DeviceRef
|
var deviceref = new Models.Logiqx.DeviceRef
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -250,8 +250,8 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
case ItemType.Device:
|
case ItemType.Device:
|
||||||
datItem = datItemObj.ToObject<Device>();
|
datItem = datItemObj.ToObject<Device>();
|
||||||
break;
|
break;
|
||||||
case ItemType.DeviceReference:
|
case ItemType.DeviceRef:
|
||||||
datItem = datItemObj.ToObject<DeviceReference>();
|
datItem = datItemObj.ToObject<DeviceRef>();
|
||||||
break;
|
break;
|
||||||
case ItemType.DipLocation:
|
case ItemType.DipLocation:
|
||||||
datItem = datItemObj.ToObject<DipLocation>();
|
datItem = datItemObj.ToObject<DipLocation>();
|
||||||
@@ -319,8 +319,8 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
case ItemType.Serials:
|
case ItemType.Serials:
|
||||||
datItem = datItemObj.ToObject<Serials>();
|
datItem = datItemObj.ToObject<Serials>();
|
||||||
break;
|
break;
|
||||||
case ItemType.SharedFeature:
|
case ItemType.SharedFeat:
|
||||||
datItem = datItemObj.ToObject<SharedFeature>();
|
datItem = datItemObj.ToObject<SharedFeat>();
|
||||||
break;
|
break;
|
||||||
case ItemType.Slot:
|
case ItemType.Slot:
|
||||||
datItem = datItemObj.ToObject<Slot>();
|
datItem = datItemObj.ToObject<Slot>();
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
// Add all SharedFeat objects
|
// Add all SharedFeat objects
|
||||||
foreach (var sharedfeat in software.SharedFeat ?? [])
|
foreach (var sharedfeat in software.SharedFeat ?? [])
|
||||||
{
|
{
|
||||||
var sharedfeatItem = new SharedFeature();
|
var sharedfeatItem = new SharedFeat();
|
||||||
sharedfeatItem.SetName(sharedfeat.Name);
|
sharedfeatItem.SetName(sharedfeat.Name);
|
||||||
sharedfeatItem.SetFieldValue<Source?>(DatItem.SourceKey, new Source { Index = indexId, Name = filename });
|
sharedfeatItem.SetFieldValue<Source?>(DatItem.SourceKey, new Source { Index = indexId, Name = filename });
|
||||||
sharedfeatItem.SetFieldValue<string?>(Models.Metadata.SharedFeat.ValueKey, sharedfeat.Value);
|
sharedfeatItem.SetFieldValue<string?>(Models.Metadata.SharedFeat.ValueKey, sharedfeat.Value);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
ItemType.Disk,
|
ItemType.Disk,
|
||||||
ItemType.Info,
|
ItemType.Info,
|
||||||
ItemType.Rom,
|
ItemType.Rom,
|
||||||
ItemType.SharedFeature,
|
ItemType.SharedFeat,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SharedFeature sharedFeat:
|
case SharedFeat sharedFeat:
|
||||||
if (string.IsNullOrEmpty(sharedFeat.GetName()))
|
if (string.IsNullOrEmpty(sharedFeat.GetName()))
|
||||||
missingFields.Add(Models.Metadata.SharedFeat.NameKey);
|
missingFields.Add(Models.Metadata.SharedFeat.NameKey);
|
||||||
break;
|
break;
|
||||||
@@ -222,7 +222,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
case Info info:
|
case Info info:
|
||||||
infos.Add(CreateInfo(info));
|
infos.Add(CreateInfo(info));
|
||||||
break;
|
break;
|
||||||
case SharedFeature sharedFeature:
|
case SharedFeat sharedFeature:
|
||||||
sharedfeats.Add(CreateSharedFeat(sharedFeature));
|
sharedfeats.Add(CreateSharedFeat(sharedFeature));
|
||||||
break;
|
break;
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
@@ -287,7 +287,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a SharedFeat from the current SharedFeature DatItem
|
/// Create a SharedFeat from the current SharedFeature DatItem
|
||||||
/// <summary>
|
/// <summary>
|
||||||
private static Models.SoftwareList.SharedFeat CreateSharedFeat(SharedFeature item)
|
private static Models.SoftwareList.SharedFeat CreateSharedFeat(SharedFeat item)
|
||||||
{
|
{
|
||||||
var sharedfeat = new Models.SoftwareList.SharedFeat
|
var sharedfeat = new Models.SoftwareList.SharedFeat
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -207,7 +207,10 @@ namespace SabreTools.DatFiles
|
|||||||
|
|
||||||
// If the field specifically contains Name, set it separately
|
// If the field specifically contains Name, set it separately
|
||||||
if (fieldMappings.Keys.Contains(Models.Metadata.Rom.NameKey))
|
if (fieldMappings.Keys.Contains(Models.Metadata.Rom.NameKey))
|
||||||
|
{
|
||||||
datItem.SetName(fieldMappings[Models.Metadata.Rom.NameKey]);
|
datItem.SetName(fieldMappings[Models.Metadata.Rom.NameKey]);
|
||||||
|
fieldMappings.Remove(Models.Metadata.Rom.NameKey);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace SabreTools.DatItems
|
|||||||
[XmlInclude(typeof(Control))]
|
[XmlInclude(typeof(Control))]
|
||||||
[XmlInclude(typeof(DataArea))]
|
[XmlInclude(typeof(DataArea))]
|
||||||
[XmlInclude(typeof(Device))]
|
[XmlInclude(typeof(Device))]
|
||||||
[XmlInclude(typeof(DeviceReference))]
|
[XmlInclude(typeof(DeviceRef))]
|
||||||
[XmlInclude(typeof(DipLocation))]
|
[XmlInclude(typeof(DipLocation))]
|
||||||
[XmlInclude(typeof(DipSwitch))]
|
[XmlInclude(typeof(DipSwitch))]
|
||||||
[XmlInclude(typeof(DipValue))]
|
[XmlInclude(typeof(DipValue))]
|
||||||
@@ -51,7 +51,7 @@ namespace SabreTools.DatItems
|
|||||||
[XmlInclude(typeof(Release))]
|
[XmlInclude(typeof(Release))]
|
||||||
[XmlInclude(typeof(Rom))]
|
[XmlInclude(typeof(Rom))]
|
||||||
[XmlInclude(typeof(Sample))]
|
[XmlInclude(typeof(Sample))]
|
||||||
[XmlInclude(typeof(SharedFeature))]
|
[XmlInclude(typeof(SharedFeat))]
|
||||||
[XmlInclude(typeof(Slot))]
|
[XmlInclude(typeof(Slot))]
|
||||||
[XmlInclude(typeof(SlotOption))]
|
[XmlInclude(typeof(SlotOption))]
|
||||||
[XmlInclude(typeof(SoftwareList))]
|
[XmlInclude(typeof(SoftwareList))]
|
||||||
@@ -703,6 +703,7 @@ namespace SabreTools.DatItems
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class DatItem<T> : DatItem, IEquatable<DatItem<T>>, IComparable<DatItem<T>>, ICloneable where T : Models.Metadata.DatItem
|
public abstract class DatItem<T> : DatItem, IEquatable<DatItem<T>>, IComparable<DatItem<T>>, ICloneable where T : Models.Metadata.DatItem
|
||||||
{
|
{
|
||||||
|
// TODO: Move to base class after implementation
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -710,6 +711,11 @@ namespace SabreTools.DatItems
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
protected abstract ItemType ItemType { get; }
|
protected abstract ItemType ItemType { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Key for accessing the item name, if it exists
|
||||||
|
/// </summary>
|
||||||
|
protected abstract string? NameKey { get; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
@@ -739,6 +745,26 @@ namespace SabreTools.DatItems
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Accessors
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override string? GetName()
|
||||||
|
{
|
||||||
|
if (NameKey != null)
|
||||||
|
return GetFieldValue<string?>(NameKey);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override void SetName(string? name)
|
||||||
|
{
|
||||||
|
if (NameKey != null)
|
||||||
|
SetFieldValue(NameKey, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
// TODO: Figure out how to replace individual versions with this
|
// TODO: Figure out how to replace individual versions with this
|
||||||
#region Cloning Methods
|
#region Cloning Methods
|
||||||
|
|
||||||
@@ -746,7 +772,12 @@ namespace SabreTools.DatItems
|
|||||||
/// Clone the DatItem
|
/// Clone the DatItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Clone of the DatItem</returns>
|
/// <returns>Clone of the DatItem</returns>
|
||||||
public override abstract object Clone();
|
public override object Clone()
|
||||||
|
{
|
||||||
|
var clone = Activator.CreateInstance<DatItem<T>>();
|
||||||
|
clone._internal = _internal?.Clone() as T ?? Activator.CreateInstance<T>();
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents which Adjuster(s) is associated with a set
|
/// Represents which Adjuster(s) is associated with a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("adjuster"), XmlRoot("adjuster")]
|
[JsonObject("adjuster"), XmlRoot("adjuster")]
|
||||||
public class Adjuster : DatItem
|
public sealed class Adjuster : DatItem<Models.Metadata.Adjuster>
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.Adjuster;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.Adjuster.NameKey;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool ConditionsSpecified
|
public bool ConditionsSpecified
|
||||||
{
|
{
|
||||||
@@ -24,53 +30,10 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Adjuster.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Adjuster.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Adjuster() : base() { }
|
||||||
/// Create a default, empty Adjuster object
|
public Adjuster(Models.Metadata.Adjuster item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Adjuster()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Adjuster();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Adjuster);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create an Adjuster object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Adjuster(Models.Metadata.Adjuster item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Adjuster);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Adjuster()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Adjuster ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,44 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a single analog item
|
/// Represents a single analog item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("analog"), XmlRoot("analog")]
|
[JsonObject("analog"), XmlRoot("analog")]
|
||||||
public class Analog : DatItem
|
public sealed class Analog : DatItem<Models.Metadata.Analog>
|
||||||
{
|
{
|
||||||
#region Constructors
|
#region Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc>/>
|
||||||
/// Create a default, empty Analog object
|
protected override ItemType ItemType => ItemType.Analog;
|
||||||
/// </summary>
|
|
||||||
public Analog()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Analog();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Analog);
|
/// <inheritdoc>/>
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
protected override string? NameKey => null;
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create an Analog object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Analog(Models.Metadata.Analog item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Analog);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Constructors
|
||||||
|
|
||||||
/// <inheritdoc/>
|
public Analog() : base() { }
|
||||||
public override object Clone()
|
public Analog(Models.Metadata.Analog item) : base(item) { }
|
||||||
{
|
|
||||||
return new Analog()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Analog ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents generic archive files to be included in a set
|
/// Represents generic archive files to be included in a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("archive"), XmlRoot("archive")]
|
[JsonObject("archive"), XmlRoot("archive")]
|
||||||
public class Archive : DatItem
|
public sealed class Archive : DatItem
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
@@ -79,16 +79,6 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Archive.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Archive.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -116,6 +106,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Accessors
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Archive.NameKey);
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Archive.NameKey, name);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Cloning Methods
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents the OpenMSX original value
|
/// Represents the OpenMSX original value
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("original"), XmlRoot("original")]
|
[JsonObject("original"), XmlRoot("original")]
|
||||||
public class Original
|
public sealed class Original
|
||||||
{
|
{
|
||||||
[JsonProperty("value"), XmlElement("value")]
|
[JsonProperty("value"), XmlElement("value")]
|
||||||
public bool? Value
|
public bool? Value
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents which BIOS(es) is associated with a set
|
/// Represents which BIOS(es) is associated with a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("biosset"), XmlRoot("biosset")]
|
[JsonObject("biosset"), XmlRoot("biosset")]
|
||||||
public class BiosSet : DatItem
|
public sealed class BiosSet : DatItem<Models.Metadata.BiosSet>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.BiosSet.NameKey);
|
protected override ItemType ItemType => ItemType.Analog;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.BiosSet.NameKey, name);
|
protected override string? NameKey => Models.Metadata.BiosSet.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public BiosSet() : base() { }
|
||||||
/// Create a default, empty BiosSet object
|
public BiosSet(Models.Metadata.BiosSet item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public BiosSet()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.BiosSet();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.BiosSet);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a BiosSet object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public BiosSet(Models.Metadata.BiosSet item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.BiosSet);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new BiosSet()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.BiosSet ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a blank set from an input DAT
|
/// Represents a blank set from an input DAT
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("blank"), XmlRoot("blank")]
|
[JsonObject("blank"), XmlRoot("blank")]
|
||||||
public class Blank : DatItem
|
public sealed class Blank : DatItem
|
||||||
{
|
{
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents which Chip(s) is associated with a set
|
/// Represents which Chip(s) is associated with a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("chip"), XmlRoot("chip")]
|
[JsonObject("chip"), XmlRoot("chip")]
|
||||||
public class Chip : DatItem
|
public sealed class Chip : DatItem<Models.Metadata.Chip>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Chip.NameKey);
|
protected override ItemType ItemType => ItemType.Chip;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Chip.NameKey, name);
|
protected override string? NameKey => Models.Metadata.Chip.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Chip() : base() { }
|
||||||
/// Create a default, empty Chip object
|
public Chip(Models.Metadata.Chip item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Chip()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Chip();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Chip);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Chip object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Chip(Models.Metadata.Chip item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Chip);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Chip()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Chip ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,44 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a condition on a machine or other item
|
/// Represents a condition on a machine or other item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("condition"), XmlRoot("condition")]
|
[JsonObject("condition"), XmlRoot("condition")]
|
||||||
public class Condition : DatItem
|
public sealed class Condition : DatItem<Models.Metadata.Condition>
|
||||||
{
|
{
|
||||||
#region Constructors
|
#region Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc>/>
|
||||||
/// Create a default, empty Condition object
|
protected override ItemType ItemType => ItemType.Condition;
|
||||||
/// </summary>
|
|
||||||
public Condition()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Condition();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Condition);
|
/// <inheritdoc>/>
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
protected override string? NameKey => null;
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Condition object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Condition(Models.Metadata.Condition item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Condition);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Constructors
|
||||||
|
|
||||||
/// <inheritdoc/>
|
public Condition() : base() { }
|
||||||
public override object Clone()
|
public Condition(Models.Metadata.Condition item) : base(item) { }
|
||||||
{
|
|
||||||
return new Condition()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Condition ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents one conflocation
|
/// Represents one conflocation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("conflocation"), XmlRoot("conflocation")]
|
[JsonObject("conflocation"), XmlRoot("conflocation")]
|
||||||
public class ConfLocation : DatItem
|
public sealed class ConfLocation : DatItem<Models.Metadata.ConfLocation>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.ConfLocation.NameKey);
|
protected override ItemType ItemType => ItemType.ConfLocation;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.ConfLocation.NameKey, name);
|
protected override string? NameKey => Models.Metadata.ConfLocation.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public ConfLocation() : base() { }
|
||||||
/// Create a default, empty ConfLocation object
|
public ConfLocation(Models.Metadata.ConfLocation item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public ConfLocation()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.ConfLocation();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.ConfLocation);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a ConfLocation object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public ConfLocation(Models.Metadata.ConfLocation item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.ConfLocation);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new ConfLocation()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.ConfLocation ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents one ListXML confsetting
|
/// Represents one ListXML confsetting
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("confsetting"), XmlRoot("confsetting")]
|
[JsonObject("confsetting"), XmlRoot("confsetting")]
|
||||||
public class ConfSetting : DatItem
|
public sealed class ConfSetting : DatItem<Models.Metadata.ConfSetting>
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.ConfSetting;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.ConfSetting.NameKey;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool ConditionsSpecified
|
public bool ConditionsSpecified
|
||||||
{
|
{
|
||||||
@@ -24,53 +30,10 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.ConfSetting.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.ConfSetting.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public ConfSetting() : base() { }
|
||||||
/// Create a default, empty ConfSetting object
|
public ConfSetting(Models.Metadata.ConfSetting item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public ConfSetting()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.ConfSetting();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.ConfSetting);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a ConfSetting object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public ConfSetting(Models.Metadata.ConfSetting item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.ConfSetting);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new ConfSetting()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.ConfSetting ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents which Configuration(s) is associated with a set
|
/// Represents which Configuration(s) is associated with a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("configuration"), XmlRoot("configuration")]
|
[JsonObject("configuration"), XmlRoot("configuration")]
|
||||||
public class Configuration : DatItem
|
public sealed class Configuration : DatItem<Models.Metadata.Configuration>
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.Configuration;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.Configuration.NameKey;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool ConditionsSpecified
|
public bool ConditionsSpecified
|
||||||
{
|
{
|
||||||
@@ -44,53 +50,10 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Configuration.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Configuration.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Configuration() : base() { }
|
||||||
/// Create a default, empty Configuration object
|
public Configuration(Models.Metadata.Configuration item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Configuration()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Configuration();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Configuration);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Configuration object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Configuration(Models.Metadata.Configuration item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Configuration);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Configuration()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Configuration ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,44 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents control for an input
|
/// Represents control for an input
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("control"), XmlRoot("control")]
|
[JsonObject("control"), XmlRoot("control")]
|
||||||
public class Control : DatItem
|
public sealed class Control : DatItem<Models.Metadata.Control>
|
||||||
{
|
{
|
||||||
#region Constructors
|
#region Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc>/>
|
||||||
/// Create a default, empty Control object
|
protected override ItemType ItemType => ItemType.Control;
|
||||||
/// </summary>
|
|
||||||
public Control()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Control();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Control);
|
/// <inheritdoc>/>
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
protected override string? NameKey => null;
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Control object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Control(Models.Metadata.Control item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Control);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Constructors
|
||||||
|
|
||||||
/// <inheritdoc/>
|
public Control() : base() { }
|
||||||
public override object Clone()
|
public Control(Models.Metadata.Control item) : base(item) { }
|
||||||
{
|
|
||||||
return new Control()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Control ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,55 +9,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>One DataArea can contain multiple Rom items</remarks>
|
/// <remarks>One DataArea can contain multiple Rom items</remarks>
|
||||||
[JsonObject("dataarea"), XmlRoot("dataarea")]
|
[JsonObject("dataarea"), XmlRoot("dataarea")]
|
||||||
public class DataArea : DatItem
|
public sealed class DataArea : DatItem<Models.Metadata.DataArea>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.DataArea.NameKey);
|
protected override ItemType ItemType => ItemType.DataArea;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.DataArea.NameKey, name);
|
protected override string? NameKey => Models.Metadata.DataArea.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public DataArea() : base() { }
|
||||||
/// Create a default, empty DataArea object
|
public DataArea(Models.Metadata.DataArea item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public DataArea()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.DataArea();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DataArea);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a DataArea object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public DataArea(Models.Metadata.DataArea item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DataArea);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new DataArea()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.DataArea ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a single device on the machine
|
/// Represents a single device on the machine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("device"), XmlRoot("device")]
|
[JsonObject("device"), XmlRoot("device")]
|
||||||
public class Device : DatItem
|
public sealed class Device : DatItem<Models.Metadata.Device>
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.Device;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => null;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool InstancesSpecified
|
public bool InstancesSpecified
|
||||||
{
|
{
|
||||||
@@ -36,40 +42,8 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Device() : base() { }
|
||||||
/// Create a default, empty Device object
|
public Device(Models.Metadata.Device item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Device()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Device();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Device);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Device object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Device(Models.Metadata.Device item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Device);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Device()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Device ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
30
SabreTools.DatItems/Formats/DeviceRef.cs
Normal file
30
SabreTools.DatItems/Formats/DeviceRef.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
using System.Xml.Serialization;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using SabreTools.Core;
|
||||||
|
|
||||||
|
namespace SabreTools.DatItems.Formats
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents which Device Reference(s) is associated with a set
|
||||||
|
/// </summary>
|
||||||
|
[JsonObject("device_ref"), XmlRoot("device_ref")]
|
||||||
|
public sealed class DeviceRef : DatItem<Models.Metadata.DeviceRef>
|
||||||
|
{
|
||||||
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.DeviceRef;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.DeviceRef.NameKey;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
public DeviceRef() : base() { }
|
||||||
|
public DeviceRef(Models.Metadata.DeviceRef item) : base(item) { }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
using System.Xml.Serialization;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using SabreTools.Core;
|
|
||||||
|
|
||||||
namespace SabreTools.DatItems.Formats
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Represents which Device Reference(s) is associated with a set
|
|
||||||
/// </summary>
|
|
||||||
[JsonObject("device_ref"), XmlRoot("device_ref")]
|
|
||||||
public class DeviceReference : DatItem
|
|
||||||
{
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.DeviceRef.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.DeviceRef.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a default, empty DeviceReference object
|
|
||||||
/// </summary>
|
|
||||||
public DeviceReference()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.DeviceRef();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DeviceReference);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a DeviceReference object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public DeviceReference(Models.Metadata.DeviceRef item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DeviceReference);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new DeviceReference()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.DeviceRef ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents one diplocation
|
/// Represents one diplocation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("diplocation"), XmlRoot("diplocation")]
|
[JsonObject("diplocation"), XmlRoot("diplocation")]
|
||||||
public class DipLocation : DatItem
|
public sealed class DipLocation : DatItem<Models.Metadata.DipLocation>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.DipLocation.NameKey);
|
protected override ItemType ItemType => ItemType.DipLocation;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.DipLocation.NameKey, name);
|
protected override string? NameKey => Models.Metadata.DipLocation.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public DipLocation() : base() { }
|
||||||
/// Create a default, empty DipLocation object
|
public DipLocation(Models.Metadata.DipLocation item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public DipLocation()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.DipLocation();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipLocation);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a DipLocation object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public DipLocation(Models.Metadata.DipLocation item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipLocation);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new DipLocation()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.DipLocation ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents which DIP Switch(es) is associated with a set
|
/// Represents which DIP Switch(es) is associated with a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("dipswitch"), XmlRoot("dipswitch")]
|
[JsonObject("dipswitch"), XmlRoot("dipswitch")]
|
||||||
public class DipSwitch : DatItem
|
public sealed class DipSwitch : DatItem<Models.Metadata.DipSwitch>
|
||||||
{
|
{
|
||||||
#region Constants
|
#region Constants
|
||||||
|
|
||||||
@@ -21,6 +21,12 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.DipSwitch;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.DipSwitch.NameKey;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool ConditionsSpecified
|
public bool ConditionsSpecified
|
||||||
{
|
{
|
||||||
@@ -65,53 +71,10 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.DipSwitch.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.DipSwitch.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public DipSwitch() : base() { }
|
||||||
/// Create a default, empty DipSwitch object
|
public DipSwitch(Models.Metadata.DipSwitch item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public DipSwitch()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.DipSwitch();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipSwitch);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a DipSwitch object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public DipSwitch(Models.Metadata.DipSwitch item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipSwitch);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new DipSwitch()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.DipSwitch ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents one ListXML dipvalue
|
/// Represents one ListXML dipvalue
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("dipvalue"), XmlRoot("dipvalue")]
|
[JsonObject("dipvalue"), XmlRoot("dipvalue")]
|
||||||
public class DipValue : DatItem
|
public sealed class DipValue : DatItem<Models.Metadata.DipValue>
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.DipValue;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.DipValue.NameKey;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool ConditionsSpecified
|
public bool ConditionsSpecified
|
||||||
{
|
{
|
||||||
@@ -24,53 +30,10 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.DipValue.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.DipValue.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public DipValue() : base() { }
|
||||||
/// Create a default, empty DipValue object
|
public DipValue(Models.Metadata.DipValue item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public DipValue()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.DipValue();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipValue);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a DipValue object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public DipValue(Models.Metadata.DipValue item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipValue);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new DipValue()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.DipValue ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents Compressed Hunks of Data (CHD) formatted disks which use internal hashes
|
/// Represents Compressed Hunks of Data (CHD) formatted disks which use internal hashes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("disk"), XmlRoot("disk")]
|
[JsonObject("disk"), XmlRoot("disk")]
|
||||||
public class Disk : DatItem
|
public sealed class Disk : DatItem<Models.Metadata.Disk>
|
||||||
{
|
{
|
||||||
#region Constants
|
#region Constants
|
||||||
|
|
||||||
@@ -28,6 +28,12 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.Disk;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.Disk.NameKey;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool DiskAreaSpecified
|
public bool DiskAreaSpecified
|
||||||
{
|
{
|
||||||
@@ -52,73 +58,34 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Disk.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Disk.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Disk() : base()
|
||||||
/// Create a default, empty Disk object
|
|
||||||
/// </summary>
|
|
||||||
public Disk()
|
|
||||||
{
|
{
|
||||||
_internal = new Models.Metadata.Disk();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Disk);
|
|
||||||
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
SetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey, ItemStatus.None);
|
SetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey, ItemStatus.None);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public Disk(Models.Metadata.Disk item) : base(item)
|
||||||
/// Create a Disk object from a BaseFile
|
|
||||||
/// </summary>
|
|
||||||
public Disk(BaseFile baseFile)
|
|
||||||
{
|
{
|
||||||
_internal = new Models.Metadata.Disk();
|
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
||||||
|
SetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey, ItemStatus.None);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Disk(BaseFile baseFile) : base()
|
||||||
|
{
|
||||||
SetName(baseFile.Filename);
|
SetName(baseFile.Filename);
|
||||||
SetFieldValue<string?>(Models.Metadata.Disk.MD5Key, TextHelper.ByteArrayToString(baseFile.MD5));
|
SetFieldValue<string?>(Models.Metadata.Disk.MD5Key, TextHelper.ByteArrayToString(baseFile.MD5));
|
||||||
SetFieldValue<string?>(Models.Metadata.Disk.SHA1Key, TextHelper.ByteArrayToString(baseFile.SHA1));
|
SetFieldValue<string?>(Models.Metadata.Disk.SHA1Key, TextHelper.ByteArrayToString(baseFile.SHA1));
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Disk);
|
|
||||||
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
SetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey, ItemStatus.None);
|
SetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey, ItemStatus.None);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Disk object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Disk(Models.Metadata.Disk item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Disk);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Cloning Methods
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Disk()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Disk ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert Disk object to a BaseFile
|
/// Convert Disk object to a BaseFile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -9,55 +9,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>One DiskArea can contain multiple Disk items</remarks>
|
/// <remarks>One DiskArea can contain multiple Disk items</remarks>
|
||||||
[JsonObject("diskarea"), XmlRoot("diskarea")]
|
[JsonObject("diskarea"), XmlRoot("diskarea")]
|
||||||
public class DiskArea : DatItem
|
public sealed class DiskArea : DatItem<Models.Metadata.DiskArea>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.DiskArea.NameKey);
|
protected override ItemType ItemType => ItemType.DiskArea;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.DiskArea.NameKey, name);
|
protected override string? NameKey => Models.Metadata.DiskArea.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public DiskArea() : base() { }
|
||||||
/// Create a default, empty DiskArea object
|
public DiskArea(Models.Metadata.DiskArea item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public DiskArea()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.DiskArea();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DiskArea);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a DiskArea object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public DiskArea(Models.Metadata.DiskArea item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DiskArea);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new DiskArea()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.DiskArea ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,55 +8,27 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents one machine display
|
/// Represents one machine display
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("display"), XmlRoot("display")]
|
[JsonObject("display"), XmlRoot("display")]
|
||||||
public class Display : DatItem
|
public sealed class Display : DatItem<Models.Metadata.Display>
|
||||||
{
|
{
|
||||||
#region Constructors
|
#region Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc>/>
|
||||||
/// Create a default, empty Display object
|
protected override ItemType ItemType => ItemType.Display;
|
||||||
/// </summary>
|
|
||||||
public Display()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Display();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Display);
|
/// <inheritdoc>/>
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
protected override string? NameKey => null;
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Display object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Display(Models.Metadata.Display item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Display);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Display object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Display(Models.Metadata.Video item)
|
|
||||||
{
|
|
||||||
// TODO: Determine what transformation is needed here
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Display);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Constructors
|
||||||
|
|
||||||
/// <inheritdoc/>
|
public Display() : base() { }
|
||||||
public override object Clone()
|
public Display(Models.Metadata.Display item) : base(item) { }
|
||||||
|
|
||||||
|
public Display(Models.Metadata.Video item) : base()
|
||||||
{
|
{
|
||||||
return new Display()
|
// TODO: Determine what transformation is needed here
|
||||||
{
|
_internal = item;
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Display ?? [],
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -7,48 +7,23 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents the a driver of the machine
|
/// Represents the a driver of the machine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
|
||||||
/// TODO: Add new fields to documentation
|
|
||||||
/// </remarks>
|
|
||||||
[JsonObject("driver"), XmlRoot("driver")]
|
[JsonObject("driver"), XmlRoot("driver")]
|
||||||
public class Driver : DatItem
|
public sealed class Driver : DatItem<Models.Metadata.Driver>
|
||||||
{
|
{
|
||||||
#region Constructors
|
#region Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc>/>
|
||||||
/// Create a default, empty Driver object
|
protected override ItemType ItemType => ItemType.Driver;
|
||||||
/// </summary>
|
|
||||||
public Driver()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Driver();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Driver);
|
/// <inheritdoc>/>
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
protected override string? NameKey => null;
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Driver object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Driver(Models.Metadata.Driver item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Driver);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Constructors
|
||||||
|
|
||||||
/// <inheritdoc/>
|
public Driver() : base() { }
|
||||||
public override object Clone()
|
public Driver(Models.Metadata.Driver item) : base(item) { }
|
||||||
{
|
|
||||||
return new Driver()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Driver ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a matchable extension
|
/// Represents a matchable extension
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("extension"), XmlRoot("extension")]
|
[JsonObject("extension"), XmlRoot("extension")]
|
||||||
public class Extension : DatItem
|
public sealed class Extension : DatItem<Models.Metadata.Extension>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Extension.NameKey);
|
protected override ItemType ItemType => ItemType.Extension;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Extension.NameKey, name);
|
protected override string? NameKey => Models.Metadata.Extension.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Extension() : base() { }
|
||||||
/// Create a default, empty Extension object
|
public Extension(Models.Metadata.Extension item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Extension()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Extension();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Extension);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create an Extension object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Extension(Models.Metadata.Extension item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Extension);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Extension()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Extension ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,44 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents the a feature of the machine
|
/// Represents the a feature of the machine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("feature"), XmlRoot("feature")]
|
[JsonObject("feature"), XmlRoot("feature")]
|
||||||
public class Feature : DatItem
|
public sealed class Feature : DatItem<Models.Metadata.Feature>
|
||||||
{
|
{
|
||||||
#region Constructors
|
#region Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc>/>
|
||||||
/// Create a default, empty Feature object
|
protected override ItemType ItemType => ItemType.Feature;
|
||||||
/// </summary>
|
|
||||||
public Feature()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Feature();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Feature);
|
/// <inheritdoc>/>
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
protected override string? NameKey => null;
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Feature object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Feature(Models.Metadata.Feature item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Feature);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Constructors
|
||||||
|
|
||||||
/// <inheritdoc/>
|
public Feature() : base() { }
|
||||||
public override object Clone()
|
public Feature(Models.Metadata.Feature item) : base(item) { }
|
||||||
{
|
|
||||||
return new Feature()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Feature ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a single file item
|
/// Represents a single file item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("file"), XmlRoot("file")]
|
[JsonObject("file"), XmlRoot("file")]
|
||||||
public class File : DatItem
|
public sealed class File : DatItem
|
||||||
{
|
{
|
||||||
#region Private instance variables
|
#region Private instance variables
|
||||||
|
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents special information about a machine
|
/// Represents special information about a machine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("info"), XmlRoot("info")]
|
[JsonObject("info"), XmlRoot("info")]
|
||||||
public class Info : DatItem
|
public sealed class Info : DatItem<Models.Metadata.Info>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Info.NameKey);
|
protected override ItemType ItemType => ItemType.Info;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Info.NameKey, name);
|
protected override string? NameKey => Models.Metadata.Instance.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Info() : base() { }
|
||||||
/// Create a default, empty Info object
|
public Info(Models.Metadata.Info item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Info()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Info();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Info);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create an Info object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Info(Models.Metadata.Info item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Info);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Info()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Info ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents one ListXML input
|
/// Represents one ListXML input
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("input"), XmlRoot("input")]
|
[JsonObject("input"), XmlRoot("input")]
|
||||||
public class Input : DatItem
|
public sealed class Input : DatItem<Models.Metadata.Input>
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.Input;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => null;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool ControlsSpecified
|
public bool ControlsSpecified
|
||||||
{
|
{
|
||||||
@@ -26,40 +32,8 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Input() : base() { }
|
||||||
/// Create a default, empty Input object
|
public Input(Models.Metadata.Input item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Input()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Input();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Input);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create an Input object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Input(Models.Metadata.Input item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Input);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Input()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Input ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a single instance of another item
|
/// Represents a single instance of another item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("instance"), XmlRoot("instance")]
|
[JsonObject("instance"), XmlRoot("instance")]
|
||||||
public class Instance : DatItem
|
public sealed class Instance : DatItem<Models.Metadata.Instance>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Instance.NameKey);
|
protected override ItemType ItemType => ItemType.Instance;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Instance.NameKey, name);
|
protected override string? NameKey => Models.Metadata.Instance.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Instance() : base() { }
|
||||||
/// Create a default, empty Instance object
|
public Instance(Models.Metadata.Instance item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Instance()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Instance();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Instance);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create an Instance object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Instance(Models.Metadata.Instance item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Instance);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Instance()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Instance ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,77 +10,45 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents Aaruformat images which use internal hashes
|
/// Represents Aaruformat images which use internal hashes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("media"), XmlRoot("media")]
|
[JsonObject("media"), XmlRoot("media")]
|
||||||
public class Media : DatItem
|
public sealed class Media : DatItem<Models.Metadata.Media>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Media.NameKey);
|
protected override ItemType ItemType => ItemType.Media;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Media.NameKey, name);
|
protected override string? NameKey => Models.Metadata.Media.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Media() : base()
|
||||||
/// Create a default, empty Media object
|
|
||||||
/// </summary>
|
|
||||||
public Media()
|
|
||||||
{
|
{
|
||||||
_internal = new Models.Metadata.Media();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Media);
|
|
||||||
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public Media(Models.Metadata.Media item) : base(item)
|
||||||
/// Create a Media object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Media(Models.Metadata.Media item)
|
|
||||||
{
|
{
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Media);
|
|
||||||
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public Media(BaseFile baseFile) : base()
|
||||||
/// Create a Media object from a BaseFile
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="baseFile"></param>
|
|
||||||
public Media(BaseFile baseFile)
|
|
||||||
{
|
{
|
||||||
_internal = new Models.Metadata.Media();
|
|
||||||
|
|
||||||
SetName(baseFile.Filename);
|
SetName(baseFile.Filename);
|
||||||
SetFieldValue<string?>(Models.Metadata.Media.MD5Key, TextHelper.ByteArrayToString(baseFile.MD5));
|
SetFieldValue<string?>(Models.Metadata.Media.MD5Key, TextHelper.ByteArrayToString(baseFile.MD5));
|
||||||
SetFieldValue<string?>(Models.Metadata.Media.SHA1Key, TextHelper.ByteArrayToString(baseFile.SHA1));
|
SetFieldValue<string?>(Models.Metadata.Media.SHA1Key, TextHelper.ByteArrayToString(baseFile.SHA1));
|
||||||
SetFieldValue<string?>(Models.Metadata.Media.SHA256Key, TextHelper.ByteArrayToString(baseFile.SHA256));
|
SetFieldValue<string?>(Models.Metadata.Media.SHA256Key, TextHelper.ByteArrayToString(baseFile.SHA256));
|
||||||
SetFieldValue<string?>(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
|
SetFieldValue<string?>(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Media);
|
|
||||||
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Cloning Methods
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Media()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Media ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert Media object to a BaseFile
|
/// Convert Media object to a BaseFile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -9,10 +9,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>One Part can contain multiple PartFeature, DataArea, DiskArea, and DipSwitch items</remarks>
|
/// <remarks>One Part can contain multiple PartFeature, DataArea, DiskArea, and DipSwitch items</remarks>
|
||||||
[JsonObject("part"), XmlRoot("part")]
|
[JsonObject("part"), XmlRoot("part")]
|
||||||
public class Part : DatItem
|
public sealed class Part : DatItem<Models.Metadata.Part>
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.Part;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.Part.NameKey;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool FeaturesSpecified
|
public bool FeaturesSpecified
|
||||||
{
|
{
|
||||||
@@ -25,53 +31,10 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Part.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Part.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Part() : base() { }
|
||||||
/// Create a default, empty Part object
|
public Part(Models.Metadata.Part item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Part()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Part();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Part);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Part object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Part(Models.Metadata.Part item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Part);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Part()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Part ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents one part feature object
|
/// Represents one part feature object
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("part_feature"), XmlRoot("part_feature")]
|
[JsonObject("part_feature"), XmlRoot("part_feature")]
|
||||||
public class PartFeature : DatItem
|
public sealed class PartFeature : DatItem<Models.Metadata.Feature>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Feature.NameKey);
|
protected override ItemType ItemType => ItemType.PartFeature;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Feature.NameKey, name);
|
protected override string? NameKey => Models.Metadata.Feature.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public PartFeature() : base() { }
|
||||||
/// Create a default, empty PartFeature object
|
public PartFeature(Models.Metadata.Feature item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public PartFeature()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Feature();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.PartFeature);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a PartFeature object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public PartFeature(Models.Metadata.Feature item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.PartFeature);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new PartFeature()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Feature ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a single port on a machine
|
/// Represents a single port on a machine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("port"), XmlRoot("port")]
|
[JsonObject("port"), XmlRoot("port")]
|
||||||
public class Port : DatItem
|
public sealed class Port : DatItem<Models.Metadata.Port>
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.Port;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => null;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool AnalogsSpecified
|
public bool AnalogsSpecified
|
||||||
{
|
{
|
||||||
@@ -26,40 +32,8 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Port() : base() { }
|
||||||
/// Create a default, empty Port object
|
public Port(Models.Metadata.Port item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Port()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Port();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Port);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Port object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Port(Models.Metadata.Port item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Port);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Port()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Port ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents which RAM option(s) is associated with a set
|
/// Represents which RAM option(s) is associated with a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("ramoption"), XmlRoot("ramoption")]
|
[JsonObject("ramoption"), XmlRoot("ramoption")]
|
||||||
public class RamOption : DatItem
|
public sealed class RamOption : DatItem<Models.Metadata.RamOption>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.RamOption.NameKey);
|
protected override ItemType ItemType => ItemType.RamOption;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.RamOption.NameKey, name);
|
protected override string? NameKey => Models.Metadata.RamOption.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public RamOption() : base() { }
|
||||||
/// Create a default, empty RamOption object
|
public RamOption(Models.Metadata.RamOption item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public RamOption()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.RamOption();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.RamOption);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a RamOption object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public RamOption(Models.Metadata.RamOption item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.RamOption);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new RamOption()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.RamOption ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents release information about a set
|
/// Represents release information about a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("release"), XmlRoot("release")]
|
[JsonObject("release"), XmlRoot("release")]
|
||||||
public class Release : DatItem
|
public sealed class Release : DatItem<Models.Metadata.Release>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Release.NameKey);
|
protected override ItemType ItemType => ItemType.Release;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Release.NameKey, name);
|
protected override string? NameKey => Models.Metadata.Release.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Release() : base() { }
|
||||||
/// Create a default, empty Release object
|
public Release(Models.Metadata.Release item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Release()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Release();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Release);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Release object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Release(Models.Metadata.Release item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Release);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Release()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Release ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a single release details item
|
/// Represents a single release details item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("release_details"), XmlRoot("release_details")]
|
[JsonObject("release_details"), XmlRoot("release_details")]
|
||||||
public class ReleaseDetails : DatItem
|
public sealed class ReleaseDetails : DatItem
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a generic file within a set
|
/// Represents a generic file within a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("rom"), XmlRoot("rom")]
|
[JsonObject("rom"), XmlRoot("rom")]
|
||||||
public class Rom : DatItem
|
public sealed class Rom : DatItem<Models.Metadata.Rom>
|
||||||
{
|
{
|
||||||
#region Constants
|
#region Constants
|
||||||
|
|
||||||
@@ -28,6 +28,12 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.Rom;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.Rom.NameKey;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool ItemStatusSpecified
|
public bool ItemStatusSpecified
|
||||||
{
|
{
|
||||||
@@ -76,100 +82,50 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Rom.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Rom.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Rom() : base()
|
||||||
/// Create a default, empty Rom object
|
|
||||||
/// </summary>
|
|
||||||
public Rom()
|
|
||||||
{
|
{
|
||||||
_internal = new Models.Metadata.Rom();
|
|
||||||
|
|
||||||
SetName(null);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Rom);
|
|
||||||
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
|
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public Rom(string name, string machineName) : base()
|
||||||
/// Create a "blank" Rom object
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="name"></param>
|
|
||||||
/// <param name="machineName"></param>
|
|
||||||
/// <param name="omitFromScan"></param>
|
|
||||||
public Rom(string name, string machineName)
|
|
||||||
{
|
{
|
||||||
_internal = new Models.Metadata.Rom();
|
|
||||||
SetName(name);
|
SetName(name);
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Rom);
|
|
||||||
SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, null);
|
SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, null);
|
||||||
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
|
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
|
||||||
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, machineName);
|
GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, machineName);
|
||||||
GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, machineName);
|
GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, machineName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public Rom(BaseFile baseFile) : base()
|
||||||
/// Create a Rom object from a BaseFile
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="baseFile"></param>
|
|
||||||
public Rom(BaseFile baseFile)
|
|
||||||
{
|
{
|
||||||
_internal = new Models.Metadata.Rom();
|
|
||||||
|
|
||||||
SetName(baseFile.Filename);
|
SetName(baseFile.Filename);
|
||||||
SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, baseFile.Size);
|
SetFieldValue<string?>(Models.Metadata.Rom.DateKey, baseFile.Date);
|
||||||
SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, TextHelper.ByteArrayToString(baseFile.CRC));
|
SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, TextHelper.ByteArrayToString(baseFile.CRC));
|
||||||
SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, TextHelper.ByteArrayToString(baseFile.MD5));
|
SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, TextHelper.ByteArrayToString(baseFile.MD5));
|
||||||
SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, TextHelper.ByteArrayToString(baseFile.SHA1));
|
SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, TextHelper.ByteArrayToString(baseFile.SHA1));
|
||||||
SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, TextHelper.ByteArrayToString(baseFile.SHA256));
|
SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, TextHelper.ByteArrayToString(baseFile.SHA256));
|
||||||
SetFieldValue<string?>(Models.Metadata.Rom.SHA384Key, TextHelper.ByteArrayToString(baseFile.SHA384));
|
SetFieldValue<string?>(Models.Metadata.Rom.SHA384Key, TextHelper.ByteArrayToString(baseFile.SHA384));
|
||||||
SetFieldValue<string?>(Models.Metadata.Rom.SHA512Key, TextHelper.ByteArrayToString(baseFile.SHA512));
|
SetFieldValue<string?>(Models.Metadata.Rom.SHA512Key, TextHelper.ByteArrayToString(baseFile.SHA512));
|
||||||
|
SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, baseFile.Size);
|
||||||
SetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
|
SetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Rom);
|
|
||||||
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
|
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
|
||||||
SetFieldValue<string?>(Models.Metadata.Rom.DateKey, baseFile.Date);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public Rom(Models.Metadata.Rom item) : base(item)
|
||||||
/// Create a Rom object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Rom(Models.Metadata.Rom item)
|
|
||||||
{
|
{
|
||||||
_internal = item;
|
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
|
||||||
|
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Rom);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Cloning Methods
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Rom()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Rom ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert Rom object to a BaseFile
|
/// Convert Rom object to a BaseFile
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a (usually WAV-formatted) sample to be included for use in the set
|
/// Represents a (usually WAV-formatted) sample to be included for use in the set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("sample"), XmlRoot("sample")]
|
[JsonObject("sample"), XmlRoot("sample")]
|
||||||
public class Sample : DatItem
|
public class Sample : DatItem<Models.Metadata.Sample>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Sample.NameKey);
|
protected override ItemType ItemType => ItemType.Sample;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Sample.NameKey, name);
|
protected override string? NameKey => Models.Metadata.Sample.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Sample() : base() { }
|
||||||
/// Create a default, empty Sample object
|
public Sample(Models.Metadata.Sample item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Sample()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Sample();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Sample);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Sample object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Sample(Models.Metadata.Sample item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Sample);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Sample()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Sample ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a single serials item
|
/// Represents a single serials item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("serials"), XmlRoot("serials")]
|
[JsonObject("serials"), XmlRoot("serials")]
|
||||||
public class Serials : DatItem
|
public sealed class Serials : DatItem
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
|||||||
30
SabreTools.DatItems/Formats/SharedFeat.cs
Normal file
30
SabreTools.DatItems/Formats/SharedFeat.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
using System.Xml.Serialization;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using SabreTools.Core;
|
||||||
|
|
||||||
|
namespace SabreTools.DatItems.Formats
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents one shared feature object
|
||||||
|
/// </summary>
|
||||||
|
[JsonObject("sharedfeat"), XmlRoot("sharedfeat")]
|
||||||
|
public sealed class SharedFeat : DatItem<Models.Metadata.SharedFeat>
|
||||||
|
{
|
||||||
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.SharedFeat;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.SharedFeat.NameKey;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
public SharedFeat() : base() { }
|
||||||
|
public SharedFeat(Models.Metadata.SharedFeat item) : base(item) { }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
using System.Xml.Serialization;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using SabreTools.Core;
|
|
||||||
|
|
||||||
namespace SabreTools.DatItems.Formats
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Represents one shared feature object
|
|
||||||
/// </summary>
|
|
||||||
[JsonObject("sharedfeat"), XmlRoot("sharedfeat")]
|
|
||||||
public class SharedFeature : DatItem
|
|
||||||
{
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.SharedFeat.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.SharedFeat.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a default, empty SharedFeature object
|
|
||||||
/// </summary>
|
|
||||||
public SharedFeature()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.SharedFeat();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SharedFeature);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a SharedFeature object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public SharedFeature(Models.Metadata.SharedFeat item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SharedFeature);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new SharedFeature()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.SharedFeat ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -8,10 +8,16 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents which Slot(s) is associated with a set
|
/// Represents which Slot(s) is associated with a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("slot"), XmlRoot("slot")]
|
[JsonObject("slot"), XmlRoot("slot")]
|
||||||
public class Slot : DatItem
|
public sealed class Slot : DatItem<Models.Metadata.Slot>
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override ItemType ItemType => ItemType.Slot;
|
||||||
|
|
||||||
|
/// <inheritdoc>/>
|
||||||
|
protected override string? NameKey => Models.Metadata.Slot.NameKey;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool SlotOptionsSpecified
|
public bool SlotOptionsSpecified
|
||||||
{
|
{
|
||||||
@@ -24,53 +30,10 @@ namespace SabreTools.DatItems.Formats
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.Slot.NameKey);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.Slot.NameKey, name);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public Slot() : base() { }
|
||||||
/// Create a default, empty Slot object
|
public Slot(Models.Metadata.Slot item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public Slot()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Slot();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Slot);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Slot object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Slot(Models.Metadata.Slot item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Slot);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new Slot()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Slot ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,55 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents one ListXML slotoption
|
/// Represents one ListXML slotoption
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("slotoption"), XmlRoot("slotoption")]
|
[JsonObject("slotoption"), XmlRoot("slotoption")]
|
||||||
public class SlotOption : DatItem
|
public sealed class SlotOption : DatItem<Models.Metadata.SlotOption>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.SlotOption.NameKey);
|
protected override ItemType ItemType => ItemType.SlotOption;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.SlotOption.NameKey, name);
|
protected override string? NameKey => Models.Metadata.SlotOption.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public SlotOption() : base() { }
|
||||||
/// Create a default, empty SlotOption object
|
public SlotOption(Models.Metadata.SlotOption item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public SlotOption()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.SlotOption();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SlotOption);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a SlotOption object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public SlotOption(Models.Metadata.SlotOption item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SlotOption);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new SlotOption()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.SlotOption ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,58 +7,23 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents which SoftwareList(s) is associated with a set
|
/// Represents which SoftwareList(s) is associated with a set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
|
||||||
/// TODO: Add new fields to documentation
|
|
||||||
/// </remarks>
|
|
||||||
[JsonObject("softwarelist"), XmlRoot("softwarelist")]
|
[JsonObject("softwarelist"), XmlRoot("softwarelist")]
|
||||||
public class SoftwareList : DatItem
|
public sealed class SoftwareList : DatItem<Models.Metadata.SoftwareList>
|
||||||
{
|
{
|
||||||
#region Accessors
|
#region Fields
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override string? GetName() => GetFieldValue<string>(Models.Metadata.SoftwareList.NameKey);
|
protected override ItemType ItemType => ItemType.SoftwareList;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc>/>
|
||||||
public override void SetName(string? name) => SetFieldValue(Models.Metadata.SoftwareList.NameKey, name);
|
protected override string? NameKey => Models.Metadata.SoftwareList.NameKey;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
public SoftwareList() : base() { }
|
||||||
/// Create a default, empty SoftwareList object
|
public SoftwareList(Models.Metadata.SoftwareList item) : base(item) { }
|
||||||
/// </summary>
|
|
||||||
public SoftwareList()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.SoftwareList();
|
|
||||||
|
|
||||||
SetName(string.Empty);
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SoftwareList);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a SoftwareList object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public SoftwareList(Models.Metadata.SoftwareList item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SoftwareList);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Cloning Methods
|
|
||||||
|
|
||||||
public override object Clone()
|
|
||||||
{
|
|
||||||
return new SoftwareList()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.SoftwareList ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,44 +8,22 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents the sound output for a machine
|
/// Represents the sound output for a machine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("sound"), XmlRoot("sound")]
|
[JsonObject("sound"), XmlRoot("sound")]
|
||||||
public class Sound : DatItem
|
public sealed class Sound : DatItem<Models.Metadata.Sound>
|
||||||
{
|
{
|
||||||
#region Constructors
|
#region Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc>/>
|
||||||
/// Create a default, empty Sound object
|
protected override ItemType ItemType => ItemType.Sound;
|
||||||
/// </summary>
|
|
||||||
public Sound()
|
|
||||||
{
|
|
||||||
_internal = new Models.Metadata.Sound();
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Sound);
|
/// <inheritdoc>/>
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
protected override string? NameKey => null;
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a Sound object from the internal model
|
|
||||||
/// </summary>
|
|
||||||
public Sound(Models.Metadata.Sound item)
|
|
||||||
{
|
|
||||||
_internal = item;
|
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Sound);
|
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Constructors
|
||||||
|
|
||||||
/// <inheritdoc/>
|
public Sound() : base() { }
|
||||||
public override object Clone()
|
public Sound(Models.Metadata.Sound item) : base(item) { }
|
||||||
{
|
|
||||||
return new Sound()
|
|
||||||
{
|
|
||||||
_internal = this._internal?.Clone() as Models.Metadata.Sound ?? [],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
/// Represents a single source details item
|
/// Represents a single source details item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonObject("source_details"), XmlRoot("source_details")]
|
[JsonObject("source_details"), XmlRoot("source_details")]
|
||||||
public class SourceDetails : DatItem
|
public sealed class SourceDetails : DatItem
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
|||||||
@@ -295,8 +295,8 @@ namespace SabreTools.Filtering
|
|||||||
|
|
||||||
// Get all device reference names from the current machine
|
// Get all device reference names from the current machine
|
||||||
List<string?> deviceReferences = datFile.Items[machine]!
|
List<string?> deviceReferences = datFile.Items[machine]!
|
||||||
.Where(i => i is DeviceReference)
|
.Where(i => i is DeviceRef)
|
||||||
.Select(i => i as DeviceReference)
|
.Select(i => i as DeviceRef)
|
||||||
.Select(dr => dr!.GetName())
|
.Select(dr => dr!.GetName())
|
||||||
.Distinct()
|
.Distinct()
|
||||||
.ToList();
|
.ToList();
|
||||||
@@ -328,8 +328,8 @@ namespace SabreTools.Filtering
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
newDeviceReferences.AddRange(devItems
|
newDeviceReferences.AddRange(devItems
|
||||||
.Where(i => i is DeviceReference)
|
.Where(i => i is DeviceRef)
|
||||||
.Select(i => (i as DeviceReference)!.GetName()!));
|
.Select(i => (i as DeviceRef)!.GetName()!));
|
||||||
|
|
||||||
// Set new machine information and add to the current machine
|
// Set new machine information and add to the current machine
|
||||||
DatItem copyFrom = datFile.Items[machine]![0];
|
DatItem copyFrom = datFile.Items[machine]![0];
|
||||||
@@ -354,7 +354,7 @@ namespace SabreTools.Filtering
|
|||||||
{
|
{
|
||||||
if (!deviceReferences.Contains(deviceReference))
|
if (!deviceReferences.Contains(deviceReference))
|
||||||
{
|
{
|
||||||
var deviceRef = new DeviceReference();
|
var deviceRef = new DeviceRef();
|
||||||
deviceRef.SetName(deviceReference);
|
deviceRef.SetName(deviceReference);
|
||||||
datFile.Items[machine]!.Add(deviceRef);
|
datFile.Items[machine]!.Add(deviceRef);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,8 +179,8 @@ namespace SabreTools.Test.Core
|
|||||||
[InlineData("control", ItemType.Control)]
|
[InlineData("control", ItemType.Control)]
|
||||||
[InlineData("dataarea", ItemType.DataArea)]
|
[InlineData("dataarea", ItemType.DataArea)]
|
||||||
[InlineData("device", ItemType.Device)]
|
[InlineData("device", ItemType.Device)]
|
||||||
[InlineData("deviceref", ItemType.DeviceReference)]
|
[InlineData("deviceref", ItemType.DeviceRef)]
|
||||||
[InlineData("device_ref", ItemType.DeviceReference)]
|
[InlineData("device_ref", ItemType.DeviceRef)]
|
||||||
[InlineData("diplocation", ItemType.DipLocation)]
|
[InlineData("diplocation", ItemType.DipLocation)]
|
||||||
[InlineData("dipswitch", ItemType.DipSwitch)]
|
[InlineData("dipswitch", ItemType.DipSwitch)]
|
||||||
[InlineData("dipvalue", ItemType.DipValue)]
|
[InlineData("dipvalue", ItemType.DipValue)]
|
||||||
@@ -207,10 +207,10 @@ namespace SabreTools.Test.Core
|
|||||||
[InlineData("rom", ItemType.Rom)]
|
[InlineData("rom", ItemType.Rom)]
|
||||||
[InlineData("sample", ItemType.Sample)]
|
[InlineData("sample", ItemType.Sample)]
|
||||||
[InlineData("serials", ItemType.Serials)]
|
[InlineData("serials", ItemType.Serials)]
|
||||||
[InlineData("sharedfeat", ItemType.SharedFeature)]
|
[InlineData("sharedfeat", ItemType.SharedFeat)]
|
||||||
[InlineData("shared_feat", ItemType.SharedFeature)]
|
[InlineData("shared_feat", ItemType.SharedFeat)]
|
||||||
[InlineData("sharedfeature", ItemType.SharedFeature)]
|
[InlineData("sharedfeature", ItemType.SharedFeat)]
|
||||||
[InlineData("shared_feature", ItemType.SharedFeature)]
|
[InlineData("shared_feature", ItemType.SharedFeat)]
|
||||||
[InlineData("slot", ItemType.Slot)]
|
[InlineData("slot", ItemType.Slot)]
|
||||||
[InlineData("slotoption", ItemType.SlotOption)]
|
[InlineData("slotoption", ItemType.SlotOption)]
|
||||||
[InlineData("slot_option", ItemType.SlotOption)]
|
[InlineData("slot_option", ItemType.SlotOption)]
|
||||||
@@ -548,7 +548,7 @@ namespace SabreTools.Test.Core
|
|||||||
[InlineData(ItemType.Control, "control")]
|
[InlineData(ItemType.Control, "control")]
|
||||||
[InlineData(ItemType.DataArea, "dataarea")]
|
[InlineData(ItemType.DataArea, "dataarea")]
|
||||||
[InlineData(ItemType.Device, "device")]
|
[InlineData(ItemType.Device, "device")]
|
||||||
[InlineData(ItemType.DeviceReference, "device_ref")]
|
[InlineData(ItemType.DeviceRef, "device_ref")]
|
||||||
[InlineData(ItemType.DipLocation, "diplocation")]
|
[InlineData(ItemType.DipLocation, "diplocation")]
|
||||||
[InlineData(ItemType.DipSwitch, "dipswitch")]
|
[InlineData(ItemType.DipSwitch, "dipswitch")]
|
||||||
[InlineData(ItemType.DipValue, "dipvalue")]
|
[InlineData(ItemType.DipValue, "dipvalue")]
|
||||||
@@ -572,7 +572,7 @@ namespace SabreTools.Test.Core
|
|||||||
[InlineData(ItemType.Rom, "rom")]
|
[InlineData(ItemType.Rom, "rom")]
|
||||||
[InlineData(ItemType.Sample, "sample")]
|
[InlineData(ItemType.Sample, "sample")]
|
||||||
[InlineData(ItemType.Serials, "serials")]
|
[InlineData(ItemType.Serials, "serials")]
|
||||||
[InlineData(ItemType.SharedFeature, "sharedfeat")]
|
[InlineData(ItemType.SharedFeat, "sharedfeat")]
|
||||||
[InlineData(ItemType.Slot, "slot")]
|
[InlineData(ItemType.Slot, "slot")]
|
||||||
[InlineData(ItemType.SlotOption, "slotoption")]
|
[InlineData(ItemType.SlotOption, "slotoption")]
|
||||||
[InlineData(ItemType.SoftwareList, "softwarelist")]
|
[InlineData(ItemType.SoftwareList, "softwarelist")]
|
||||||
|
|||||||
Reference in New Issue
Block a user