using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Listxml
{
///
/// Base class to unify the various game-like types
///
public abstract class GameBase
{
[Required]
[XmlAttribute("name")]
public string? Name { get; set; }
/// Machine only
[XmlAttribute("sourcefile")]
public string? SourceFile { get; set; }
/// (yes|no) "no", Machine only
[XmlAttribute("isbios")]
public string? IsBios { get; set; }
/// (yes|no) "no", Machine only
[XmlAttribute("isdevice")]
public string? IsDevice { get; set; }
/// (yes|no) "no", Machine only
[XmlAttribute("ismechanical")]
public string? IsMechanical { get; set; }
/// (yes|no) "no"
[XmlAttribute("runnable")]
public string? Runnable { get; set; }
[XmlAttribute("cloneof")]
public string? CloneOf { get; set; }
[XmlAttribute("romof")]
public string? RomOf { get; set; }
[XmlAttribute("sampleof")]
public string? SampleOf { get; set; }
[Required]
[XmlElement("description")]
public string? Description { get; set; }
[XmlElement("year")]
public string? Year { get; set; }
[XmlElement("manufacturer")]
public string? Manufacturer { get; set; }
/// Game only
[XmlElement("history")]
public string? History { get; set; }
[XmlElement("biosset")]
public BiosSet[]? BiosSet { get; set; }
[XmlElement("rom")]
public Rom[]? Rom { get; set; }
[XmlElement("disk")]
public Disk[]? Disk { get; set; }
[XmlElement("device_ref")]
public DeviceRef[]? DeviceRef { get; set; }
[XmlElement("sample")]
public Sample[]? Sample { get; set; }
[XmlElement("chip")]
public Chip[]? Chip { get; set; }
[XmlElement("display")]
public Display[]? Display { get; set; }
/// Only present in older versions
[XmlElement("video")]
public Video[]? Video { get; set; }
[XmlElement("sound")]
public Sound? Sound { get; set; }
[XmlElement("input")]
public Input? Input { get; set; }
[XmlElement("dipswitch")]
public DipSwitch[]? DipSwitch { get; set; }
[XmlElement("configuration")]
public Configuration[]? Configuration { get; set; }
[XmlElement("port")]
public Port[]? Port { get; set; }
[XmlElement("adjuster")]
public Adjuster[]? Adjuster { get; set; }
[XmlElement("driver")]
public Driver? Driver { get; set; }
[XmlElement("feature")]
public Feature[]? Feature { get; set; }
[XmlElement("device")]
public Device[]? Device { get; set; }
[XmlElement("slot")]
public Slot[]? Slot { get; set; }
[XmlElement("softwarelist")]
public SoftwareList[]? SoftwareList { get; set; }
[XmlElement("ramoption")]
public RamOption[]? RamOption { get; set; }
#region DO NOT USE IN PRODUCTION
/// Should be empty
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// Should be empty
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}