namespace SabreTools.Helper
{
public class Rom : DatItem
{
#region Private instance variables
// Rom information
private Hash _hashData;
// private string _merge;
// private RomStatus _romStatus;
private bool _nodump;
private string _date;
#endregion
#region Publicly facing variables
// Rom information
public Hash HashData
{
get { return _hashData; }
set { _hashData = value; }
}
public bool Nodump
{
get { return _nodump; }
set { _nodump = value; }
}
public string Date
{
get { return _date; }
set { _date = value; }
}
#endregion
#region Constructors
///
/// Create a default, empty Rom object
///
public Rom()
{
_name = "";
_itemType = ItemType.Rom;
_dupeType = DupeType.None;
_nodump = false;
_date = "";
}
///
/// Create a "blank" Rom object
///
///
///
public Rom(string name, string machineName) :
this(name, -1, "null", "null", "null", false, null, machineName, null, machineName, null, null, null, null, null, null, false, null, null, -1, null, -1, null)
{
}
///
/// Create a new Rom object with the included information
///
/// Name of the item, including extension
/// Long size of the item
/// String representation of the CRC
/// String representation of the MD5
/// String representation of the SHA-1
/// True if the file is a nodump, false otherwise
/// String representation of the Date
public Rom(string name, long size, string crc, string md5, string sha1, bool nodump, string date)
{
_name = name;
_itemType = ItemType.Rom;
_hashData = new Hash
{
Size = size,
CRC = crc.ToLowerInvariant(),
MD5 = md5.ToLowerInvariant(),
SHA1 = sha1.ToLowerInvariant(),
};
_nodump = nodump;
_date = date;
}
///
/// Create a new Rom object with the included information
///
/// Name of the item, including extension
/// Long size of the item
/// String representation of the CRC
/// String representation of the MD5
/// String representation of the SHA-1
/// True if the file is a nodump, false otherwise
/// String representation of the Date
/// 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 Rom(string name, long size, string crc, string md5, string sha1, bool nodump, string date, 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.Rom;
_hashData = new Hash
{
Size = size,
CRC = crc.ToLowerInvariant(),
MD5 = md5.ToLowerInvariant(),
SHA1 = sha1.ToLowerInvariant(),
};
_nodump = nodump;
_date = date;
_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
Rom newOther = (Rom)other;
// If either is a nodump, it's never a match
if (_nodump || newOther.Nodump)
{
return dupefound;
}
dupefound = _hashData.Equals(newOther.HashData, false);
return dupefound;
}
#endregion
}
}