using System.Collections.Generic; using System.Linq; using SabreTools.Library.DatItems; using SabreTools.Library.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; /// /// This holds all of the auxiliary types needed for proper parsing /// namespace SabreTools.Library.DatItems { #region Machine #region ListXML /// /// Represents one ListXML control /// [JsonObject("control")] public class Control { #region Fields /// /// Control type /// [JsonProperty("type", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Type { get; set; } /// /// Player ID /// [JsonProperty("player", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Player { get; set; } // TODO: Int32? /// /// Button count /// [JsonProperty("buttons", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Buttons { get; set; } // TODO: Int32? /// /// Regular button count /// [JsonProperty("regbuttons", DefaultValueHandling = DefaultValueHandling.Ignore)] public string RegButtons { get; set; } // TODO: Int32? /// /// Minimum value /// [JsonProperty("minimum", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Minimum { get; set; } // TODO: Int32? Float? /// /// Maximum value /// [JsonProperty("maximum", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Maximum { get; set; } // TODO: Int32? Float? /// /// Sensitivity value /// [JsonProperty("sensitivity", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Sensitivity { get; set; } // TODO: Int32? Float? /// /// Keypress delta /// [JsonProperty("keydelta", DefaultValueHandling = DefaultValueHandling.Ignore)] public string KeyDelta { get; set; } // TODO: Int32? Float? /// /// Determines if the control is reversed /// [JsonProperty("reverse", DefaultValueHandling = DefaultValueHandling.Ignore)] public bool? Reverse { get; set; } /// /// First set of ways /// [JsonProperty("ways", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Ways { get; set; } // TODO: Int32? Float? /// /// Second set of ways /// [JsonProperty("ways2", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Ways2 { get; set; } // TODO: Int32? Float? /// /// Third set of ways /// [JsonProperty("ways3", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Ways3 { get; set; } // TODO: Int32? Float? #endregion } /// /// Represents one ListXML device /// /// TODO: Promote to DatItem level (contains list) [JsonObject("device")] public class Device { #region Fields /// /// Device type /// [JsonProperty("type", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Type { get; set; } /// /// Device tag /// [JsonProperty("tag", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Tag { get; set; } /// /// Fixed image format /// [JsonProperty("fixed_image", DefaultValueHandling = DefaultValueHandling.Ignore)] public string FixedImage { get; set; } /// /// Determines if the devices is mandatory /// [JsonProperty("mandatory", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Mandatory { get; set; } // TODO: bool? /// /// Device interface /// [JsonProperty("interface", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Interface { get; set; } /// /// Device instances /// [JsonProperty("instances", DefaultValueHandling = DefaultValueHandling.Ignore)] public List Instances { get; set; } /// /// Device extensions /// [JsonProperty("extensions", DefaultValueHandling = DefaultValueHandling.Ignore)] public List Extensions { get; set; } #endregion } /// /// Represents one ListXML display /// /// TODO: Promote to DatItem level [JsonObject("display")] public class Display { #region Fields /// /// Display tag /// [JsonProperty("tag", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Tag { get; set; } /// /// Display type /// [JsonProperty("type", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Type { get; set; } // TODO: (raster|vector|lcd|svg|unknown) /// /// Display rotation /// [JsonProperty("rotate", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Rotate { get; set; } // TODO: (0|90|180|270) Int32? /// /// Determines if display is flipped in the X-coordinates /// [JsonProperty("flipx", DefaultValueHandling = DefaultValueHandling.Ignore)] public bool? FlipX { get; set; } /// /// Display width /// [JsonProperty("width", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Width { get; set; } // TODO: Int32? /// /// Display height /// [JsonProperty("height", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Height { get; set; } // TODO: Int32? /// /// Refresh rate /// [JsonProperty("refresh", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Refresh { get; set; } // TODO: Int32? Float? /// /// Pixel clock timer /// [JsonProperty("pixclock", DefaultValueHandling = DefaultValueHandling.Ignore)] public string PixClock { get; set; } // TODO: Int32? Float? /// /// Total horizontal lines /// [JsonProperty("htotal", DefaultValueHandling = DefaultValueHandling.Ignore)] public string HTotal { get; set; } // TODO: Int32? Float? /// /// Horizontal blank end /// [JsonProperty("hbend", DefaultValueHandling = DefaultValueHandling.Ignore)] public string HBEnd { get; set; } // TODO: Int32? Float? /// /// Horizontal blank start /// [JsonProperty("hbstart", DefaultValueHandling = DefaultValueHandling.Ignore)] public string HBStart { get; set; } // TODO: Int32? Float? /// /// Total vertical lines /// [JsonProperty("vtotal", DefaultValueHandling = DefaultValueHandling.Ignore)] public string VTotal { get; set; } // TODO: Int32? Float? /// /// Vertical blank end /// [JsonProperty("vbend", DefaultValueHandling = DefaultValueHandling.Ignore)] public string VBEnd { get; set; } // TODO: Int32? Float? /// /// Vertical blank start /// [JsonProperty("vbstart", DefaultValueHandling = DefaultValueHandling.Ignore)] public string VBStart { get; set; } // TODO: Int32? Float? #endregion } /// /// Represents one ListXML input /// /// TODO: Promote to DatItem level (contains list) [JsonObject("input")] public class Input { #region Fields /// /// Input service ID /// [JsonProperty("service", DefaultValueHandling = DefaultValueHandling.Ignore)] public bool? Service { get; set; } /// /// Determins if this has a tilt sensor /// [JsonProperty("tilt", DefaultValueHandling = DefaultValueHandling.Ignore)] public bool? Tilt { get; set; } /// /// Number of players on the input /// [JsonProperty("players", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Players { get; set; } // TODO: Int32? /// /// Number of coins required /// [JsonProperty("coins", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Coins { get; set; } // TODO: Int32? /// /// Set of controls for the input /// [JsonProperty("controls", DefaultValueHandling = DefaultValueHandling.Ignore)] public List Controls { get; set; } #endregion } /// /// Represents one ListXML conflocation or diplocation /// [JsonObject("location")] public class Location { #region Fields /// /// Location name /// [JsonProperty("name")] public string Name { get; set; } /// /// Location ID /// [JsonProperty("number", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Number { get; set; } /// /// Determines if location is inverted or not /// [JsonProperty("inverted", DefaultValueHandling = DefaultValueHandling.Ignore)] public bool? Inverted { get; set; } #endregion } /// /// Represents one ListXML port /// /// TODO: Promote to DatItem level (contains list) [JsonObject("port")] public class Port { #region Fields /// /// Tag for the port /// [JsonProperty("tag", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Tag { get; set; } /// /// List of analogs on the port /// [JsonProperty("analogs", DefaultValueHandling = DefaultValueHandling.Ignore)] public List Analogs { get; set; } #endregion } /// /// Represents one ListXML confsetting or dipvalue /// [JsonObject("setting")] public class Setting { #region Fields /// /// Setting name /// [JsonProperty("name")] public string Name { get; set; } /// /// Setting value /// [JsonProperty("value", DefaultValueHandling = DefaultValueHandling.Ignore)] public string Value { get; set; } /// /// Determines if the setting is default or not /// [JsonProperty("default", DefaultValueHandling = DefaultValueHandling.Ignore)] public bool? Default { get; set; } /// /// List of conditions on the setting /// [JsonProperty("conditions", DefaultValueHandling = DefaultValueHandling.Ignore)] public List Conditions { get; set; } #endregion } /// /// Represents one ListXML slotoption /// [JsonObject("slotoption")] public class SlotOption { #region Fields /// /// Slot option name /// [JsonProperty("name")] public string Name { get; set; } /// /// Referenced device name /// [JsonProperty("devname")] public string DeviceName { get; set; } /// /// Determines if this slot option is default or not /// [JsonProperty("default", DefaultValueHandling = DefaultValueHandling.Ignore)] public bool? Default { get; set; } #endregion } #endregion #region OpenMSX /// /// Represents the OpenMSX original value /// [JsonObject("original")] public class OpenMSXOriginal { [JsonProperty("value")] public bool? Value { get; set; } [JsonProperty("content")] public string Content { get; set; } } #endregion #region SoftwareList /// /// Represents one SoftwareList info /// [JsonObject("info")] public class SoftwareListInfo { [JsonProperty("name")] public string Name { get; set; } [JsonProperty("value")] public string Value { get; set; } } /// /// Represents one SoftwareList shared feature object /// [JsonObject("sharedfeat")] public class SoftwareListSharedFeature { [JsonProperty("name")] public string Name { get; set; } [JsonProperty("value")] public string Value { get; set; } } #endregion #endregion // Machine #region DatItem #region SoftwareList /// /// Represents one SoftwareList feature object /// [JsonObject("feature")] public class SoftwareListFeature { [JsonProperty("name")] public string Name { get; set; } [JsonProperty("value")] public string Value { get; set; } } /// /// Represents one SoftwareList part object /// [JsonObject("part")] public class SoftwareListPart { [JsonProperty("name")] public string Name { get; set; } [JsonProperty("interface")] public string Interface { get; set; } } #endregion #endregion //DatItem }