using System; using System.Collections.Generic; namespace gaseous_identifier.objects { /// /// Object returned by all signature engines containing metadata about the ROM's in the data files /// /// This class was based on the TOSEC dataset, so may need to be expanded as new signature engines are added /// public class RomSignatureObject { public string? Name { get; set; } public string? Description { get; set; } public string? Category { get; set; } public string? Version { get; set; } public string? Author { get; set; } public string? Email { get; set; } public string? Homepage { get; set; } public Uri? Url { get; set; } public string? SourceType { get; set; } public List Games { get; set; } = new List(); public class Game { public string? Name { get; set; } public string? Description { get; set; } public string? Year { get; set; } public string? Publisher { get; set; } public DemoTypes Demo { get; set; } public string? System { get; set; } public string? SystemVariant { get; set; } public string? Video { get; set; } public KeyValuePair Country { get; set; } public KeyValuePair Language { get; set; } public KeyValuePair Copyright { get; set; } public KeyValuePair DevelopmentStatus { get; set; } public List Roms { get; set; } = new List(); public enum DemoTypes { NotDemo = 0, demo = 1, demo_kiosk = 2, demo_playable = 3, demo_rolling = 4, demo_slideshow = 5 } public class Rom { public string? Name { get; set; } public UInt64? Size { get; set; } public string? Crc { get; set; } public string? Md5 { get; set; } public string? Sha1 { get; set; } public List flags { get; set; } = new List(); public RomTypes RomType { get; set; } public string? RomTypeMedia { get; set; } public string? MediaLabel { get; set; } public enum RomTypes { /// /// Media type is unknown /// Unknown = 0, /// /// Optical media /// Disc = 1, /// /// Magnetic media /// Disk = 2, /// /// Individual files /// File = 3, /// /// Individual pars /// Part = 4, /// /// Tape base media /// Tape = 5, /// /// Side of the media /// Side = 6 } } } } }