using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Core.Tools; namespace SabreTools.DatItems.Formats { /// /// Represents a blank set from an input DAT /// [JsonObject("blank"), XmlRoot("blank")] public sealed class Blank : DatItem { #region Fields /// /> protected override ItemType ItemType => ItemType.Blank; #endregion #region Constructors /// /// Create a default, empty Archive object /// public Blank() { SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType); } #endregion #region Cloning Methods /// public override object Clone() { var blank = new Blank(); blank.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); blank.SetFieldValue(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey)); blank.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); blank.SetFieldValue(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue().AsStringValue()); return blank; } #endregion #region Comparision Methods /// public override bool Equals(DatItem? other) { // If we don't have a blank, return false if (GetStringFieldValue(Models.Metadata.DatItem.TypeKey) != other?.GetStringFieldValue(Models.Metadata.DatItem.TypeKey)) return false; // Otherwise, treat it as a Blank Blank? newOther = other as Blank; // If the archive information matches return GetFieldValue(DatItem.MachineKey) == newOther!.GetFieldValue(DatItem.MachineKey); } #endregion } }