using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Core.Tools; namespace SabreTools.DatItems.Formats { /// /// Represents the a driver of the machine /// [JsonObject("driver"), XmlRoot("driver")] public sealed class Driver : DatItem { #region Fields /// /> protected override ItemType ItemType => ItemType.Driver; #endregion #region Constructors public Driver() : base() { } public Driver(Models.Metadata.Driver item) : base(item) { // Process flag values if (GetStringFieldValue(Models.Metadata.Driver.CocktailKey) != null) SetFieldValue(Models.Metadata.Driver.CocktailKey, GetStringFieldValue(Models.Metadata.Driver.CocktailKey).AsEnumValue().AsStringValue()); if (GetStringFieldValue(Models.Metadata.Driver.ColorKey) != null) SetFieldValue(Models.Metadata.Driver.ColorKey, GetStringFieldValue(Models.Metadata.Driver.ColorKey).AsEnumValue().AsStringValue()); if (GetStringFieldValue(Models.Metadata.Driver.EmulationKey) != null) SetFieldValue(Models.Metadata.Driver.EmulationKey, GetStringFieldValue(Models.Metadata.Driver.EmulationKey).AsEnumValue().AsStringValue()); if (GetBoolFieldValue(Models.Metadata.Driver.IncompleteKey) != null) SetFieldValue(Models.Metadata.Driver.IncompleteKey, GetBoolFieldValue(Models.Metadata.Driver.IncompleteKey).FromYesNo()); if (GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey) != null) SetFieldValue(Models.Metadata.Driver.NoSoundHardwareKey, GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey).FromYesNo()); if (GetInt64FieldValue(Models.Metadata.Driver.PaletteSizeKey) != null) SetFieldValue(Models.Metadata.Driver.PaletteSizeKey, GetInt64FieldValue(Models.Metadata.Driver.PaletteSizeKey).ToString()); if (GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey) != null) SetFieldValue(Models.Metadata.Driver.RequiresArtworkKey, GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey).FromYesNo()); if (GetStringFieldValue(Models.Metadata.Driver.SaveStateKey) != null) SetFieldValue(Models.Metadata.Driver.SaveStateKey, GetStringFieldValue(Models.Metadata.Driver.SaveStateKey).AsEnumValue().AsStringValue(useSecond: true)); if (GetStringFieldValue(Models.Metadata.Driver.SoundKey) != null) SetFieldValue(Models.Metadata.Driver.SoundKey, GetStringFieldValue(Models.Metadata.Driver.SoundKey).AsEnumValue().AsStringValue()); if (GetStringFieldValue(Models.Metadata.Driver.StatusKey) != null) SetFieldValue(Models.Metadata.Driver.StatusKey, GetStringFieldValue(Models.Metadata.Driver.StatusKey).AsEnumValue().AsStringValue()); if (GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey) != null) SetFieldValue(Models.Metadata.Driver.UnofficialKey, GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey).FromYesNo()); } #endregion } }