using System; namespace SabreTools.Helper { public class Disk : DatItem { #region Private instance variables // Disk information protected string _md5; protected string _sha1; // private string _merge; // private DiskStatus _romStatus; protected bool _nodump; #endregion #region Publicly facing variables // Disk information public string MD5 { get { return _md5; } set { _md5 = value; } } public string SHA1 { get { return _sha1; } set { _sha1 = value; } } public bool Nodump { get { return _nodump; } set { _nodump = value; } } #endregion #region Constructors /// /// Create a default, empty Disk object /// public Disk() { _name = ""; _itemType = ItemType.Disk; _dupeType = DupeType.None; _nodump = false; } /// /// Create a new Disk object with the included information /// /// Name of the item, including extension /// String representation of the MD5 /// String representation of the SHA-1 /// True if the file is a nodump, false otherwise public Disk(string name, string md5, string sha1, bool nodump) { _name = name; _itemType = ItemType.Disk; _md5 = md5?.ToLowerInvariant(); _sha1 = sha1?.ToLowerInvariant(); _nodump = nodump; } /// /// Create a new Disk object with the included information /// /// Name of the item, including extension /// String representation of the MD5 /// String representation of the SHA-1 /// True if the file is a nodump, false otherwise /// Name for the machine/game /// Comment for the machine/game /// Description for the machine/game /// Year for the machine/game /// Manufacturer name for the machine/game /// Set that this machine/game is a rom of /// Set that this machine/game is a clone of /// Set that this machine/game is a sample of /// Source file for the machine/game /// True if this game is a BIOS, false otherwise /// Name of the board for this machine/game /// Name of the game to rebuild to /// System ID to be associated with /// System Name to be associated with /// Source ID to be associated with /// Source Name to be associated with public Disk(string name, string md5, string sha1, bool nodump, string machineName, string comment, string machineDescription, string year, string manufacturer, string romOf, string cloneOf, string sampleOf, string sourceFile, bool isBios, string board, string rebuildTo, int systemId, string systemName, int sourceId, string sourceName) { _name = name; _itemType = ItemType.Disk; _md5 = md5?.ToLowerInvariant(); _sha1 = sha1?.ToLowerInvariant(); _nodump = nodump; _machineName = machineName; _comment = comment; _machineDescription = machineDescription; _year = year; _manufacturer = manufacturer; _romOf = romOf; _cloneOf = cloneOf; _sampleOf = sampleOf; _sourceFile = sourceFile; _isBios = isBios; _board = board; _rebuildTo = rebuildTo; _systemId = systemId; _systemName = systemName; _sourceId = sourceId; _sourceName = sourceName; } #endregion #region Comparision Methods public override bool Equals(DatItem other) { bool dupefound = false; // If we don't have a rom, return false if (_itemType != other.Type) { return dupefound; } // Otherwise, treat it as a rom Disk newOther = (Disk)other; // If either is a nodump, it's never a match if (_nodump || newOther.Nodump) { return dupefound; } if (((String.IsNullOrEmpty(_md5) || String.IsNullOrEmpty(newOther.MD5)) || this.MD5 == newOther.MD5) && ((String.IsNullOrEmpty(this.SHA1) || String.IsNullOrEmpty(newOther.SHA1)) || this.SHA1 == newOther.SHA1)) { dupefound = true; } return dupefound; } #endregion } }