diff --git a/SabreTools.Core/Enums.cs b/SabreTools.Core/Enums.cs index 4a58c3f1..7f87d5cf 100644 --- a/SabreTools.Core/Enums.cs +++ b/SabreTools.Core/Enums.cs @@ -292,6 +292,7 @@ namespace SabreTools.Core RamOption, Release, Sample, + Serials, Setting, SharedFeature, Slot, diff --git a/SabreTools.DatItems/Formats/Serials.cs b/SabreTools.DatItems/Formats/Serials.cs new file mode 100644 index 00000000..4c843ff9 --- /dev/null +++ b/SabreTools.DatItems/Formats/Serials.cs @@ -0,0 +1,138 @@ +using System.Xml.Serialization; +using Newtonsoft.Json; +using SabreTools.Core; + +// TODO: Add item mappings for all fields +namespace SabreTools.DatItems.Formats +{ + /// + /// Represents a single serials item + /// + [JsonObject("serials"), XmlRoot("serials")] + public class Serials : DatItem + { + #region Fields + + /// + /// Media serial 1 value + /// + [JsonProperty("media_serial1", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("media_serial1")] + public string MediaSerial1 { get; set; } + + /// + /// Media serial 2 value + /// + [JsonProperty("media_serial2", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("media_serial2")] + public string MediaSerial2 { get; set; } + + /// + /// PCB serial value + /// + [JsonProperty("pcb_serial", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("pcb_serial")] + public string PcbSerial { get; set; } + + /// + /// Rom chip serial 1 value + /// + [JsonProperty("romchip_serial1", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("romchip_serial1")] + public string RomChipSerial1 { get; set; } + + /// + /// Rom chip serial 2 value + /// + [JsonProperty("romchip_serial2", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("romchip_serial2")] + public string RomChipSerial2 { get; set; } + + /// + /// Chip serial value + /// + [JsonProperty("chip_serial", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("chip_serial")] + public string ChipSerial { get; set; } + + /// + /// Lockout serial value + /// + [JsonProperty("lockout_serial", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("lockout_serial")] + public string LockoutSerial { get; set; } + + /// + /// Save chip serial value + /// + [JsonProperty("savechip_serial", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("savechip_serial")] + public string SaveChipSerial { get; set; } + + /// + /// Media stamp value + /// + [JsonProperty("mediastamp", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("mediastamp")] + public string MediaStamp { get; set; } + + #endregion + + #region Constructors + + /// + /// Create a default, empty Serials object + /// + public Serials() + { + ItemType = ItemType.Serials; + } + + #endregion + + #region Cloning Methods + + /// + public override object Clone() + { + return new Serials() + { + ItemType = this.ItemType, + DupeType = this.DupeType, + + Machine = this.Machine.Clone() as Machine, + Source = this.Source.Clone() as Source, + Remove = this.Remove, + + MediaSerial1 = this.MediaSerial1, + MediaSerial2 = this.MediaSerial2, + PcbSerial = this.PcbSerial, + RomChipSerial1 = this.RomChipSerial1, + RomChipSerial2 = this.RomChipSerial2, + ChipSerial = this.ChipSerial, + LockoutSerial = this.LockoutSerial, + SaveChipSerial = this.SaveChipSerial, + MediaStamp = this.MediaStamp, + }; + } + + #endregion + + #region Comparision Methods + + /// + public override bool Equals(DatItem other) + { + // If we don't have a Serials, return false + if (ItemType != other.ItemType) + return false; + + // Otherwise, treat it as a Serials + Serials newOther = other as Serials; + + // If the Serials information matches + return (MediaSerial1 == newOther.MediaSerial1 + && MediaSerial2 == newOther.MediaSerial2 + && PcbSerial == newOther.PcbSerial + && RomChipSerial1 == newOther.RomChipSerial1 + && RomChipSerial2 == newOther.RomChipSerial2 + && ChipSerial == newOther.ChipSerial + && LockoutSerial == newOther.LockoutSerial + && SaveChipSerial == newOther.SaveChipSerial + && MediaStamp == newOther.MediaStamp); + } + + #endregion + } +}