[DatFile, DatHeader, DatStats] Descriptors

This commit is contained in:
Matt Nadareski
2019-01-08 11:49:31 -08:00
parent b0d91d11c3
commit 9e3df30b90
3 changed files with 6292 additions and 5861 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -10,43 +10,183 @@ namespace SabreTools.Library.DatFiles
{ {
#region Publicly facing variables #region Publicly facing variables
// Data common to most DAT types #region Data common to most DAT types
/// <summary>
/// External name of the DAT
/// </summary>
public string FileName { get; set; } public string FileName { get; set; }
/// <summary>
/// Internal name of the DAT
/// </summary>
public string Name { get; set; } public string Name { get; set; }
/// <summary>
/// DAT description
/// </summary>
public string Description { get; set; } public string Description { get; set; }
/// <summary>
/// Root directory for the files; currently TruRip/EmuARC-exclusive
/// </summary>
public string RootDir { get; set; } public string RootDir { get; set; }
/// <summary>
/// General category of items found in the DAT
/// </summary>
public string Category { get; set; } public string Category { get; set; }
/// <summary>
/// Version of the DAT
/// </summary>
public string Version { get; set; } public string Version { get; set; }
/// <summary>
/// Creation or modification date
/// </summary>
public string Date { get; set; } public string Date { get; set; }
/// <summary>
/// List of authors who contributed to the DAT
/// </summary>
public string Author { get; set; } public string Author { get; set; }
/// <summary>
/// Email address for DAT author(s)
/// </summary>
public string Email { get; set; } public string Email { get; set; }
/// <summary>
/// Author or distribution homepage name
/// </summary>
public string Homepage { get; set; } public string Homepage { get; set; }
/// <summary>
/// Author or distribution URL
/// </summary>
public string Url { get; set; } public string Url { get; set; }
/// <summary>
/// Any comment that does not already fit an existing field
/// </summary>
public string Comment { get; set; } public string Comment { get; set; }
/// <summary>
/// Header skipper to be used when loading the DAT
/// </summary>
public string Header { get; set; } public string Header { get; set; }
public string Type { get; set; } // Generally only used for SuperDAT
/// <summary>
/// Classification of the DAT. Generally only used for SuperDAT
/// </summary>
public string Type { get; set; }
/// <summary>
/// Force a merging style when loaded
/// </summary>
public ForceMerging ForceMerging { get; set; } public ForceMerging ForceMerging { get; set; }
/// <summary>
/// Force nodump handling when loaded
/// </summary>
public ForceNodump ForceNodump { get; set; } public ForceNodump ForceNodump { get; set; }
/// <summary>
/// Force output packing when loaded
/// </summary>
public ForcePacking ForcePacking { get; set; } public ForcePacking ForcePacking { get; set; }
/// <summary>
/// Read or write format
/// </summary>
public DatFormat DatFormat { get; set; } public DatFormat DatFormat { get; set; }
/// <summary>
/// List of fields in machine and items to exclude from writing
/// </summary>
public bool[] ExcludeFields { get; set; } = new bool[Enum.GetNames(typeof(Field)).Length]; public bool[] ExcludeFields { get; set; } = new bool[Enum.GetNames(typeof(Field)).Length];
/// <summary>
/// Enable "One Rom, One Region (1G1R)" mode
/// </summary>
public bool OneRom { get; set; } public bool OneRom { get; set; }
/// <summary>
/// Keep machines that don't contain any items
/// </summary>
public bool KeepEmptyGames { get; set; } public bool KeepEmptyGames { get; set; }
/// <summary>
/// Remove scene dates from the beginning of machine names
/// </summary>
public bool SceneDateStrip { get; set; } public bool SceneDateStrip { get; set; }
/// <summary>
/// Deduplicate items using the given method
/// </summary>
public DedupeType DedupeRoms { get; set; } public DedupeType DedupeRoms { get; set; }
/// <summary>
/// Strip hash types from items
/// </summary>
public Hash StripHash { get; private set; } public Hash StripHash { get; private set; }
// Data specific to the Miss DAT type #endregion
public bool UseRomName { get; set; }
#region Write pre-processing
/// <summary>
/// Text to prepend to all outputted lines
/// </summary>
public string Prefix { get; set; } public string Prefix { get; set; }
/// <summary>
/// Text to append to all outputted lines
/// </summary>
public string Postfix { get; set; } public string Postfix { get; set; }
public bool Quotes { get; set; }
public string ReplaceExtension { get; set; } /// <summary>
/// Add a new extension to all items
/// </summary>
public string AddExtension { get; set; } public string AddExtension { get; set; }
/// <summary>
/// Replace all item extensions
/// </summary>
public string ReplaceExtension { get; set; }
/// <summary>
/// Remove all item extensions
/// </summary>
public bool RemoveExtension { get; set; } public bool RemoveExtension { get; set; }
public bool GameName { get; set; }
/// <summary>
/// Romba output mode
/// </summary>
public bool Romba { get; set; } public bool Romba { get; set; }
/// <summary>
/// Output the machine name
/// </summary>
public bool GameName { get; set; }
/// <summary>
/// Wrap quotes around the entire line, sans prefix and postfix
/// </summary>
public bool Quotes { get; set; }
#endregion
#region Data specific to the Miss DAT type
/// <summary>
/// Output the item name
/// </summary>
public bool UseRomName { get; set; }
#endregion
#endregion #endregion
#region Instance Methods #region Instance Methods

View File

@@ -1,5 +1,4 @@
using System; using System;
using SabreTools.Library.Data; using SabreTools.Library.Data;
using SabreTools.Library.DatItems; using SabreTools.Library.DatItems;
@@ -12,45 +11,114 @@ namespace SabreTools.Library.DatFiles
{ {
#region Private instance variables #region Private instance variables
// Object used to lock stats updates /// <summary>
/// Object used to lock stats updates
/// </summary>
private object _lockObject = new object(); private object _lockObject = new object();
#endregion #endregion
#region Publicly facing variables #region Publicly facing variables
// Statistics report format /// <summary>
/// Statistics writing format
/// </summary>
public StatReportFormat ReportFormat { get; set; } = StatReportFormat.None; public StatReportFormat ReportFormat { get; set; } = StatReportFormat.None;
// Overall item count /// <summary>
/// Overall item count
/// </summary>
public long Count { get; set; } = 0; public long Count { get; set; } = 0;
// Individual DatItem type counts /// <summary>
/// Number of Archive items
/// </summary>
public long ArchiveCount { get; set; } = 0; public long ArchiveCount { get; set; } = 0;
/// <summary>
/// Number of BiosSet items
/// </summary>
public long BiosSetCount { get; set; } = 0; public long BiosSetCount { get; set; } = 0;
/// <summary>
/// Number of Disk items
/// </summary>
public long DiskCount { get; set; } = 0; public long DiskCount { get; set; } = 0;
/// <summary>
/// Number of Release items
/// </summary>
public long ReleaseCount { get; set; } = 0; public long ReleaseCount { get; set; } = 0;
/// <summary>
/// Number of Rom items
/// </summary>
public long RomCount { get; set; } = 0; public long RomCount { get; set; } = 0;
/// <summary>
/// Number of Sample items
/// </summary>
public long SampleCount { get; set; } = 0; public long SampleCount { get; set; } = 0;
// Special count only used by statistics output /// <summary>
/// Number of machines
/// </summary>
/// <remarks>Special count only used by statistics output</remarks>
public long GameCount { get; set; } = 0; public long GameCount { get; set; } = 0;
// Total reported size /// <summary>
/// Total uncompressed size
/// </summary>
public long TotalSize { get; set; } = 0; public long TotalSize { get; set; } = 0;
// Individual hash counts /// <summary>
/// Number of items with a CRC hash
/// </summary>
public long CRCCount { get; set; } = 0; public long CRCCount { get; set; } = 0;
/// <summary>
/// Number of items with an MD5 hash
/// </summary>
public long MD5Count { get; set; } = 0; public long MD5Count { get; set; } = 0;
/// <summary>
/// Number of items with a SHA-1 hash
/// </summary>
public long SHA1Count { get; set; } = 0; public long SHA1Count { get; set; } = 0;
/// <summary>
/// Number of items with a SHA-256 hash
/// </summary>
public long SHA256Count { get; set; } = 0; public long SHA256Count { get; set; } = 0;
/// <summary>
/// Number of items with a SHA-384 hash
/// </summary>
public long SHA384Count { get; set; } = 0; public long SHA384Count { get; set; } = 0;
/// <summary>
/// Number of items with a SHA-512 hash
/// </summary>
public long SHA512Count { get; set; } = 0; public long SHA512Count { get; set; } = 0;
// Individual status counts /// <summary>
/// Number of items with the baddump status
/// </summary>
public long BaddumpCount { get; set; } = 0; public long BaddumpCount { get; set; } = 0;
/// <summary>
/// Number of items with the good status
/// </summary>
public long GoodCount { get; set; } = 0; public long GoodCount { get; set; } = 0;
/// <summary>
/// Number of items with the nodump status
/// </summary>
public long NodumpCount { get; set; } = 0; public long NodumpCount { get; set; } = 0;
/// <summary>
/// Number of items with the verified status
/// </summary>
public long VerifiedCount { get; set; } = 0; public long VerifiedCount { get; set; } = 0;
#endregion #endregion