mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-04-05 22:01:33 +00:00
Add some common Metadata objects for NIDB
This commit is contained in:
@@ -52,13 +52,17 @@ namespace SabreTools.Data.Extensions
|
||||
Port => null,
|
||||
RamOption => self.ReadString(RamOption.NameKey),
|
||||
Release => self.ReadString(Release.NameKey),
|
||||
ReleaseDetails => null,
|
||||
Rom => self.ReadString(Rom.NameKey),
|
||||
Sample => self.ReadString(Sample.NameKey),
|
||||
Serials => null,
|
||||
SharedFeat => self.ReadString(SharedFeat.NameKey),
|
||||
Slot => self.ReadString(Slot.NameKey),
|
||||
SlotOption => self.ReadString(SlotOption.NameKey),
|
||||
SoftwareList => self.ReadString(SoftwareList.NameKey),
|
||||
Sound => null,
|
||||
SourceDetails => null,
|
||||
Video => null,
|
||||
|
||||
_ => null,
|
||||
};
|
||||
@@ -106,13 +110,17 @@ namespace SabreTools.Data.Extensions
|
||||
case Port: break;
|
||||
case RamOption: self[RamOption.NameKey] = name; break;
|
||||
case Release: self[Release.NameKey] = name; break;
|
||||
case ReleaseDetails: break;
|
||||
case Rom: self[Rom.NameKey] = name; break;
|
||||
case Sample: self[Sample.NameKey] = name; break;
|
||||
case Serials: break;
|
||||
case SharedFeat: self[SharedFeat.NameKey] = name; break;
|
||||
case Slot: self[Slot.NameKey] = name; break;
|
||||
case SlotOption: self[SlotOption.NameKey] = name; break;
|
||||
case SoftwareList: self[SoftwareList.NameKey] = name; break;
|
||||
case Sound: break;
|
||||
case SourceDetails: break;
|
||||
case Video: break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
@@ -8,9 +8,105 @@ namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
#region Keys
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string NumberKey = "number";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string CloneKey = "clone";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string RegParentKey = "regparent";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string MergeOfKey = "mergeof";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string MergeNameKey = "mergename";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string NameKey = "name";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string NameAltKey = "name_alt";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string RegionKey = "region";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string LanguagesKey = "languages";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string ShowLangKey = "showlang";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string LangCheckedKey = "langchecked";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string Version1Key = "version1";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string Version2Key = "version2";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string DevStatusKey = "devstatus";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string AdditionalKey = "additional";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string Special1Key = "special1";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string Special2Key = "special2";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string AltKey = "alt";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string GameId1Key = "gameid1";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string GameId2Key = "gameid2";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string DescriptionKey = "description";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string BiosKey = "bios";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string LicensedKey = "licensed";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string PirateKey = "pirate";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string PhysicalKey = "physical";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string CompleteKey = "complete";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string AdultKey = "adult";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string DatKey = "dat";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string ListedKey = "listed";
|
||||
|
||||
/// <remarks>byte, No-Intro DB extension</remarks>
|
||||
public const string PrivateKey = "private";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string StickyNoteKey = "stickynote";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string DatterNoteKey = "datternote";
|
||||
|
||||
/// <remarks>string, No-Intro DB extension</remarks>
|
||||
public const string CategoriesKey = "categories";
|
||||
|
||||
#endregion
|
||||
|
||||
public Archive() => Type = ItemType.Archive;
|
||||
|
||||
@@ -288,14 +288,17 @@ namespace SabreTools.Data.Models.Metadata
|
||||
Port,
|
||||
RamOption,
|
||||
Release,
|
||||
ReleaseDetails,
|
||||
Rom,
|
||||
Sample,
|
||||
Serials,
|
||||
SharedFeat,
|
||||
Slot,
|
||||
SlotOption,
|
||||
Software,
|
||||
SoftwareList,
|
||||
Sound,
|
||||
SourceDetails,
|
||||
Video,
|
||||
|
||||
/// <summary>
|
||||
|
||||
63
SabreTools.Data.Models/Metadata/ReleaseDetails.cs
Normal file
63
SabreTools.Data.Models/Metadata/ReleaseDetails.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
[JsonObject("release_details"), XmlRoot("release_details")]
|
||||
public class ReleaseDetails : DatItem
|
||||
{
|
||||
#region Keys
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string IdKey = "id";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string AppendToNumberKey = "appendtonumber";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string DateKey = "date";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string OriginalFormatKey = "originalformat";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string GroupKey = "group";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string DirNameKey = "dirname";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string NfoNameKey = "nfoname";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string NfoSizeKey = "nfosize";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string NfoCRCKey = "nfocrc";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string ArchiveNameKey = "archivename";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string RomInfoKey = "rominfo";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string CategoryKey = "category";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string CommentKey = "comment";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string ToolKey = "tool";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string RegionKey = "region";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string OriginKey = "origin";
|
||||
|
||||
#endregion
|
||||
|
||||
public ReleaseDetails() => Type = ItemType.ReleaseDetails;
|
||||
}
|
||||
}
|
||||
57
SabreTools.Data.Models/Metadata/Serials.cs
Normal file
57
SabreTools.Data.Models/Metadata/Serials.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
[JsonObject("serials"), XmlRoot("serials")]
|
||||
public class Serials : DatItem
|
||||
{
|
||||
#region Keys
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string MediaSerial1Key = "mediaserial1";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string MediaSerial2Key = "mediaserial2";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string MediaSerial3Key = "mediaserial3";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string PCBSerialKey = "pcbserial";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string RomChipSerial1Key = "romchipserial1";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string RomChipSerial2Key = "romchipserial2";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string LockoutSerialKey = "lockoutserial";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string SaveChipSerialKey = "savechipserial";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string ChipSerialKey = "chipserial";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string BoxSerialKey = "boxserial";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string MediaStampKey = "mediastamp";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string BoxBarcodeKey = "boxbarcode";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string DigitalSerial1Key = "digitalserial1";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string DigitalSerial2Key = "digitalserial2";
|
||||
|
||||
#endregion
|
||||
|
||||
public Serials() => Type = ItemType.Serials;
|
||||
}
|
||||
}
|
||||
87
SabreTools.Data.Models/Metadata/SourceDetails.cs
Normal file
87
SabreTools.Data.Models/Metadata/SourceDetails.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
[JsonObject("source_details"), XmlRoot("source_details")]
|
||||
public class SourceDetails : DatItem
|
||||
{
|
||||
#region Keys
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string IdKey = "id";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string AppendToNumberKey = "appendtonumber";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string SectionKey = "section";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string RomInfoKey = "rominfo";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string DumpDateKey = "dumpdate";
|
||||
|
||||
/// <remarks>byte</remarks>
|
||||
public const string DumpDateInfoKey = "dumpdateinfo";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string ReleaseDateKey = "releasedate";
|
||||
|
||||
/// <remarks>byte</remarks>
|
||||
public const string ReleaseDateInfoKey = "releasedateinfo";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string DumperKey = "dumper";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string ProjectKey = "project";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string OriginalFormatKey = "originalformat";
|
||||
|
||||
/// <remarks>byte</remarks>
|
||||
public const string NodumpKey = "nodump";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string ToolKey = "tool";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string OriginKey = "origin";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string Comment1Key = "comment1";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string Comment2Key = "comment2";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string Link1Key = "link1";
|
||||
|
||||
/// <remarks>byte</remarks>
|
||||
public const string Link1PublicKey = "link1public";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string Link2Key = "link2";
|
||||
|
||||
/// <remarks>byte</remarks>
|
||||
public const string Link2PublicKey = "link2public";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string Link3Key = "link3";
|
||||
|
||||
/// <remarks>byte</remarks>
|
||||
public const string Link3PublicKey = "link3public";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string RegionKey = "region";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string MediaTitleKey = "mediatitle";
|
||||
|
||||
#endregion
|
||||
|
||||
public SourceDetails() => Type = ItemType.SourceDetails;
|
||||
}
|
||||
}
|
||||
@@ -354,7 +354,39 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
{
|
||||
return new Data.Models.Metadata.Archive
|
||||
{
|
||||
[Data.Models.Metadata.Archive.NumberKey] = "number",
|
||||
[Data.Models.Metadata.Archive.CloneKey] = "clone",
|
||||
[Data.Models.Metadata.Archive.RegParentKey] = "regparent",
|
||||
[Data.Models.Metadata.Archive.MergeOfKey] = "mergeof",
|
||||
[Data.Models.Metadata.Archive.MergeNameKey] = "mergename",
|
||||
[Data.Models.Metadata.Archive.NameKey] = "name",
|
||||
[Data.Models.Metadata.Archive.NameAltKey] = "name_alt",
|
||||
[Data.Models.Metadata.Archive.RegionKey] = "region",
|
||||
[Data.Models.Metadata.Archive.LanguagesKey] = "languages",
|
||||
[Data.Models.Metadata.Archive.ShowLangKey] = "showlang",
|
||||
[Data.Models.Metadata.Archive.LangCheckedKey] = "langchecked",
|
||||
[Data.Models.Metadata.Archive.Version1Key] = "version1",
|
||||
[Data.Models.Metadata.Archive.Version2Key] = "version2",
|
||||
[Data.Models.Metadata.Archive.DevStatusKey] = "devstatus",
|
||||
[Data.Models.Metadata.Archive.AdditionalKey] = "additional",
|
||||
[Data.Models.Metadata.Archive.Special1Key] = "special1",
|
||||
[Data.Models.Metadata.Archive.Special2Key] = "special2",
|
||||
[Data.Models.Metadata.Archive.AltKey] = "alt",
|
||||
[Data.Models.Metadata.Archive.GameId1Key] = "gameid1",
|
||||
[Data.Models.Metadata.Archive.GameId2Key] = "gameid2",
|
||||
[Data.Models.Metadata.Archive.DescriptionKey] = "description",
|
||||
[Data.Models.Metadata.Archive.BiosKey] = "bios",
|
||||
[Data.Models.Metadata.Archive.LicensedKey] = "licensed",
|
||||
[Data.Models.Metadata.Archive.PirateKey] = "pirate",
|
||||
[Data.Models.Metadata.Archive.PhysicalKey] = "physical",
|
||||
[Data.Models.Metadata.Archive.CompleteKey] = "complete",
|
||||
[Data.Models.Metadata.Archive.AdultKey] = "adult",
|
||||
[Data.Models.Metadata.Archive.DatKey] = "dat",
|
||||
[Data.Models.Metadata.Archive.ListedKey] = "listed",
|
||||
[Data.Models.Metadata.Archive.PrivateKey] = "private",
|
||||
[Data.Models.Metadata.Archive.StickyNoteKey] = "stickynote",
|
||||
[Data.Models.Metadata.Archive.DatterNoteKey] = "datternote",
|
||||
[Data.Models.Metadata.Archive.CategoriesKey] = "categories",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -711,6 +743,29 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
};
|
||||
}
|
||||
|
||||
private static Data.Models.Metadata.ReleaseDetails CreateMetadataReleaseDetails()
|
||||
{
|
||||
return new Data.Models.Metadata.ReleaseDetails
|
||||
{
|
||||
[Data.Models.Metadata.ReleaseDetails.IdKey] = "id",
|
||||
[Data.Models.Metadata.ReleaseDetails.AppendToNumberKey] = "appendtonumber",
|
||||
[Data.Models.Metadata.ReleaseDetails.DateKey] = "date",
|
||||
[Data.Models.Metadata.ReleaseDetails.OriginalFormatKey] = "originalformat",
|
||||
[Data.Models.Metadata.ReleaseDetails.GroupKey] = "group",
|
||||
[Data.Models.Metadata.ReleaseDetails.DirNameKey] = "dirname",
|
||||
[Data.Models.Metadata.ReleaseDetails.NfoNameKey] = "nfoname",
|
||||
[Data.Models.Metadata.ReleaseDetails.NfoSizeKey] = "nfosize",
|
||||
[Data.Models.Metadata.ReleaseDetails.NfoCRCKey] = "nfocrc",
|
||||
[Data.Models.Metadata.ReleaseDetails.ArchiveNameKey] = "archivename",
|
||||
[Data.Models.Metadata.ReleaseDetails.RomInfoKey] = "rominfo",
|
||||
[Data.Models.Metadata.ReleaseDetails.CategoryKey] = "category",
|
||||
[Data.Models.Metadata.ReleaseDetails.CommentKey] = "comment",
|
||||
[Data.Models.Metadata.ReleaseDetails.ToolKey] = "tool",
|
||||
[Data.Models.Metadata.ReleaseDetails.RegionKey] = "region",
|
||||
[Data.Models.Metadata.ReleaseDetails.OriginKey] = "origin",
|
||||
};
|
||||
}
|
||||
|
||||
private static Data.Models.Metadata.Rom CreateMetadataRom()
|
||||
{
|
||||
return new Data.Models.Metadata.Rom
|
||||
@@ -822,6 +877,27 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
};
|
||||
}
|
||||
|
||||
private static Data.Models.Metadata.Serials CreateMetadataSerials()
|
||||
{
|
||||
return new Data.Models.Metadata.Serials
|
||||
{
|
||||
[Data.Models.Metadata.Serials.MediaSerial1Key] = "mediaserial1",
|
||||
[Data.Models.Metadata.Serials.MediaSerial2Key] = "mediaserial2",
|
||||
[Data.Models.Metadata.Serials.MediaSerial3Key] = "mediaserial3",
|
||||
[Data.Models.Metadata.Serials.PCBSerialKey] = "pcbserial",
|
||||
[Data.Models.Metadata.Serials.RomChipSerial1Key] = "romchipserial1",
|
||||
[Data.Models.Metadata.Serials.RomChipSerial2Key] = "romchipserial2",
|
||||
[Data.Models.Metadata.Serials.LockoutSerialKey] = "lockoutserial",
|
||||
[Data.Models.Metadata.Serials.SaveChipSerialKey] = "savechipserial",
|
||||
[Data.Models.Metadata.Serials.ChipSerialKey] = "chipserial",
|
||||
[Data.Models.Metadata.Serials.BoxSerialKey] = "boxserial",
|
||||
[Data.Models.Metadata.Serials.MediaStampKey] = "mediastamp",
|
||||
[Data.Models.Metadata.Serials.BoxBarcodeKey] = "boxbarcode",
|
||||
[Data.Models.Metadata.Serials.DigitalSerial1Key] = "digitalserial1",
|
||||
[Data.Models.Metadata.Serials.DigitalSerial2Key] = "digitalserial2",
|
||||
};
|
||||
}
|
||||
|
||||
private static Data.Models.Metadata.SharedFeat CreateMetadataSharedFeat()
|
||||
{
|
||||
return new Data.Models.Metadata.SharedFeat
|
||||
@@ -889,6 +965,37 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
};
|
||||
}
|
||||
|
||||
private static Data.Models.Metadata.SourceDetails CreateMetadataSourceDetails()
|
||||
{
|
||||
return new Data.Models.Metadata.SourceDetails
|
||||
{
|
||||
[Data.Models.Metadata.SourceDetails.IdKey] = "id",
|
||||
[Data.Models.Metadata.SourceDetails.AppendToNumberKey] = "appendtonumber",
|
||||
[Data.Models.Metadata.SourceDetails.SectionKey] = "section",
|
||||
[Data.Models.Metadata.SourceDetails.RomInfoKey] = "rominfo",
|
||||
[Data.Models.Metadata.SourceDetails.DumpDateKey] = "dumpdate",
|
||||
[Data.Models.Metadata.SourceDetails.DumpDateInfoKey] = "dumpdateinfo",
|
||||
[Data.Models.Metadata.SourceDetails.ReleaseDateKey] = "releasedate",
|
||||
[Data.Models.Metadata.SourceDetails.ReleaseDateInfoKey] = "releasedateinfo",
|
||||
[Data.Models.Metadata.SourceDetails.DumperKey] = "dumper",
|
||||
[Data.Models.Metadata.SourceDetails.ProjectKey] = "project",
|
||||
[Data.Models.Metadata.SourceDetails.OriginalFormatKey] = "originalformat",
|
||||
[Data.Models.Metadata.SourceDetails.NodumpKey] = "nodump",
|
||||
[Data.Models.Metadata.SourceDetails.ToolKey] = "tool",
|
||||
[Data.Models.Metadata.SourceDetails.OriginKey] = "origin",
|
||||
[Data.Models.Metadata.SourceDetails.Comment1Key] = "comment1",
|
||||
[Data.Models.Metadata.SourceDetails.Comment2Key] = "comment2",
|
||||
[Data.Models.Metadata.SourceDetails.Link1Key] = "link1",
|
||||
[Data.Models.Metadata.SourceDetails.Link1PublicKey] = "link1public",
|
||||
[Data.Models.Metadata.SourceDetails.Link2Key] = "link2",
|
||||
[Data.Models.Metadata.SourceDetails.Link2PublicKey] = "link2public",
|
||||
[Data.Models.Metadata.SourceDetails.Link3Key] = "link3",
|
||||
[Data.Models.Metadata.SourceDetails.Link3PublicKey] = "link3public",
|
||||
[Data.Models.Metadata.SourceDetails.RegionKey] = "region",
|
||||
[Data.Models.Metadata.SourceDetails.MediaTitleKey] = "mediatitle",
|
||||
};
|
||||
}
|
||||
|
||||
private static Data.Models.Logiqx.Trurip CreateMetadataTrurip()
|
||||
{
|
||||
return new Data.Models.Logiqx.Trurip
|
||||
|
||||
@@ -635,7 +635,39 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
private static void ValidateMetadataArchive(Data.Models.Metadata.Archive? archive)
|
||||
{
|
||||
Assert.NotNull(archive);
|
||||
Assert.Equal("number", archive.ReadString(Data.Models.Metadata.Archive.NumberKey));
|
||||
Assert.Equal("clone", archive.ReadString(Data.Models.Metadata.Archive.CloneKey));
|
||||
Assert.Equal("regparent", archive.ReadString(Data.Models.Metadata.Archive.RegParentKey));
|
||||
Assert.Equal("mergeof", archive.ReadString(Data.Models.Metadata.Archive.MergeOfKey));
|
||||
Assert.Equal("mergename", archive.ReadString(Data.Models.Metadata.Archive.MergeNameKey));
|
||||
Assert.Equal("name", archive.ReadString(Data.Models.Metadata.Archive.NameKey));
|
||||
Assert.Equal("name_alt", archive.ReadString(Data.Models.Metadata.Archive.NameAltKey));
|
||||
Assert.Equal("region", archive.ReadString(Data.Models.Metadata.Archive.RegionKey));
|
||||
Assert.Equal("languages", archive.ReadString(Data.Models.Metadata.Archive.LanguagesKey));
|
||||
Assert.Equal("showlang", archive.ReadString(Data.Models.Metadata.Archive.ShowLangKey));
|
||||
Assert.Equal("langchecked", archive.ReadString(Data.Models.Metadata.Archive.LangCheckedKey));
|
||||
Assert.Equal("version1", archive.ReadString(Data.Models.Metadata.Archive.Version1Key));
|
||||
Assert.Equal("version2", archive.ReadString(Data.Models.Metadata.Archive.Version2Key));
|
||||
Assert.Equal("devstatus", archive.ReadString(Data.Models.Metadata.Archive.DevStatusKey));
|
||||
Assert.Equal("additional", archive.ReadString(Data.Models.Metadata.Archive.AdditionalKey));
|
||||
Assert.Equal("special1", archive.ReadString(Data.Models.Metadata.Archive.Special1Key));
|
||||
Assert.Equal("special2", archive.ReadString(Data.Models.Metadata.Archive.Special2Key));
|
||||
Assert.Equal("alt", archive.ReadString(Data.Models.Metadata.Archive.AltKey));
|
||||
Assert.Equal("gameid1", archive.ReadString(Data.Models.Metadata.Archive.GameId1Key));
|
||||
Assert.Equal("gameid2", archive.ReadString(Data.Models.Metadata.Archive.GameId2Key));
|
||||
Assert.Equal("description", archive.ReadString(Data.Models.Metadata.Archive.DescriptionKey));
|
||||
Assert.Equal("bios", archive.ReadString(Data.Models.Metadata.Archive.BiosKey));
|
||||
Assert.Equal("licensed", archive.ReadString(Data.Models.Metadata.Archive.LicensedKey));
|
||||
Assert.Equal("pirate", archive.ReadString(Data.Models.Metadata.Archive.PirateKey));
|
||||
Assert.Equal("physical", archive.ReadString(Data.Models.Metadata.Archive.PhysicalKey));
|
||||
Assert.Equal("complete", archive.ReadString(Data.Models.Metadata.Archive.CompleteKey));
|
||||
Assert.Equal("adult", archive.ReadString(Data.Models.Metadata.Archive.AdultKey));
|
||||
Assert.Equal("dat", archive.ReadString(Data.Models.Metadata.Archive.DatKey));
|
||||
Assert.Equal("listed", archive.ReadString(Data.Models.Metadata.Archive.ListedKey));
|
||||
Assert.Equal("private", archive.ReadString(Data.Models.Metadata.Archive.PrivateKey));
|
||||
Assert.Equal("stickynote", archive.ReadString(Data.Models.Metadata.Archive.StickyNoteKey));
|
||||
Assert.Equal("datternote", archive.ReadString(Data.Models.Metadata.Archive.DatterNoteKey));
|
||||
Assert.Equal("categories", archive.ReadString(Data.Models.Metadata.Archive.CategoriesKey));
|
||||
}
|
||||
|
||||
private static void ValidateMetadataBiosSet(Data.Models.Metadata.BiosSet? biosSet)
|
||||
@@ -979,6 +1011,27 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("region", release.ReadString(Data.Models.Metadata.Release.RegionKey));
|
||||
}
|
||||
|
||||
private static void ValidateMetadataReleaseDetails(Data.Models.Metadata.ReleaseDetails? releaseDetails)
|
||||
{
|
||||
Assert.NotNull(releaseDetails);
|
||||
Assert.Equal("id", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.IdKey));
|
||||
Assert.Equal("appendtonumber", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.AppendToNumberKey));
|
||||
Assert.Equal("date", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.DateKey));
|
||||
Assert.Equal("originalformat", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.OriginalFormatKey));
|
||||
Assert.Equal("group", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.GroupKey));
|
||||
Assert.Equal("dirname", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.DirNameKey));
|
||||
Assert.Equal("nfoname", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.NfoNameKey));
|
||||
Assert.Equal("nfosize", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.NfoSizeKey));
|
||||
Assert.Equal("nfocrc", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.NfoCRCKey));
|
||||
Assert.Equal("archivename", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.ArchiveNameKey));
|
||||
Assert.Equal("rominfo", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.RomInfoKey));
|
||||
Assert.Equal("category", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.CategoryKey));
|
||||
Assert.Equal("comment", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.CommentKey));
|
||||
Assert.Equal("tool", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.ToolKey));
|
||||
Assert.Equal("region", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.RegionKey));
|
||||
Assert.Equal("origin", releaseDetails.ReadString(Data.Models.Metadata.ReleaseDetails.OriginKey));
|
||||
}
|
||||
|
||||
private static void ValidateMetadataRom(Data.Models.Metadata.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
@@ -1086,6 +1139,25 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("name", sample.ReadString(Data.Models.Metadata.Sample.NameKey));
|
||||
}
|
||||
|
||||
private static void ValidateMetadataSerials(Data.Models.Metadata.Serials? serials)
|
||||
{
|
||||
Assert.NotNull(serials);
|
||||
Assert.Equal("mediaserial1", serials.ReadString(Data.Models.Metadata.Serials.MediaSerial1Key));
|
||||
Assert.Equal("mediaserial2", serials.ReadString(Data.Models.Metadata.Serials.MediaSerial2Key));
|
||||
Assert.Equal("mediaserial3", serials.ReadString(Data.Models.Metadata.Serials.MediaSerial3Key));
|
||||
Assert.Equal("pcbserial", serials.ReadString(Data.Models.Metadata.Serials.PCBSerialKey));
|
||||
Assert.Equal("romchipserial1", serials.ReadString(Data.Models.Metadata.Serials.RomChipSerial1Key));
|
||||
Assert.Equal("romchipserial2", serials.ReadString(Data.Models.Metadata.Serials.RomChipSerial2Key));
|
||||
Assert.Equal("lockoutserial", serials.ReadString(Data.Models.Metadata.Serials.LockoutSerialKey));
|
||||
Assert.Equal("savechipserial", serials.ReadString(Data.Models.Metadata.Serials.SaveChipSerialKey));
|
||||
Assert.Equal("chipserial", serials.ReadString(Data.Models.Metadata.Serials.ChipSerialKey));
|
||||
Assert.Equal("boxserial", serials.ReadString(Data.Models.Metadata.Serials.BoxSerialKey));
|
||||
Assert.Equal("mediastamp", serials.ReadString(Data.Models.Metadata.Serials.MediaStampKey));
|
||||
Assert.Equal("boxbarcode", serials.ReadString(Data.Models.Metadata.Serials.BoxBarcodeKey));
|
||||
Assert.Equal("digitalserial1", serials.ReadString(Data.Models.Metadata.Serials.DigitalSerial1Key));
|
||||
Assert.Equal("digitalserial2", serials.ReadString(Data.Models.Metadata.Serials.DigitalSerial2Key));
|
||||
}
|
||||
|
||||
private static void ValidateMetadataSharedFeat(Data.Models.Metadata.SharedFeat? sharedFeat)
|
||||
{
|
||||
Assert.NotNull(sharedFeat);
|
||||
@@ -1131,6 +1203,35 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal(12345, sound.ReadLong(Data.Models.Metadata.Sound.ChannelsKey));
|
||||
}
|
||||
|
||||
private static void ValidateMetadataSourceDetails(Data.Models.Metadata.SourceDetails? sourceDetails)
|
||||
{
|
||||
Assert.NotNull(sourceDetails);
|
||||
Assert.Equal("id", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.IdKey));
|
||||
Assert.Equal("appendtonumber", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.AppendToNumberKey));
|
||||
Assert.Equal("section", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.SectionKey));
|
||||
Assert.Equal("rominfo", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.RomInfoKey));
|
||||
Assert.Equal("dumpdate", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.DumpDateKey));
|
||||
Assert.Equal("dumpdateinfo", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.DumpDateInfoKey));
|
||||
Assert.Equal("releasedate", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.ReleaseDateKey));
|
||||
Assert.Equal("releasedateinfo", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.ReleaseDateInfoKey));
|
||||
Assert.Equal("dumper", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.DumperKey));
|
||||
Assert.Equal("project", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.ProjectKey));
|
||||
Assert.Equal("originalformat", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.OriginalFormatKey));
|
||||
Assert.Equal("nodump", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.NodumpKey));
|
||||
Assert.Equal("tool", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.ToolKey));
|
||||
Assert.Equal("origin", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.OriginKey));
|
||||
Assert.Equal("comment1", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.Comment1Key));
|
||||
Assert.Equal("comment2", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.Comment2Key));
|
||||
Assert.Equal("link1", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.Link1Key));
|
||||
Assert.Equal("link1public", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.Link1PublicKey));
|
||||
Assert.Equal("link2", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.Link2Key));
|
||||
Assert.Equal("link2public", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.Link2PublicKey));
|
||||
Assert.Equal("link3", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.Link3Key));
|
||||
Assert.Equal("link3public", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.Link3PublicKey));
|
||||
Assert.Equal("region", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.RegionKey));
|
||||
Assert.Equal("mediatitle", sourceDetails.ReadString(Data.Models.Metadata.SourceDetails.MediaTitleKey));
|
||||
}
|
||||
|
||||
private static void ValidateMetadataTrurip(Data.Models.Logiqx.Trurip? trurip)
|
||||
{
|
||||
Assert.NotNull(trurip);
|
||||
|
||||
@@ -45,6 +45,7 @@ namespace SabreTools.Metadata.DatItems
|
||||
[XmlInclude(typeof(Port))]
|
||||
[XmlInclude(typeof(RamOption))]
|
||||
[XmlInclude(typeof(Release))]
|
||||
[XmlInclude(typeof(ReleaseDetails))]
|
||||
[XmlInclude(typeof(Rom))]
|
||||
[XmlInclude(typeof(Sample))]
|
||||
[XmlInclude(typeof(SharedFeat))]
|
||||
@@ -52,6 +53,7 @@ namespace SabreTools.Metadata.DatItems
|
||||
[XmlInclude(typeof(SlotOption))]
|
||||
[XmlInclude(typeof(SoftwareList))]
|
||||
[XmlInclude(typeof(Sound))]
|
||||
[XmlInclude(typeof(SourceDetails))]
|
||||
public abstract class DatItem : ModelBackedItem<Data.Models.Metadata.DatItem>, IEquatable<DatItem>, IComparable<DatItem>, ICloneable
|
||||
{
|
||||
#region Constants
|
||||
|
||||
@@ -1,188 +1,39 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Data.Extensions;
|
||||
|
||||
// TODO: Add item mappings for all fields
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a single release details item
|
||||
/// </summary>
|
||||
[JsonObject("release_details"), XmlRoot("release_details")]
|
||||
public sealed class ReleaseDetails : DatItem
|
||||
public sealed class ReleaseDetails : DatItem<Data.Models.Metadata.ReleaseDetails>
|
||||
{
|
||||
#region Fields
|
||||
|
||||
/// <inheritdoc>/>
|
||||
protected override ItemType ItemType => ItemType.ReleaseDetails;
|
||||
|
||||
/// <summary>
|
||||
/// Id value
|
||||
/// </summary>
|
||||
/// <remarks>TODO: Is this required?</remarks>
|
||||
[JsonProperty("id", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory name value
|
||||
/// </summary>
|
||||
[JsonProperty("dirname", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("dirname")]
|
||||
public string? DirName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rom info value
|
||||
/// </summary>
|
||||
[JsonProperty("rominfo", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("rominfo")]
|
||||
public string? RomInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Category value
|
||||
/// </summary>
|
||||
[JsonProperty("category", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("category")]
|
||||
public string? Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// NFO name value
|
||||
/// </summary>
|
||||
[JsonProperty("nfoname", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("nfoname")]
|
||||
public string? NfoName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// NFO size value
|
||||
/// </summary>
|
||||
[JsonProperty("nfosize", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("nfosize")]
|
||||
public long? NfoSize { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// NFO CRC value
|
||||
/// </summary>
|
||||
[JsonProperty("nfocrc", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("nfocrc")]
|
||||
public string? NfoCrc { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Archive name value
|
||||
/// </summary>
|
||||
[JsonProperty("archivename", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("archivename")]
|
||||
public string? ArchiveName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Original format value
|
||||
/// </summary>
|
||||
[JsonProperty("originalformat", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("originalformat")]
|
||||
public string? OriginalFormat { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Date value
|
||||
/// </summary>
|
||||
[JsonProperty("date", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("date")]
|
||||
public string? Date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Grpup value
|
||||
/// </summary>
|
||||
[JsonProperty("group", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("group")]
|
||||
public string? Group { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Comment value
|
||||
/// </summary>
|
||||
[JsonProperty("comment", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("comment")]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Tool value
|
||||
/// </summary>
|
||||
[JsonProperty("tool", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("tool")]
|
||||
public string? Tool { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Region value
|
||||
/// </summary>
|
||||
[JsonProperty("region", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("region")]
|
||||
public string? Region { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Origin value
|
||||
/// </summary>
|
||||
[JsonProperty("origin", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("origin")]
|
||||
public string? Origin { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Create a default, empty ReleaseDetails object
|
||||
/// </summary>
|
||||
public ReleaseDetails()
|
||||
{
|
||||
Write(Data.Models.Metadata.DatItem.TypeKey, ItemType);
|
||||
}
|
||||
public ReleaseDetails() : base() { }
|
||||
|
||||
public ReleaseDetails(Data.Models.Metadata.ReleaseDetails item) : base(item) { }
|
||||
|
||||
public ReleaseDetails(Data.Models.Metadata.ReleaseDetails item, Machine machine, Source source) : this(item)
|
||||
{
|
||||
Write<Source?>(SourceKey, source);
|
||||
CopyMachineInformation(machine);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Cloning Methods
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override object Clone()
|
||||
{
|
||||
var releaseDetails = new ReleaseDetails()
|
||||
{
|
||||
Id = this.Id,
|
||||
DirName = this.DirName,
|
||||
RomInfo = this.RomInfo,
|
||||
Category = this.Category,
|
||||
NfoName = this.NfoName,
|
||||
NfoSize = this.NfoSize,
|
||||
NfoCrc = this.NfoCrc,
|
||||
ArchiveName = this.ArchiveName,
|
||||
OriginalFormat = this.OriginalFormat,
|
||||
Date = this.Date,
|
||||
Group = this.Group,
|
||||
Comment = this.Comment,
|
||||
Tool = this.Tool,
|
||||
Region = this.Region,
|
||||
Origin = this.Origin,
|
||||
};
|
||||
releaseDetails.Write(DupeTypeKey, Read<DupeType>(DupeTypeKey));
|
||||
releaseDetails.Write(MachineKey, GetMachine());
|
||||
releaseDetails.Write(RemoveKey, ReadBool(RemoveKey));
|
||||
releaseDetails.Write<Source?>(SourceKey, Read<Source?>(SourceKey));
|
||||
releaseDetails.Write<string?>(Data.Models.Metadata.DatItem.TypeKey, ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue());
|
||||
|
||||
return releaseDetails;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Comparision Methods
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool Equals(DatItem? other)
|
||||
{
|
||||
// If we don't have a Details, return false
|
||||
if (ReadString(Data.Models.Metadata.DatItem.TypeKey) != other?.ReadString(Data.Models.Metadata.DatItem.TypeKey))
|
||||
return false;
|
||||
|
||||
// Otherwise, treat it as a Details
|
||||
ReleaseDetails? newOther = other as ReleaseDetails;
|
||||
|
||||
// If the Details information matches
|
||||
return Id == newOther!.Id
|
||||
&& DirName == newOther.DirName
|
||||
&& RomInfo == newOther.RomInfo
|
||||
&& Category == newOther.Category
|
||||
&& NfoName == newOther.NfoName
|
||||
&& NfoSize == newOther.NfoSize
|
||||
&& NfoCrc == newOther.NfoCrc
|
||||
&& ArchiveName == newOther.ArchiveName
|
||||
&& OriginalFormat == newOther.OriginalFormat
|
||||
&& Date == newOther.Date
|
||||
&& Group == newOther.Group
|
||||
&& Comment == newOther.Comment
|
||||
&& Tool == newOther.Tool
|
||||
&& Region == newOther.Region
|
||||
&& Origin == newOther.Origin;
|
||||
}
|
||||
public override object Clone() => new ReleaseDetails(_internal.Clone() as Data.Models.Metadata.ReleaseDetails ?? []);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -1,114 +1,32 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Data.Extensions;
|
||||
|
||||
// TODO: Add item mappings for all fields
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a single serials item
|
||||
/// </summary>
|
||||
[JsonObject("serials"), XmlRoot("serials")]
|
||||
public sealed class Serials : DatItem
|
||||
public sealed class Serials : DatItem<Data.Models.Metadata.Serials>
|
||||
{
|
||||
#region Fields
|
||||
|
||||
/// <inheritdoc>/>
|
||||
protected override ItemType ItemType => ItemType.Serials;
|
||||
|
||||
/// <summary>
|
||||
/// Digital serial 1 value
|
||||
/// </summary>
|
||||
[JsonProperty("digital_serial1", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("digital_serial1")]
|
||||
public string? DigitalSerial1 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Digital serial 2 value
|
||||
/// </summary>
|
||||
[JsonProperty("digital_serial2", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("digital_serial2")]
|
||||
public string? DigitalSerial2 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Media serial 1 value
|
||||
/// </summary>
|
||||
[JsonProperty("media_serial1", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("media_serial1")]
|
||||
public string? MediaSerial1 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Media serial 2 value
|
||||
/// </summary>
|
||||
[JsonProperty("media_serial2", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("media_serial2")]
|
||||
public string? MediaSerial2 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Media serial 3 value
|
||||
/// </summary>
|
||||
[JsonProperty("media_serial3", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("media_serial3")]
|
||||
public string? MediaSerial3 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// PCB serial value
|
||||
/// </summary>
|
||||
[JsonProperty("pcb_serial", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("pcb_serial")]
|
||||
public string? PcbSerial { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rom chip serial 1 value
|
||||
/// </summary>
|
||||
[JsonProperty("romchip_serial1", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("romchip_serial1")]
|
||||
public string? RomChipSerial1 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rom chip serial 2 value
|
||||
/// </summary>
|
||||
[JsonProperty("romchip_serial2", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("romchip_serial2")]
|
||||
public string? RomChipSerial2 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Lockout serial value
|
||||
/// </summary>
|
||||
[JsonProperty("lockout_serial", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("lockout_serial")]
|
||||
public string? LockoutSerial { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Save chip serial value
|
||||
/// </summary>
|
||||
[JsonProperty("savechip_serial", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("savechip_serial")]
|
||||
public string? SaveChipSerial { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Chip serial value
|
||||
/// </summary>
|
||||
[JsonProperty("chip_serial", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("chip_serial")]
|
||||
public string? ChipSerial { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Box serial value
|
||||
/// </summary>
|
||||
[JsonProperty("box_serial", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("box_serial")]
|
||||
public string? BoxSerial { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Media stamp value
|
||||
/// </summary>
|
||||
[JsonProperty("mediastamp", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("mediastamp")]
|
||||
public string? MediaStamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Box barcode value
|
||||
/// </summary>
|
||||
[JsonProperty("box_barcode", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("box_barcode")]
|
||||
public string? BoxBarcode { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Create a default, empty Serials object
|
||||
/// </summary>
|
||||
public Serials()
|
||||
public Serials() : base() { }
|
||||
|
||||
public Serials(Data.Models.Metadata.Serials item) : base(item) { }
|
||||
|
||||
public Serials(Data.Models.Metadata.Serials item, Machine machine, Source source) : this(item)
|
||||
{
|
||||
Write(Data.Models.Metadata.DatItem.TypeKey, ItemType);
|
||||
Write<Source?>(SourceKey, source);
|
||||
CopyMachineInformation(machine);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -116,64 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
#region Cloning Methods
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override object Clone()
|
||||
{
|
||||
var serials = new Serials()
|
||||
{
|
||||
DigitalSerial1 = this.DigitalSerial1,
|
||||
DigitalSerial2 = this.DigitalSerial2,
|
||||
MediaSerial1 = this.MediaSerial1,
|
||||
MediaSerial2 = this.MediaSerial2,
|
||||
MediaSerial3 = this.MediaSerial3,
|
||||
PcbSerial = this.PcbSerial,
|
||||
RomChipSerial1 = this.RomChipSerial1,
|
||||
RomChipSerial2 = this.RomChipSerial2,
|
||||
LockoutSerial = this.LockoutSerial,
|
||||
SaveChipSerial = this.SaveChipSerial,
|
||||
ChipSerial = this.ChipSerial,
|
||||
BoxSerial = this.BoxSerial,
|
||||
MediaStamp = this.MediaStamp,
|
||||
BoxBarcode = this.BoxBarcode,
|
||||
};
|
||||
serials.Write(DupeTypeKey, Read<DupeType>(DupeTypeKey));
|
||||
serials.Write(MachineKey, GetMachine());
|
||||
serials.Write(RemoveKey, ReadBool(RemoveKey));
|
||||
serials.Write<Source?>(SourceKey, Read<Source?>(SourceKey));
|
||||
serials.Write<string?>(Data.Models.Metadata.DatItem.TypeKey, ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue());
|
||||
|
||||
return serials;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Comparision Methods
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool Equals(DatItem? other)
|
||||
{
|
||||
// If we don't have a Serials, return false
|
||||
if (ReadString(Data.Models.Metadata.DatItem.TypeKey) != other?.ReadString(Data.Models.Metadata.DatItem.TypeKey))
|
||||
return false;
|
||||
|
||||
// Otherwise, treat it as a Serials
|
||||
Serials? newOther = other as Serials;
|
||||
|
||||
// If the Serials information matches
|
||||
return DigitalSerial1 == newOther!.DigitalSerial1
|
||||
&& DigitalSerial2 == newOther.DigitalSerial2
|
||||
&& MediaSerial1 == newOther.MediaSerial1
|
||||
&& MediaSerial2 == newOther.MediaSerial2
|
||||
&& MediaSerial3 == newOther.MediaSerial3
|
||||
&& PcbSerial == newOther.PcbSerial
|
||||
&& RomChipSerial1 == newOther.RomChipSerial1
|
||||
&& RomChipSerial2 == newOther.RomChipSerial2
|
||||
&& LockoutSerial == newOther.LockoutSerial
|
||||
&& SaveChipSerial == newOther.SaveChipSerial
|
||||
&& ChipSerial == newOther.ChipSerial
|
||||
&& BoxSerial == newOther.BoxSerial
|
||||
&& MediaStamp == newOther.MediaStamp
|
||||
&& BoxBarcode == newOther.BoxBarcode;
|
||||
}
|
||||
public override object Clone() => new Serials(_internal.Clone() as Data.Models.Metadata.Serials ?? []);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -1,151 +1,32 @@
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Data.Extensions;
|
||||
|
||||
// TODO: Add item mappings for all fields
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a single source details item
|
||||
/// </summary>
|
||||
[JsonObject("source_details"), XmlRoot("source_details")]
|
||||
public sealed class SourceDetails : DatItem
|
||||
public sealed class SourceDetails : DatItem<Data.Models.Metadata.SourceDetails>
|
||||
{
|
||||
#region Fields
|
||||
|
||||
/// <inheritdoc>/>
|
||||
protected override ItemType ItemType => ItemType.SourceDetails;
|
||||
|
||||
/// <summary>
|
||||
/// Id value
|
||||
/// </summary>
|
||||
/// <remarks>TODO: Is this required?</remarks>
|
||||
[JsonProperty("id", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Section value
|
||||
/// </summary>
|
||||
[JsonProperty("section", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("section")]
|
||||
public string? Section { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rom info value
|
||||
/// </summary>
|
||||
[JsonProperty("rominfo", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("rominfo")]
|
||||
public string? RomInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dumping date value
|
||||
/// </summary>
|
||||
[JsonProperty("d_date", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("d_date")]
|
||||
public string? DDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dumping date info value
|
||||
/// </summary>
|
||||
[JsonProperty("d_date_info", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("d_date_info")]
|
||||
public string? DDateInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Release date value
|
||||
/// </summary>
|
||||
[JsonProperty("r_date", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("r_date")]
|
||||
public string? RDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Release date info value
|
||||
/// </summary>
|
||||
[JsonProperty("r_date_info", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("r_date_info")]
|
||||
public string? RDateInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Origin value
|
||||
/// </summary>
|
||||
[JsonProperty("origin", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("origin")]
|
||||
public string? Origin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Region value
|
||||
/// </summary>
|
||||
[JsonProperty("region", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("region")]
|
||||
public string? Region { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Media title value
|
||||
/// </summary>
|
||||
[JsonProperty("media_title", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("media_title")]
|
||||
public string? MediaTitle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dumper value
|
||||
/// </summary>
|
||||
[JsonProperty("dumper", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("dumper")]
|
||||
public string? Dumper { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Project value
|
||||
/// </summary>
|
||||
[JsonProperty("project", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("project")]
|
||||
public string? Project { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Original format value
|
||||
/// </summary>
|
||||
[JsonProperty("originalformat", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("originalformat")]
|
||||
public string? OriginalFormat { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Nodump value
|
||||
/// </summary>
|
||||
[JsonProperty("nodump", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("nodump")]
|
||||
public string? Nodump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Tool value
|
||||
/// </summary>
|
||||
[JsonProperty("tool", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("tool")]
|
||||
public string? Tool { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Comment 1 value
|
||||
/// </summary>
|
||||
[JsonProperty("comment1", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("comment1")]
|
||||
public string? Comment1 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Link 2 value
|
||||
/// </summary>
|
||||
[JsonProperty("comment2", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("comment2")]
|
||||
public string? Comment2 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Link 1 value
|
||||
/// </summary>
|
||||
[JsonProperty("link1", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("link1")]
|
||||
public string? Link1 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Link 2 value
|
||||
/// </summary>
|
||||
[JsonProperty("link2", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("link2")]
|
||||
public string? Link2 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Link 3 value
|
||||
/// </summary>
|
||||
[JsonProperty("link3", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("link3")]
|
||||
public string? Link3 { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Create a default, empty SourceDetails object
|
||||
/// </summary>
|
||||
public SourceDetails()
|
||||
public SourceDetails() : base() { }
|
||||
|
||||
public SourceDetails(Data.Models.Metadata.SourceDetails item) : base(item) { }
|
||||
|
||||
public SourceDetails(Data.Models.Metadata.SourceDetails item, Machine machine, Source source) : this(item)
|
||||
{
|
||||
Write(Data.Models.Metadata.DatItem.TypeKey, ItemType.SourceDetails);
|
||||
Write<Source?>(SourceKey, source);
|
||||
CopyMachineInformation(machine);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -153,77 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
#region Cloning Methods
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override object Clone()
|
||||
{
|
||||
var sourceDetails = new SourceDetails()
|
||||
{
|
||||
Id = this.Id,
|
||||
Section = this.Section,
|
||||
RomInfo = this.RomInfo,
|
||||
DDate = this.DDate,
|
||||
DDateInfo = this.DDateInfo,
|
||||
RDate = this.RDate,
|
||||
RDateInfo = this.RDateInfo,
|
||||
Origin = this.Origin,
|
||||
Region = this.Region,
|
||||
MediaTitle = this.MediaTitle,
|
||||
Dumper = this.Dumper,
|
||||
Project = this.Project,
|
||||
OriginalFormat = this.OriginalFormat,
|
||||
Nodump = this.Nodump,
|
||||
Tool = this.Tool,
|
||||
Comment1 = this.Comment1,
|
||||
Comment2 = this.Comment2,
|
||||
Link1 = this.Link1,
|
||||
Link2 = this.Link2,
|
||||
Link3 = this.Link3,
|
||||
};
|
||||
sourceDetails.Write(DupeTypeKey, Read<DupeType>(DupeTypeKey));
|
||||
sourceDetails.Write(MachineKey, GetMachine());
|
||||
sourceDetails.Write(RemoveKey, ReadBool(RemoveKey));
|
||||
sourceDetails.Write<Source?>(SourceKey, Read<Source?>(SourceKey));
|
||||
sourceDetails.Write<string?>(Data.Models.Metadata.DatItem.TypeKey, ReadString(Data.Models.Metadata.DatItem.TypeKey).AsItemType().AsStringValue());
|
||||
|
||||
return sourceDetails;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Comparision Methods
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool Equals(DatItem? other)
|
||||
{
|
||||
// If we don't have a SourceDetails, return false
|
||||
if (ReadString(Data.Models.Metadata.DatItem.TypeKey) != other?.ReadString(Data.Models.Metadata.DatItem.TypeKey))
|
||||
return false;
|
||||
|
||||
// Otherwise, treat it as a SourceDetails
|
||||
SourceDetails? newOther = other as SourceDetails;
|
||||
|
||||
// If the Details information matches
|
||||
return Id == newOther!.Id
|
||||
&& Section == newOther.Section
|
||||
&& RomInfo == newOther.RomInfo
|
||||
&& DDate == newOther.DDate
|
||||
&& DDateInfo == newOther.DDateInfo
|
||||
&& RomInfo == newOther.RomInfo
|
||||
&& RDate == newOther.RDate
|
||||
&& RDateInfo == newOther.RDateInfo
|
||||
&& Origin == newOther.Origin
|
||||
&& Region == newOther.Region
|
||||
&& MediaTitle == newOther.MediaTitle
|
||||
&& Dumper == newOther.Dumper
|
||||
&& Project == newOther.Project
|
||||
&& OriginalFormat == newOther.OriginalFormat
|
||||
&& Nodump == newOther.Nodump
|
||||
&& Tool == newOther.Tool
|
||||
&& Comment1 == newOther.Comment1
|
||||
&& Comment2 == newOther.Comment2
|
||||
&& Link1 == newOther.Link1
|
||||
&& Link2 == newOther.Link2
|
||||
&& Link3 == newOther.Link3;
|
||||
}
|
||||
public override object Clone() => new SourceDetails(_internal.Clone() as Data.Models.Metadata.SourceDetails ?? []);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user