2017-10-06 13:29:58 -07:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
2017-06-16 16:24:26 -07:00
|
|
|
|
|
|
|
|
|
|
using SabreTools.Library.Data;
|
|
|
|
|
|
|
2017-10-06 20:46:43 -07:00
|
|
|
|
namespace SabreTools.Library.DatFiles
|
2017-06-16 16:24:26 -07:00
|
|
|
|
{
|
2017-10-09 13:08:15 -07:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Represents all possible DAT header information
|
|
|
|
|
|
/// </summary>
|
2017-10-06 13:29:58 -07:00
|
|
|
|
public class DatHeader : ICloneable
|
2017-06-16 16:24:26 -07:00
|
|
|
|
{
|
2017-10-06 13:29:58 -07:00
|
|
|
|
#region Private instance variables
|
|
|
|
|
|
|
|
|
|
|
|
// Data common to most DAT types
|
|
|
|
|
|
private string _fileName;
|
|
|
|
|
|
private string _name;
|
|
|
|
|
|
private string _description;
|
|
|
|
|
|
private string _rootDir;
|
|
|
|
|
|
private string _category;
|
|
|
|
|
|
private string _version;
|
|
|
|
|
|
private string _date;
|
|
|
|
|
|
private string _author;
|
|
|
|
|
|
private string _email;
|
|
|
|
|
|
private string _homepage;
|
|
|
|
|
|
private string _url;
|
|
|
|
|
|
private string _comment;
|
|
|
|
|
|
private string _header;
|
|
|
|
|
|
private string _type; // Generally only used for SuperDAT
|
|
|
|
|
|
private ForceMerging _forceMerging;
|
|
|
|
|
|
private ForceNodump _forceNodump;
|
|
|
|
|
|
private ForcePacking _forcePacking;
|
|
|
|
|
|
private DatFormat _datFormat;
|
2018-03-22 16:09:18 -07:00
|
|
|
|
private bool[] _excludeFields = new bool[Enum.GetNames(typeof(Field)).Length];
|
2018-03-20 15:10:43 -07:00
|
|
|
|
private bool _oneRom;
|
2018-02-14 12:09:18 -08:00
|
|
|
|
private bool _keepEmptyGames;
|
2017-10-30 15:17:13 -07:00
|
|
|
|
private bool _sceneDateStrip;
|
2017-10-06 13:29:58 -07:00
|
|
|
|
private DedupeType _dedupeRoms;
|
|
|
|
|
|
private Hash _stripHash;
|
|
|
|
|
|
|
2018-02-14 12:17:07 -08:00
|
|
|
|
// Data (mostly) specific to the Miss DAT type
|
2017-12-14 23:14:13 -08:00
|
|
|
|
private bool _useRomName;
|
2017-10-06 13:29:58 -07:00
|
|
|
|
private string _prefix;
|
|
|
|
|
|
private string _postfix;
|
|
|
|
|
|
private bool _quotes;
|
|
|
|
|
|
private string _repExt;
|
|
|
|
|
|
private string _addExt;
|
|
|
|
|
|
private bool _remExt;
|
|
|
|
|
|
private bool _gameName;
|
|
|
|
|
|
private bool _romba;
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
2017-06-16 16:24:26 -07:00
|
|
|
|
#region Publicly facing variables
|
|
|
|
|
|
|
|
|
|
|
|
// Data common to most DAT types
|
2017-10-06 13:29:58 -07:00
|
|
|
|
public string FileName
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _fileName; }
|
|
|
|
|
|
set { _fileName = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Name
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _name; }
|
|
|
|
|
|
set { _name = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Description
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _description; }
|
|
|
|
|
|
set { _description = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string RootDir
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _rootDir; }
|
|
|
|
|
|
set { _rootDir = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Category
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _category; }
|
|
|
|
|
|
set { _category = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Version
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _version; }
|
|
|
|
|
|
set { _version = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Date
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _date; }
|
|
|
|
|
|
set { _date = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Author
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _author; }
|
|
|
|
|
|
set { _author = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Email
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _email; }
|
|
|
|
|
|
set { _email = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Homepage
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _homepage; }
|
|
|
|
|
|
set { _homepage = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Url
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _url; }
|
|
|
|
|
|
set { _url = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Comment
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _comment; }
|
|
|
|
|
|
set { _comment = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Header
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _header; }
|
|
|
|
|
|
set { _header = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Type // Generally only used for SuperDAT
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _type; }
|
|
|
|
|
|
set { _type = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public ForceMerging ForceMerging
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _forceMerging; }
|
|
|
|
|
|
set { _forceMerging = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public ForceNodump ForceNodump
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _forceNodump; }
|
|
|
|
|
|
set { _forceNodump = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public ForcePacking ForcePacking
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _forcePacking; }
|
|
|
|
|
|
set { _forcePacking = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public DatFormat DatFormat
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _datFormat; }
|
|
|
|
|
|
set { _datFormat = value; }
|
|
|
|
|
|
}
|
2018-03-22 16:09:18 -07:00
|
|
|
|
public bool[] ExcludeFields
|
2018-03-21 21:20:56 -07:00
|
|
|
|
{
|
|
|
|
|
|
get { return _excludeFields; }
|
|
|
|
|
|
set { _excludeFields = value; }
|
|
|
|
|
|
}
|
2018-03-20 15:10:43 -07:00
|
|
|
|
public bool OneRom
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _oneRom; }
|
|
|
|
|
|
set { _oneRom = value; }
|
|
|
|
|
|
}
|
2018-02-14 12:09:18 -08:00
|
|
|
|
public bool KeepEmptyGames
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _keepEmptyGames; }
|
|
|
|
|
|
set { _keepEmptyGames = value; }
|
|
|
|
|
|
}
|
2017-10-30 15:17:13 -07:00
|
|
|
|
public bool SceneDateStrip
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _sceneDateStrip; }
|
|
|
|
|
|
set { _sceneDateStrip = value; }
|
|
|
|
|
|
}
|
2017-10-06 13:29:58 -07:00
|
|
|
|
public DedupeType DedupeRoms
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _dedupeRoms; }
|
|
|
|
|
|
set { _dedupeRoms = value; }
|
|
|
|
|
|
}
|
2017-06-16 16:24:26 -07:00
|
|
|
|
|
|
|
|
|
|
// Data specific to the Miss DAT type
|
2017-12-14 23:14:13 -08:00
|
|
|
|
public bool UseRomName
|
2017-10-06 13:29:58 -07:00
|
|
|
|
{
|
2017-12-14 23:14:13 -08:00
|
|
|
|
get { return _useRomName; }
|
|
|
|
|
|
set { _useRomName = value; }
|
2017-10-06 13:29:58 -07:00
|
|
|
|
}
|
|
|
|
|
|
public string Prefix
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _prefix; }
|
|
|
|
|
|
set { _prefix = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public string Postfix
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _postfix; }
|
|
|
|
|
|
set { _postfix = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public bool Quotes
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _quotes; }
|
|
|
|
|
|
set { _quotes = value; }
|
|
|
|
|
|
}
|
2017-12-05 18:04:11 -08:00
|
|
|
|
public string ReplaceExtension
|
2017-10-06 13:29:58 -07:00
|
|
|
|
{
|
|
|
|
|
|
get { return _repExt; }
|
|
|
|
|
|
set { _repExt = value; }
|
|
|
|
|
|
}
|
2017-12-05 18:04:11 -08:00
|
|
|
|
public string AddExtension
|
2017-10-06 13:29:58 -07:00
|
|
|
|
{
|
|
|
|
|
|
get { return _addExt; }
|
|
|
|
|
|
set { _addExt = value; }
|
|
|
|
|
|
}
|
2017-12-05 18:04:11 -08:00
|
|
|
|
public bool RemoveExtension
|
2017-10-06 13:29:58 -07:00
|
|
|
|
{
|
|
|
|
|
|
get { return _remExt; }
|
|
|
|
|
|
set { _remExt = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public bool GameName
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _gameName; }
|
|
|
|
|
|
set { _gameName = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public bool Romba
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _romba; }
|
|
|
|
|
|
set { _romba = value; }
|
|
|
|
|
|
}
|
2017-06-16 16:24:26 -07:00
|
|
|
|
|
|
|
|
|
|
#endregion
|
2017-10-06 13:29:58 -07:00
|
|
|
|
|
|
|
|
|
|
#region Instance Methods
|
|
|
|
|
|
|
|
|
|
|
|
#region Cloning Methods
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Clone the current header
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public object Clone()
|
|
|
|
|
|
{
|
|
|
|
|
|
return new DatHeader()
|
|
|
|
|
|
{
|
|
|
|
|
|
_fileName = this._fileName,
|
|
|
|
|
|
_name = this._name,
|
|
|
|
|
|
_description = this._description,
|
|
|
|
|
|
_rootDir = this._rootDir,
|
|
|
|
|
|
_category = this._category,
|
|
|
|
|
|
_version = this._version,
|
|
|
|
|
|
_date = this._date,
|
|
|
|
|
|
_author = this._author,
|
|
|
|
|
|
_email = this._email,
|
|
|
|
|
|
_homepage = this._homepage,
|
|
|
|
|
|
_url = this._url,
|
|
|
|
|
|
_comment = this._comment,
|
|
|
|
|
|
_header = this._header,
|
|
|
|
|
|
_type = this._type,
|
|
|
|
|
|
_forceMerging = this._forceMerging,
|
|
|
|
|
|
_forceNodump = this._forceNodump,
|
|
|
|
|
|
_forcePacking = this._forcePacking,
|
|
|
|
|
|
_datFormat = this._datFormat,
|
2018-03-21 21:20:56 -07:00
|
|
|
|
_excludeFields = this._excludeFields,
|
2018-03-20 15:10:43 -07:00
|
|
|
|
_oneRom = this._oneRom,
|
2018-02-14 12:09:18 -08:00
|
|
|
|
_keepEmptyGames = this._keepEmptyGames,
|
2017-10-30 15:28:21 -07:00
|
|
|
|
_sceneDateStrip = this._sceneDateStrip,
|
2017-10-06 13:29:58 -07:00
|
|
|
|
_dedupeRoms = this._dedupeRoms,
|
|
|
|
|
|
_stripHash = this._stripHash,
|
|
|
|
|
|
|
2017-12-14 23:14:13 -08:00
|
|
|
|
_useRomName = this._useRomName,
|
2017-10-06 13:29:58 -07:00
|
|
|
|
_prefix = this._prefix,
|
|
|
|
|
|
_postfix = this._postfix,
|
|
|
|
|
|
_quotes = this._quotes,
|
|
|
|
|
|
_repExt = this._repExt,
|
|
|
|
|
|
_addExt = this._addExt,
|
|
|
|
|
|
_remExt = this._remExt,
|
|
|
|
|
|
_gameName = this._gameName,
|
|
|
|
|
|
_romba = this._romba,
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#endregion // Instance Methods
|
2017-06-16 16:24:26 -07:00
|
|
|
|
}
|
|
|
|
|
|
}
|