namespace SabreTools.Models.ClrMamePro
{
///
/// Base class to unify the various game-like types
///
public abstract class GameBase
{
/// name
[Required]
public string? Name { get; set; }
/// description
public string? Description { get; set; }
/// year
public string? Year { get; set; }
/// manufacturer
public string? Manufacturer { get; set; }
/// category
public string? Category { get; set; }
/// cloneof
public string? CloneOf { get; set; }
/// romof
public string? RomOf { get; set; }
/// sampleof
public string? SampleOf { get; set; }
/// release
public Release[]? Release { get; set; }
/// biosset
public BiosSet[]? BiosSet { get; set; }
/// rom
public Rom[]? Rom { get; set; }
/// disk
public Disk[]? Disk { get; set; }
/// sample
public Sample[]? Sample { get; set; }
/// archive
public Archive[]? Archive { get; set; }
#region Aaru Extensions
/// media, Appears after Disk
public Media[]? Media { get; set; }
#endregion
#region MAME Extensions
/// chip, Appears after Archive
public Chip[]? Chip { get; set; }
/// video, Appears after Chip
public Video[]? Video { get; set; }
/// sound, Appears after Video
public Sound? Sound { get; set; }
/// input, Appears after Sound
public Input? Input { get; set; }
/// dipswitch, Appears after Input
public DipSwitch[]? DipSwitch { get; set; }
/// driver, Appears after DipSwitch
public Driver? Driver { get; set; }
#endregion
#region DO NOT USE IN PRODUCTION
/// Should be empty
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}