Checkpoint (nw)

This commit is contained in:
Matt Nadareski
2020-08-25 11:20:50 -07:00
parent dab673246e
commit 3dc3c627f0
16 changed files with 903 additions and 1630 deletions

View File

@@ -63,7 +63,7 @@ contents of any changed dats.";
DatFile datroot = DatFile.Create();
datroot.Header.Type = "SuperDAT";
datroot.PopulateFromDir(_dats, asFiles: TreatAsFiles.CHDs);
datroot.Items.BucketBy(Field.SHA1, DedupeType.None);
datroot.Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
// Create a List of dat hashes in the database (SHA-1)
List<string> databaseDats = new List<string>();

View File

@@ -65,7 +65,7 @@ namespace RombaSharp.Features
// Now rescan the depot itself
DatFile depot = DatFile.Create();
depot.PopulateFromDir(depotname, asFiles: TreatAsFiles.CHDs);
depot.Items.BucketBy(Field.SHA1, DedupeType.None);
depot.Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
// Set the base queries to use
string crcquery = "INSERT OR IGNORE INTO crc (crc) VALUES";

View File

@@ -256,8 +256,8 @@ namespace SabreTools.Library.DatFiles
if (updateFields.Intersect(DatItem.DatItemFields).Any())
{
// For comparison's sake, we want to use CRC as the base bucketing
Items.BucketBy(Field.CRC, DedupeType.Full);
intDat.Items.BucketBy(Field.CRC, DedupeType.None);
Items.BucketBy(Field.DatItem_CRC, DedupeType.Full);
intDat.Items.BucketBy(Field.DatItem_CRC, DedupeType.None);
// Then we do a hashwise comparison against the base DAT
Parallel.ForEach(intDat.Items.Keys, Globals.ParallelOptions, key =>
@@ -362,7 +362,7 @@ namespace SabreTools.Library.DatFiles
if (useGames)
Items.BucketBy(Field.Machine_Name, DedupeType.None);
else
Items.BucketBy(Field.CRC, DedupeType.None);
Items.BucketBy(Field.DatItem_CRC, DedupeType.None);
// Now we want to compare each input DAT against the base
foreach (ParentablePath path in inputs)
@@ -379,7 +379,7 @@ namespace SabreTools.Library.DatFiles
if (useGames)
intDat.Items.BucketBy(Field.Machine_Name, DedupeType.None);
else
intDat.Items.BucketBy(Field.CRC, DedupeType.Full);
intDat.Items.BucketBy(Field.DatItem_CRC, DedupeType.Full);
// Then we compare against the base DAT
List<string> keys = intDat.Items.Keys.ToList();
@@ -508,7 +508,7 @@ namespace SabreTools.Library.DatFiles
watch.Stop();
// Then, ensure that the internal dat can be bucketed in the best possible way
Items.BucketBy(Field.CRC, DedupeType.None);
Items.BucketBy(Field.DatItem_CRC, DedupeType.None);
// Now, loop through the dictionary and populate the correct DATs
watch.Start("Populating all output DATs");
@@ -1957,7 +1957,7 @@ namespace SabreTools.Library.DatFiles
// If the output type isn't set already, get the internal output type
Header.DatFormat = (Header.DatFormat == 0 ? currentPath.GetDatFormat() : Header.DatFormat);
Items.SetBucketedBy(Field.CRC); // Setting this because it can reduce issues later
Items.SetBucketedBy(Field.DatItem_CRC); // Setting this because it can reduce issues later
// Now parse the correct type of DAT
try
@@ -2083,7 +2083,7 @@ namespace SabreTools.Library.DatFiles
}
// Get the key and add the file
key = item.GetKey(Field.CRC);
key = item.GetKey(Field.DatItem_CRC);
Items.Add(key, item);
return key;
@@ -2255,7 +2255,7 @@ namespace SabreTools.Library.DatFiles
{
// Add the list if it doesn't exist already
Rom rom = new Rom(baseFile);
Items.Add(rom.GetKey(Field.CRC), rom);
Items.Add(rom.GetKey(Field.DatItem_CRC), rom);
Globals.Logger.User($"File added: {Path.GetFileNameWithoutExtension(item)}{Environment.NewLine}");
}
else
@@ -2379,7 +2379,7 @@ namespace SabreTools.Library.DatFiles
SetDatItemInfo(datItem, item, parent, basepath);
// Add the file information to the DAT
string key = datItem.GetKey(Field.CRC);
string key = datItem.GetKey(Field.DatItem_CRC);
Items.Add(key, datItem);
Globals.Logger.User($"File added: {datItem.Name}{Environment.NewLine}");
@@ -2571,7 +2571,7 @@ namespace SabreTools.Library.DatFiles
return success;
// Now that we have a list of depots, we want to bucket the input DAT by SHA-1
Items.BucketBy(Field.SHA1, DedupeType.None);
Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
// Then we want to loop through each of the hashes and see if we can rebuild
var keys = Items.SortedKeys.ToList();
@@ -3143,7 +3143,7 @@ namespace SabreTools.Library.DatFiles
return success;
// Now that we have a list of depots, we want to bucket the input DAT by SHA-1
Items.BucketBy(Field.SHA1, DedupeType.None);
Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
// Then we want to loop through each of the hashes and see if we can rebuild
var keys = Items.SortedKeys.ToList();
@@ -3247,7 +3247,7 @@ namespace SabreTools.Library.DatFiles
if (hashOnly)
{
// First we need to bucket and dedupe by hash to get duplicates
Items.BucketBy(Field.CRC, DedupeType.Full);
Items.BucketBy(Field.DatItem_CRC, DedupeType.Full);
// Then follow the same tactics as before
var keys = Items.SortedKeys.ToList();
@@ -3770,7 +3770,7 @@ namespace SabreTools.Library.DatFiles
// Bucket and dedupe according to the flag
if (Header.DedupeRoms == DedupeType.Full)
Items.BucketBy(Field.CRC, Header.DedupeRoms, norename: norename);
Items.BucketBy(Field.DatItem_CRC, Header.DedupeRoms, norename: norename);
else if (Header.DedupeRoms == DedupeType.Game)
Items.BucketBy(Field.Machine_Name, Header.DedupeRoms, norename: norename);

View File

@@ -1,9 +1,11 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using SabreTools.Library.DatItems;
using SabreTools.Library.IO;
using SabreTools.Library.Tools;
using Newtonsoft.Json;
namespace SabreTools.Library.DatFiles
@@ -382,6 +384,133 @@ namespace SabreTools.Library.DatFiles
#region Instance Methods
#region Accessors
/// <summary>
/// Set fields with given values
/// </summary>
/// <param name="mappings">Mappings dictionary</param>
public void SetFields(Dictionary<Field, string> mappings)
{
#region Common
if (mappings.Keys.Contains(Field.DatHeader_FileName))
FileName = mappings[Field.DatHeader_FileName];
if (mappings.Keys.Contains(Field.DatHeader_Name))
Name = mappings[Field.DatHeader_Name];
if (mappings.Keys.Contains(Field.DatHeader_Description))
Description = mappings[Field.DatHeader_Description];
if (mappings.Keys.Contains(Field.DatHeader_RootDir))
RootDir = mappings[Field.DatHeader_RootDir];
if (mappings.Keys.Contains(Field.DatHeader_Category))
Category = mappings[Field.DatHeader_Category];
if (mappings.Keys.Contains(Field.DatHeader_Version))
Version = mappings[Field.DatHeader_Version];
if (mappings.Keys.Contains(Field.DatHeader_Date))
Date = mappings[Field.DatHeader_Date];
if (mappings.Keys.Contains(Field.DatHeader_Author))
Author = mappings[Field.DatHeader_Author];
if (mappings.Keys.Contains(Field.DatHeader_Email))
Email = mappings[Field.DatHeader_Email];
if (mappings.Keys.Contains(Field.DatHeader_Homepage))
Homepage = mappings[Field.DatHeader_Homepage];
if (mappings.Keys.Contains(Field.DatHeader_Url))
Url = mappings[Field.DatHeader_Url];
if (mappings.Keys.Contains(Field.DatHeader_Comment))
Comment = mappings[Field.DatHeader_Comment];
if (mappings.Keys.Contains(Field.DatHeader_HeaderSkipper))
HeaderSkipper = mappings[Field.DatHeader_HeaderSkipper];
if (mappings.Keys.Contains(Field.DatHeader_Type))
Type = mappings[Field.DatHeader_Type];
if (mappings.Keys.Contains(Field.DatHeader_ForceMerging))
ForceMerging = mappings[Field.DatHeader_ForceMerging].AsMergingFlag();
if (mappings.Keys.Contains(Field.DatHeader_ForceNodump))
ForceNodump = mappings[Field.DatHeader_ForceNodump].AsNodumpFlag();
if (mappings.Keys.Contains(Field.DatHeader_ForcePacking))
ForcePacking = mappings[Field.DatHeader_ForcePacking].AsPackingFlag();
#endregion
#region ListXML
if (mappings.Keys.Contains(Field.DatHeader_Debug))
Debug = mappings[Field.DatHeader_Debug].AsYesNo();
if (mappings.Keys.Contains(Field.DatHeader_MameConfig))
MameConfig = mappings[Field.DatHeader_MameConfig];
#endregion
#region Logiqx
if (mappings.Keys.Contains(Field.DatHeader_Build))
Build = mappings[Field.DatHeader_Build];
if (mappings.Keys.Contains(Field.DatHeader_RomMode))
RomMode = mappings[Field.DatHeader_RomMode].AsMergingFlag();
if (mappings.Keys.Contains(Field.DatHeader_BiosMode))
BiosMode = mappings[Field.DatHeader_BiosMode].AsMergingFlag();
if (mappings.Keys.Contains(Field.DatHeader_SampleMode))
SampleMode = mappings[Field.DatHeader_SampleMode].AsMergingFlag();
if (mappings.Keys.Contains(Field.DatHeader_LockRomMode))
LockRomMode = mappings[Field.DatHeader_LockRomMode].AsYesNo();
if (mappings.Keys.Contains(Field.DatHeader_LockBiosMode))
LockBiosMode = mappings[Field.DatHeader_LockBiosMode].AsYesNo();
if (mappings.Keys.Contains(Field.DatHeader_LockSampleMode))
LockSampleMode = mappings[Field.DatHeader_LockSampleMode].AsYesNo();
#endregion
#region OfflineList
if (mappings.Keys.Contains(Field.DatHeader_System))
System = mappings[Field.DatHeader_System];
if (mappings.Keys.Contains(Field.DatHeader_ScreenshotsWidth))
ScreenshotsWidth = mappings[Field.DatHeader_ScreenshotsWidth];
if (mappings.Keys.Contains(Field.DatHeader_ScreenshotsHeight))
ScreenshotsHeight = mappings[Field.DatHeader_ScreenshotsHeight];
// TODO: Add DatHeader_Info*
// TDOO: Add DatHeader_CanOpen*
if (mappings.Keys.Contains(Field.DatHeader_RomTitle))
RomTitle = mappings[Field.DatHeader_RomTitle];
#endregion
#region RomCenter
if (mappings.Keys.Contains(Field.DatHeader_RomCenterVersion))
RomCenterVersion = mappings[Field.DatHeader_RomCenterVersion];
#endregion
}
#endregion
#region Cloning Methods
/// <summary>

View File

@@ -806,33 +806,33 @@ namespace SabreTools.Library.DatFiles
{
// If all items are supposed to have a SHA-512, we bucket by that
if (RomCount + DiskCount - NodumpCount == SHA512Count)
return Field.SHA512;
return Field.DatItem_SHA512;
// If all items are supposed to have a SHA-384, we bucket by that
else if (RomCount + DiskCount - NodumpCount == SHA384Count)
return Field.SHA384;
return Field.DatItem_SHA384;
// If all items are supposed to have a SHA-256, we bucket by that
else if (RomCount + DiskCount - NodumpCount == SHA256Count)
return Field.SHA256;
return Field.DatItem_SHA256;
// If all items are supposed to have a SHA-1, we bucket by that
else if (RomCount + DiskCount - NodumpCount == SHA1Count)
return Field.SHA1;
return Field.DatItem_SHA1;
#if NET_FRAMEWORK
// If all items are supposed to have a RIPEMD160, we bucket by that
else if (RomCount + DiskCount - NodumpCount == RIPEMD160Count)
return Field.RIPEMD160;
return Field.DatItem_RIPEMD160;
#endif
// If all items are supposed to have a MD5, we bucket by that
else if (RomCount + DiskCount - NodumpCount == MD5Count)
return Field.MD5;
return Field.DatItem_MD5;
// Otherwise, we bucket by CRC
else
return Field.CRC;
return Field.DatItem_CRC;
}
/// <summary>

File diff suppressed because it is too large Load Diff

View File

@@ -41,11 +41,11 @@ namespace SabreTools.Library.DatItems
base.SetFields(mappings);
// Handle BiosSet-specific fields
if (mappings.Keys.Contains(Field.Default))
Default = mappings[Field.Default].AsYesNo();
if (mappings.Keys.Contains(Field.DatItem_Default))
Default = mappings[Field.DatItem_Default].AsYesNo();
if (mappings.Keys.Contains(Field.BiosDescription))
Description = mappings[Field.BiosDescription];
if (mappings.Keys.Contains(Field.DatItem_Description))
Description = mappings[Field.DatItem_Description];
}
#endregion
@@ -155,10 +155,10 @@ namespace SabreTools.Library.DatItems
base.RemoveFields(fields);
// Remove the fields
if (fields.Contains(Field.BiosDescription))
if (fields.Contains(Field.DatItem_Description))
Description = null;
if (fields.Contains(Field.Default))
if (fields.Contains(Field.DatItem_Default))
Default = null;
}
@@ -184,10 +184,10 @@ namespace SabreTools.Library.DatItems
BiosSet newItem = item as BiosSet;
// Replace the fields
if (fields.Contains(Field.BiosDescription))
if (fields.Contains(Field.DatItem_Description))
Description = newItem.Description;
if (fields.Contains(Field.Default))
if (fields.Contains(Field.DatItem_Default))
Default = newItem.Default;
}

View File

@@ -185,6 +185,7 @@ namespace SabreTools.Library.DatItems
/// <summary>
/// Fields unique to a DatItem
/// </summary>
/// TODO: Ensure list
public static readonly List<Field> DatItemFields = new List<Field>()
{
// Common
@@ -202,51 +203,52 @@ namespace SabreTools.Library.DatItems
Field.DatItem_Boot,
//SoftwareList
Field.PartName,
Field.PartInterface,
Field.Features,
Field.AreaName,
Field.AreaSize,
Field.AreaWidth,
Field.AreaEndianness,
Field.Value,
Field.LoadFlag,
Field.DatItem_Part_Name,
Field.DatItem_Part_Interface,
Field.DatItem_Features,
Field.DatItem_AreaName,
Field.DatItem_AreaSize,
Field.DatItem_AreaWidth,
Field.DatItem_AreaEndianness,
Field.DatItem_Value,
Field.DatItem_LoadFlag,
// BiosSet
Field.BiosDescription,
Field.Default,
Field.DatItem_Description,
Field.DatItem_Default,
// Disk
Field.MD5,
Field.DatItem_MD5,
#if NET_FRAMEWORK
Field.RIPEMD160,
Field.DatItem_RIPEMD160,
#endif
Field.SHA1,
Field.SHA256,
Field.SHA384,
Field.SHA512,
Field.Merge,
Field.Region,
Field.Index,
Field.Writable,
Field.Optional,
Field.Status,
Field.DatItem_SHA1,
Field.DatItem_SHA256,
Field.DatItem_SHA384,
Field.DatItem_SHA512,
Field.DatItem_Merge,
Field.DatItem_Region,
Field.DatItem_Index,
Field.DatItem_Writable,
Field.DatItem_Optional,
Field.DatItem_Status,
// Release
Field.Language,
Field.Date,
Field.DatItem_Language,
Field.DatItem_Date,
// Rom
Field.Bios,
Field.Size,
Field.CRC,
Field.Offset,
Field.Inverted,
Field.DatItem_Bios,
Field.DatItem_Size,
Field.DatItem_CRC,
Field.DatItem_Offset,
Field.DatItem_Inverted,
};
/// <summary>
/// Fields unique to a Machine
/// </summary>
/// TODO: Ensure list
public static readonly List<Field> MachineFields = new List<Field>()
{
// Common
@@ -265,7 +267,7 @@ namespace SabreTools.Library.DatItems
Field.Machine_Players,
Field.Machine_Rotation,
Field.Machine_Control,
Field.Machine_SupportStatus,
Field.Machine_Status,
Field.Machine_DisplayCount,
Field.Machine_DisplayType,
Field.Machine_Buttons,
@@ -318,6 +320,9 @@ namespace SabreTools.Library.DatItems
public virtual void SetFields(Dictionary<Field, string> mappings)
{
// Set machine fields
if (Machine == null)
Machine = new Machine();
Machine.SetFields(mappings);
#region Common
@@ -358,60 +363,30 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
if (mappings.Keys.Contains(Field.PartName))
// TODO: Add DatItem_Part*
// TODO: Add DatItem_Feature*
// TODO: These might be replaced by dataarea/diskarea
if (mappings.Keys.Contains(Field.DatItem_AreaName))
AreaName = mappings[Field.DatItem_AreaName];
if (mappings.Keys.Contains(Field.DatItem_AreaSize))
{
if (Part == null)
Part = new SoftwareListPart();
Part.Name = mappings[Field.PartName];
}
if (mappings.Keys.Contains(Field.PartInterface))
{
if (Part == null)
Part = new SoftwareListPart();
Part.Interface = mappings[Field.PartInterface];
}
if (mappings.Keys.Contains(Field.Features))
{
if (Features == null)
Features = new List<SoftwareListFeature>();
string[] pairs = mappings[Field.Features].Split(';');
foreach (string pair in pairs)
{
string[] split = pair.Split('=');
var feature = new SoftwareListFeature();
feature.Name = split[0];
feature.Value = split[1];
Features.Add(feature);
}
}
if (mappings.Keys.Contains(Field.AreaName))
AreaName = mappings[Field.AreaName];
if (mappings.Keys.Contains(Field.AreaSize))
{
if (Int64.TryParse(mappings[Field.AreaSize], out long areaSize))
if (Int64.TryParse(mappings[Field.DatItem_AreaSize], out long areaSize))
AreaSize = areaSize;
}
if (mappings.Keys.Contains(Field.AreaWidth))
AreaWidth = mappings[Field.AreaWidth];
if (mappings.Keys.Contains(Field.DatItem_AreaWidth))
AreaWidth = mappings[Field.DatItem_AreaWidth];
if (mappings.Keys.Contains(Field.AreaEndianness))
AreaEndianness = mappings[Field.AreaEndianness];
if (mappings.Keys.Contains(Field.DatItem_AreaEndianness))
AreaEndianness = mappings[Field.DatItem_AreaEndianness];
if (mappings.Keys.Contains(Field.Value))
Value = mappings[Field.Value];
if (mappings.Keys.Contains(Field.DatItem_Value))
Value = mappings[Field.DatItem_Value];
if (mappings.Keys.Contains(Field.LoadFlag))
LoadFlag = mappings[Field.LoadFlag];
if (mappings.Keys.Contains(Field.DatItem_LoadFlag))
LoadFlag = mappings[Field.DatItem_LoadFlag];
#endregion
}
@@ -425,7 +400,7 @@ namespace SabreTools.Library.DatItems
/// </summary>
/// <param name="itemType">Type of the DatItem to be created</param>
/// <returns>DatItem of the specific internal type that corresponds to the inputs</returns>
public static DatItem Create(ItemType itemType)
public static DatItem Create(ItemType? itemType)
{
#if NET_FRAMEWORK
switch (itemType)
@@ -773,31 +748,31 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
if (fields.Contains(Field.PartName) && Part != null)
if (fields.Contains(Field.DatItem_Part_Name) && Part != null)
Part.Name = null;
if (fields.Contains(Field.PartInterface) && Part != null)
if (fields.Contains(Field.DatItem_Part_Interface) && Part != null)
Part.Interface = null;
if (fields.Contains(Field.Features))
if (fields.Contains(Field.DatItem_Features))
Features = null;
if (fields.Contains(Field.AreaName))
if (fields.Contains(Field.DatItem_AreaName))
AreaName = null;
if (fields.Contains(Field.AreaSize))
if (fields.Contains(Field.DatItem_AreaSize))
AreaSize = null;
if (fields.Contains(Field.AreaWidth))
if (fields.Contains(Field.DatItem_AreaWidth))
AreaWidth = null;
if (fields.Contains(Field.AreaEndianness))
if (fields.Contains(Field.DatItem_AreaEndianness))
AreaEndianness = null;
if (fields.Contains(Field.Value))
if (fields.Contains(Field.DatItem_Value))
Value = null;
if (fields.Contains(Field.LoadFlag))
if (fields.Contains(Field.DatItem_LoadFlag))
LoadFlag = null;
#endregion
@@ -823,7 +798,7 @@ namespace SabreTools.Library.DatItems
// Now determine what the key should be based on the bucketedBy value
switch (bucketedBy)
{
case Field.CRC:
case Field.DatItem_CRC:
key = Constants.CRCZero;
break;
@@ -843,29 +818,29 @@ namespace SabreTools.Library.DatItems
key = WebUtility.HtmlEncode(key);
break;
case Field.MD5:
case Field.DatItem_MD5:
key = Constants.MD5Zero;
break;
#if NET_FRAMEWORK
case Field.RIPEMD160:
case Field.DatItem_RIPEMD160:
key = Constants.RIPEMD160Zero;
break;
#endif
case Field.SHA1:
case Field.DatItem_SHA1:
key = Constants.SHA1Zero;
break;
case Field.SHA256:
case Field.DatItem_SHA256:
key = Constants.SHA256Zero;
break;
case Field.SHA384:
case Field.DatItem_SHA384:
key = Constants.SHA384Zero;
break;
case Field.SHA512:
case Field.DatItem_SHA512:
key = Constants.SHA512Zero;
break;
}
@@ -922,7 +897,7 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
if (fields.Contains(Field.PartName))
if (fields.Contains(Field.DatItem_Part_Name))
{
if (Part == null)
Part = new SoftwareListPart();
@@ -930,7 +905,7 @@ namespace SabreTools.Library.DatItems
Part.Name = item.Part?.Name;
}
if (fields.Contains(Field.PartInterface))
if (fields.Contains(Field.DatItem_Part_Interface))
{
if (Part == null)
Part = new SoftwareListPart();
@@ -938,25 +913,25 @@ namespace SabreTools.Library.DatItems
Part.Interface = item.Part?.Interface;
}
if (fields.Contains(Field.Features))
if (fields.Contains(Field.DatItem_Features))
Features = item.Features;
if (fields.Contains(Field.AreaName))
if (fields.Contains(Field.DatItem_AreaName))
AreaName = item.AreaName;
if (fields.Contains(Field.AreaSize))
if (fields.Contains(Field.DatItem_AreaSize))
AreaSize = item.AreaSize;
if (fields.Contains(Field.AreaWidth))
if (fields.Contains(Field.DatItem_AreaWidth))
AreaWidth = item.AreaWidth;
if (fields.Contains(Field.AreaEndianness))
if (fields.Contains(Field.DatItem_AreaEndianness))
AreaEndianness = item.AreaEndianness;
if (fields.Contains(Field.Value))
if (fields.Contains(Field.DatItem_Value))
Value = item.Value;
if (fields.Contains(Field.LoadFlag))
if (fields.Contains(Field.DatItem_LoadFlag))
LoadFlag = item.LoadFlag;
#endregion

View File

@@ -143,43 +143,43 @@ namespace SabreTools.Library.DatItems
base.SetFields(mappings);
// Handle Disk-specific fields
if (mappings.Keys.Contains(Field.MD5))
MD5 = mappings[Field.MD5];
if (mappings.Keys.Contains(Field.DatItem_MD5))
MD5 = mappings[Field.DatItem_MD5];
#if NET_FRAMEWORK
if (mappings.Keys.Contains(Field.RIPEMD160))
RIPEMD160 = mappings[Field.RIPEMD160];
if (mappings.Keys.Contains(Field.DatItem_RIPEMD160))
RIPEMD160 = mappings[Field.DatItem_RIPEMD160];
#endif
if (mappings.Keys.Contains(Field.SHA1))
SHA1 = mappings[Field.SHA1];
if (mappings.Keys.Contains(Field.DatItem_SHA1))
SHA1 = mappings[Field.DatItem_SHA1];
if (mappings.Keys.Contains(Field.SHA256))
SHA256 = mappings[Field.SHA256];
if (mappings.Keys.Contains(Field.DatItem_SHA256))
SHA256 = mappings[Field.DatItem_SHA256];
if (mappings.Keys.Contains(Field.SHA384))
SHA384 = mappings[Field.SHA384];
if (mappings.Keys.Contains(Field.DatItem_SHA384))
SHA384 = mappings[Field.DatItem_SHA384];
if (mappings.Keys.Contains(Field.SHA512))
SHA512 = mappings[Field.SHA512];
if (mappings.Keys.Contains(Field.DatItem_SHA512))
SHA512 = mappings[Field.DatItem_SHA512];
if (mappings.Keys.Contains(Field.Merge))
MergeTag = mappings[Field.Merge];
if (mappings.Keys.Contains(Field.DatItem_Merge))
MergeTag = mappings[Field.DatItem_Merge];
if (mappings.Keys.Contains(Field.Region))
Region = mappings[Field.Region];
if (mappings.Keys.Contains(Field.DatItem_Region))
Region = mappings[Field.DatItem_Region];
if (mappings.Keys.Contains(Field.Index))
Index = mappings[Field.Index];
if (mappings.Keys.Contains(Field.DatItem_Index))
Index = mappings[Field.DatItem_Index];
if (mappings.Keys.Contains(Field.Writable))
Writable = mappings[Field.Writable].AsYesNo();
if (mappings.Keys.Contains(Field.DatItem_Writable))
Writable = mappings[Field.DatItem_Writable].AsYesNo();
if (mappings.Keys.Contains(Field.Status))
ItemStatus = mappings[Field.Status].AsItemStatus();
if (mappings.Keys.Contains(Field.DatItem_Status))
ItemStatus = mappings[Field.DatItem_Status].AsItemStatus();
if (mappings.Keys.Contains(Field.Optional))
Optional = mappings[Field.Optional].AsYesNo();
if (mappings.Keys.Contains(Field.DatItem_Optional))
Optional = mappings[Field.DatItem_Optional].AsYesNo();
}
#endregion
@@ -558,42 +558,42 @@ namespace SabreTools.Library.DatItems
base.RemoveFields(fields);
// Remove the fields
if (fields.Contains(Field.MD5))
if (fields.Contains(Field.DatItem_MD5))
MD5 = null;
#if NET_FRAMEWORK
if (fields.Contains(Field.RIPEMD160))
if (fields.Contains(Field.DatItem_RIPEMD160))
RIPEMD160 = null;
#endif
if (fields.Contains(Field.SHA1))
if (fields.Contains(Field.DatItem_SHA1))
SHA1 = null;
if (fields.Contains(Field.SHA256))
if (fields.Contains(Field.DatItem_SHA256))
SHA256 = null;
if (fields.Contains(Field.SHA384))
if (fields.Contains(Field.DatItem_SHA384))
SHA384 = null;
if (fields.Contains(Field.SHA512))
if (fields.Contains(Field.DatItem_SHA512))
SHA512 = null;
if (fields.Contains(Field.Merge))
if (fields.Contains(Field.DatItem_Merge))
MergeTag = null;
if (fields.Contains(Field.Region))
if (fields.Contains(Field.DatItem_Region))
Region = null;
if (fields.Contains(Field.Index))
if (fields.Contains(Field.DatItem_Index))
Index = null;
if (fields.Contains(Field.Writable))
if (fields.Contains(Field.DatItem_Writable))
Writable = null;
if (fields.Contains(Field.Status))
if (fields.Contains(Field.DatItem_Status))
ItemStatus = ItemStatus.NULL;
if (fields.Contains(Field.Optional))
if (fields.Contains(Field.DatItem_Optional))
Optional = null;
}
@@ -616,29 +616,29 @@ namespace SabreTools.Library.DatItems
// Now determine what the key should be based on the bucketedBy value
switch (bucketedBy)
{
case Field.MD5:
case Field.DatItem_MD5:
key = MD5;
break;
#if NET_FRAMEWORK
case Field.RIPEMD160:
case Field.DatItem_RIPEMD160:
key = RIPEMD160;
break;
#endif
case Field.SHA1:
case Field.DatItem_SHA1:
key = SHA1;
break;
case Field.SHA256:
case Field.DatItem_SHA256:
key = SHA256;
break;
case Field.SHA384:
case Field.DatItem_SHA384:
key = SHA384;
break;
case Field.SHA512:
case Field.DatItem_SHA512:
key = SHA512;
break;
@@ -672,60 +672,60 @@ namespace SabreTools.Library.DatItems
Disk newItem = item as Disk;
// Replace the fields
if (fields.Contains(Field.MD5))
if (fields.Contains(Field.DatItem_MD5))
{
if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5))
MD5 = newItem.MD5;
}
#if NET_FRAMEWORK
if (fields.Contains(Field.RIPEMD160))
if (fields.Contains(Field.DatItem_RIPEMD160))
{
if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160))
RIPEMD160 = newItem.RIPEMD160;
}
#endif
if (fields.Contains(Field.SHA1))
if (fields.Contains(Field.DatItem_SHA1))
{
if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1))
SHA1 = newItem.SHA1;
}
if (fields.Contains(Field.SHA256))
if (fields.Contains(Field.DatItem_SHA256))
{
if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256))
SHA256 = newItem.SHA256;
}
if (fields.Contains(Field.SHA384))
if (fields.Contains(Field.DatItem_SHA384))
{
if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384))
SHA384 = newItem.SHA384;
}
if (fields.Contains(Field.SHA512))
if (fields.Contains(Field.DatItem_SHA512))
{
if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512))
SHA512 = newItem.SHA512;
}
if (fields.Contains(Field.Merge))
if (fields.Contains(Field.DatItem_Merge))
MergeTag = newItem.MergeTag;
if (fields.Contains(Field.Region))
if (fields.Contains(Field.DatItem_Region))
Region = newItem.Region;
if (fields.Contains(Field.Index))
if (fields.Contains(Field.DatItem_Index))
Index = newItem.Index;
if (fields.Contains(Field.Writable))
if (fields.Contains(Field.DatItem_Writable))
Writable = newItem.Writable;
if (fields.Contains(Field.Status))
if (fields.Contains(Field.DatItem_Status))
ItemStatus = newItem.ItemStatus;
if (fields.Contains(Field.Optional))
if (fields.Contains(Field.DatItem_Optional))
Optional = newItem.Optional;
}

View File

@@ -117,7 +117,7 @@ namespace SabreTools.Library.DatItems
Machine_Players,
Machine_Rotation,
Machine_Control,
Machine_SupportStatus,
Machine_Status,
Machine_DisplayCount,
Machine_DisplayType,
Machine_Buttons,
@@ -371,51 +371,61 @@ namespace SabreTools.Library.DatItems
#endregion
// TODO: Left off here on renaming
#region SoftwareList
PartName,
PartInterface,
Features,
AreaName,
AreaSize,
AreaWidth,
AreaEndianness,
Value,
LoadFlag,
// Part
DatItem_Part, // TODO: Fully implement Part
DatItem_Part_Name,
DatItem_Part_Interface,
// Feature
DatItem_Features, // TODO: Fully implement Feature
DatItem_Feature_Name,
DatItem_Feature_Value,
DatItem_AreaName,
DatItem_AreaSize,
DatItem_AreaWidth,
DatItem_AreaEndianness,
DatItem_Value,
DatItem_LoadFlag,
#endregion
#region Item-Specific
// BiosSet
Default,
BiosDescription,
DatItem_Default,
DatItem_Description,
// Disk
MD5,
DatItem_MD5,
#if NET_FRAMEWORK
RIPEMD160,
DatItem_RIPEMD160,
#endif
SHA1,
SHA256,
SHA384,
SHA512,
Merge,
Region,
Index,
Writable,
Optional,
Status,
DatItem_SHA1,
DatItem_SHA256,
DatItem_SHA384,
DatItem_SHA512,
DatItem_Merge,
DatItem_Region,
DatItem_Index,
DatItem_Writable,
DatItem_Status,
DatItem_Optional,
// Release
Language,
Date,
DatItem_Language,
DatItem_Date,
// Rom
Bios,
Size,
CRC,
Offset,
Inverted,
DatItem_Bios,
DatItem_Size,
DatItem_CRC,
DatItem_Offset,
DatItem_Inverted,
#endregion
#endregion // DatItem
}

View File

@@ -432,8 +432,8 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.Machine_Control))
Control = mappings[Field.Machine_Control];
if (mappings.Keys.Contains(Field.Machine_SupportStatus))
Status = mappings[Field.Machine_SupportStatus];
if (mappings.Keys.Contains(Field.Machine_Status))
Status = mappings[Field.Machine_Status];
if (mappings.Keys.Contains(Field.Machine_DisplayCount))
DisplayCount = mappings[Field.Machine_DisplayCount];
@@ -454,34 +454,22 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.Machine_Runnable))
Runnable = mappings[Field.Machine_Runnable].AsRunnable();
if (mappings.Keys.Contains(Field.Machine_DeviceReference_Name))
{
if (DeviceReferences == null)
DeviceReferences = new List<ListXmlDeviceReference>();
var devices = mappings[Field.Machine_DeviceReference_Name].Split(';').Select(d => new ListXmlDeviceReference() { Name = d, });
DeviceReferences.AddRange(devices);
}
// TODO: Add Field.Slot
if (mappings.Keys.Contains(Field.Machine_Infos))
{
if (Infos == null)
Infos = new List<SoftwareListInfo>();
string[] pairs = mappings[Field.Machine_Infos].Split(';');
foreach (string pair in pairs)
{
string[] split = pair.Split('=');
var infoObj = new SoftwareListInfo();
infoObj.Name = split[0];
infoObj.Value = split[1];
Infos.Add(infoObj);
}
}
// TODO: Add Machine_DeviceReference*
// TODO: Add Machine_Chip*
// TODO: Add Machine_Display*
// TODO: Add Machine_Sound*
// TODO: Add Machine_Condition*
// TODO: Add Machine_Input*
// TODO: Add Machine_DipSwitch*
// TODO: Add Machine_Configuration*
// TODO: Add Machine_Port*
// TODO: Add Machine_Adjuster*
// TODO: Add Machine_Driver*
// TODO: Add Machine_Feature*
// TODO: Add Machine_Device*
// TODO: Add Machine_Slot*
// TODO: Add Machine_SoftwareList*
// TODO: Add Machine_RamOption*
#endregion
@@ -544,31 +532,8 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.Machine_Supported))
Supported = mappings[Field.Machine_Supported].AsSupported();
if (mappings.Keys.Contains(Field.Machine_SharedFeatures))
{
if (SharedFeatures == null)
SharedFeatures = new List<SoftwareListSharedFeature>();
string[] pairs = mappings[Field.Machine_SharedFeatures].Split(';');
foreach (string pair in pairs)
{
string[] split = pair.Split('=');
var sharedFeature = new SoftwareListSharedFeature();
sharedFeature.Name = split[0];
sharedFeature.Value = split[1];
SharedFeatures.Add(sharedFeature);
}
}
if (mappings.Keys.Contains(Field.Machine_DipSwitches))
{
if (DipSwitches == null)
DipSwitches = new List<ListXmlDipSwitch>();
// TODO: There's no way this will work... just create the new list for now
}
// TODO: Add Machine_Info*
// TODO: Add Machine_SharedFeature*
#endregion
}
@@ -1018,7 +983,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.Machine_Control))
Control = null;
if (fields.Contains(Field.Machine_SupportStatus))
if (fields.Contains(Field.Machine_Status))
Status = null;
if (fields.Contains(Field.Machine_DisplayCount))
@@ -1182,7 +1147,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.Machine_Control))
Control = machine.Control;
if (fields.Contains(Field.Machine_SupportStatus))
if (fields.Contains(Field.Machine_Status))
Status = machine.Status;
if (fields.Contains(Field.Machine_DisplayCount))

View File

@@ -53,17 +53,17 @@ namespace SabreTools.Library.DatItems
base.SetFields(mappings);
// Handle Release-specific fields
if (mappings.Keys.Contains(Field.Region))
Region = mappings[Field.Region];
if (mappings.Keys.Contains(Field.DatItem_Region))
Region = mappings[Field.DatItem_Region];
if (mappings.Keys.Contains(Field.Language))
Language = mappings[Field.Language];
if (mappings.Keys.Contains(Field.DatItem_Language))
Language = mappings[Field.DatItem_Language];
if (mappings.Keys.Contains(Field.Date))
Date = mappings[Field.Date];
if (mappings.Keys.Contains(Field.DatItem_Date))
Date = mappings[Field.DatItem_Date];
if (mappings.Keys.Contains(Field.Default))
Default = mappings[Field.Default].AsYesNo();
if (mappings.Keys.Contains(Field.DatItem_Default))
Default = mappings[Field.DatItem_Default].AsYesNo();
}
#endregion
@@ -195,16 +195,16 @@ namespace SabreTools.Library.DatItems
base.RemoveFields(fields);
// Remove the fields
if (fields.Contains(Field.Region))
if (fields.Contains(Field.DatItem_Region))
Region = null;
if (fields.Contains(Field.Language))
if (fields.Contains(Field.DatItem_Language))
Language = null;
if (fields.Contains(Field.Date))
if (fields.Contains(Field.DatItem_Date))
Date = null;
if (fields.Contains(Field.Default))
if (fields.Contains(Field.DatItem_Default))
Default = null;
}
@@ -230,16 +230,16 @@ namespace SabreTools.Library.DatItems
Release newItem = item as Release;
// Replace the fields
if (fields.Contains(Field.Region))
if (fields.Contains(Field.DatItem_Region))
Region = newItem.Region;
if (fields.Contains(Field.Language))
if (fields.Contains(Field.DatItem_Language))
Language = newItem.Language;
if (fields.Contains(Field.Date))
if (fields.Contains(Field.DatItem_Date))
Date = newItem.Date;
if (fields.Contains(Field.Default))
if (fields.Contains(Field.DatItem_Default))
Default = newItem.Default;
}

View File

@@ -174,58 +174,58 @@ namespace SabreTools.Library.DatItems
base.SetFields(mappings);
// Handle Rom-specific fields
if (mappings.Keys.Contains(Field.Bios))
Bios = mappings[Field.Bios];
if (mappings.Keys.Contains(Field.DatItem_Bios))
Bios = mappings[Field.DatItem_Bios];
if (mappings.Keys.Contains(Field.Size))
if (mappings.Keys.Contains(Field.DatItem_Size))
{
if (Int64.TryParse(mappings[Field.Size], out long size))
if (Int64.TryParse(mappings[Field.DatItem_Size], out long size))
Size = size;
}
if (mappings.Keys.Contains(Field.CRC))
CRC = mappings[Field.CRC];
if (mappings.Keys.Contains(Field.DatItem_CRC))
CRC = mappings[Field.DatItem_CRC];
if (mappings.Keys.Contains(Field.MD5))
MD5 = mappings[Field.MD5];
if (mappings.Keys.Contains(Field.DatItem_MD5))
MD5 = mappings[Field.DatItem_MD5];
#if NET_FRAMEWORK
if (mappings.Keys.Contains(Field.RIPEMD160))
RIPEMD160 = mappings[Field.RIPEMD160];
if (mappings.Keys.Contains(Field.DatItem_RIPEMD160))
RIPEMD160 = mappings[Field.DatItem_RIPEMD160];
#endif
if (mappings.Keys.Contains(Field.SHA1))
SHA1 = mappings[Field.SHA1];
if (mappings.Keys.Contains(Field.DatItem_SHA1))
SHA1 = mappings[Field.DatItem_SHA1];
if (mappings.Keys.Contains(Field.SHA256))
SHA256 = mappings[Field.SHA256];
if (mappings.Keys.Contains(Field.DatItem_SHA256))
SHA256 = mappings[Field.DatItem_SHA256];
if (mappings.Keys.Contains(Field.SHA384))
SHA384 = mappings[Field.SHA384];
if (mappings.Keys.Contains(Field.DatItem_SHA384))
SHA384 = mappings[Field.DatItem_SHA384];
if (mappings.Keys.Contains(Field.SHA512))
SHA512 = mappings[Field.SHA512];
if (mappings.Keys.Contains(Field.DatItem_SHA512))
SHA512 = mappings[Field.DatItem_SHA512];
if (mappings.Keys.Contains(Field.Merge))
MergeTag = mappings[Field.Merge];
if (mappings.Keys.Contains(Field.DatItem_Merge))
MergeTag = mappings[Field.DatItem_Merge];
if (mappings.Keys.Contains(Field.Region))
Region = mappings[Field.Region];
if (mappings.Keys.Contains(Field.DatItem_Region))
Region = mappings[Field.DatItem_Region];
if (mappings.Keys.Contains(Field.Offset))
Offset = mappings[Field.Offset];
if (mappings.Keys.Contains(Field.DatItem_Offset))
Offset = mappings[Field.DatItem_Offset];
if (mappings.Keys.Contains(Field.Date))
Date = mappings[Field.Date];
if (mappings.Keys.Contains(Field.DatItem_Date))
Date = mappings[Field.DatItem_Date];
if (mappings.Keys.Contains(Field.Status))
ItemStatus = mappings[Field.Status].AsItemStatus();
if (mappings.Keys.Contains(Field.DatItem_Status))
ItemStatus = mappings[Field.DatItem_Status].AsItemStatus();
if (mappings.Keys.Contains(Field.Optional))
Optional = mappings[Field.Optional].AsYesNo();
if (mappings.Keys.Contains(Field.DatItem_Optional))
Optional = mappings[Field.DatItem_Optional].AsYesNo();
if (mappings.Keys.Contains(Field.Inverted))
Inverted = mappings[Field.Optional].AsYesNo();
if (mappings.Keys.Contains(Field.DatItem_Inverted))
Inverted = mappings[Field.DatItem_Optional].AsYesNo();
}
#endregion
@@ -621,54 +621,54 @@ namespace SabreTools.Library.DatItems
base.RemoveFields(fields);
// Remove the fields
if (fields.Contains(Field.Bios))
if (fields.Contains(Field.DatItem_Bios))
Bios = null;
if (fields.Contains(Field.Size))
if (fields.Contains(Field.DatItem_Size))
Size = 0;
if (fields.Contains(Field.CRC))
if (fields.Contains(Field.DatItem_CRC))
CRC = null;
if (fields.Contains(Field.MD5))
if (fields.Contains(Field.DatItem_MD5))
MD5 = null;
#if NET_FRAMEWORK
if (fields.Contains(Field.RIPEMD160))
if (fields.Contains(Field.DatItem_RIPEMD160))
RIPEMD160 = null;
#endif
if (fields.Contains(Field.SHA1))
if (fields.Contains(Field.DatItem_SHA1))
SHA1 = null;
if (fields.Contains(Field.SHA256))
if (fields.Contains(Field.DatItem_SHA256))
SHA256 = null;
if (fields.Contains(Field.SHA384))
if (fields.Contains(Field.DatItem_SHA384))
SHA384 = null;
if (fields.Contains(Field.SHA512))
if (fields.Contains(Field.DatItem_SHA512))
SHA512 = null;
if (fields.Contains(Field.Merge))
if (fields.Contains(Field.DatItem_Merge))
MergeTag = null;
if (fields.Contains(Field.Region))
if (fields.Contains(Field.DatItem_Region))
Region = null;
if (fields.Contains(Field.Offset))
if (fields.Contains(Field.DatItem_Offset))
Offset = null;
if (fields.Contains(Field.Date))
if (fields.Contains(Field.DatItem_Date))
Date = null;
if (fields.Contains(Field.Status))
if (fields.Contains(Field.DatItem_Status))
ItemStatus = ItemStatus.NULL;
if (fields.Contains(Field.Optional))
if (fields.Contains(Field.DatItem_Optional))
Optional = null;
if (fields.Contains(Field.Inverted))
if (fields.Contains(Field.DatItem_Inverted))
Inverted = null;
}
@@ -691,33 +691,33 @@ namespace SabreTools.Library.DatItems
// Now determine what the key should be based on the bucketedBy value
switch (bucketedBy)
{
case Field.CRC:
case Field.DatItem_CRC:
key = CRC;
break;
case Field.MD5:
case Field.DatItem_MD5:
key = MD5;
break;
#if NET_FRAMEWORK
case Field.RIPEMD160:
case Field.DatItem_RIPEMD160:
key = RIPEMD160;
break;
#endif
case Field.SHA1:
case Field.DatItem_SHA1:
key = SHA1;
break;
case Field.SHA256:
case Field.DatItem_SHA256:
key = SHA256;
break;
case Field.SHA384:
case Field.DatItem_SHA384:
key = SHA384;
break;
case Field.SHA512:
case Field.DatItem_SHA512:
key = SHA512;
break;
@@ -751,75 +751,75 @@ namespace SabreTools.Library.DatItems
Rom newItem = item as Rom;
// Replace the fields
if (fields.Contains(Field.Bios))
if (fields.Contains(Field.DatItem_Bios))
Bios = newItem.Bios;
if (fields.Contains(Field.Size))
if (fields.Contains(Field.DatItem_Size))
Size = newItem.Size;
if (fields.Contains(Field.CRC))
if (fields.Contains(Field.DatItem_CRC))
{
if (string.IsNullOrEmpty(CRC) && !string.IsNullOrEmpty(newItem.CRC))
CRC = newItem.CRC;
}
if (fields.Contains(Field.MD5))
if (fields.Contains(Field.DatItem_MD5))
{
if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5))
MD5 = newItem.MD5;
}
#if NET_FRAMEWORK
if (fields.Contains(Field.RIPEMD160))
if (fields.Contains(Field.DatItem_RIPEMD160))
{
if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160))
RIPEMD160 = newItem.RIPEMD160;
}
#endif
if (fields.Contains(Field.SHA1))
if (fields.Contains(Field.DatItem_SHA1))
{
if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1))
SHA1 = newItem.SHA1;
}
if (fields.Contains(Field.SHA256))
if (fields.Contains(Field.DatItem_SHA256))
{
if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256))
SHA256 = newItem.SHA256;
}
if (fields.Contains(Field.SHA384))
if (fields.Contains(Field.DatItem_SHA384))
{
if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384))
SHA384 = newItem.SHA384;
}
if (fields.Contains(Field.SHA512))
if (fields.Contains(Field.DatItem_SHA512))
{
if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512))
SHA512 = newItem.SHA512;
}
if (fields.Contains(Field.Merge))
if (fields.Contains(Field.DatItem_Merge))
MergeTag = newItem.MergeTag;
if (fields.Contains(Field.Region))
if (fields.Contains(Field.DatItem_Region))
Region = newItem.Region;
if (fields.Contains(Field.Offset))
if (fields.Contains(Field.DatItem_Offset))
Offset = newItem.Offset;
if (fields.Contains(Field.Date))
if (fields.Contains(Field.DatItem_Date))
Date = newItem.Date;
if (fields.Contains(Field.Status))
if (fields.Contains(Field.DatItem_Status))
ItemStatus = newItem.ItemStatus;
if (fields.Contains(Field.Optional))
if (fields.Contains(Field.DatItem_Optional))
Optional = newItem.Optional;
if (fields.Contains(Field.Inverted))
if (fields.Contains(Field.DatItem_Inverted))
Inverted = newItem.Inverted;
}

View File

@@ -664,7 +664,7 @@ namespace SabreTools.Library.Filtering
Control.PositiveSet.Add(value);
break;
case Field.Machine_SupportStatus:
case Field.Machine_Status:
if (negate)
SupportStatus.NegativeSet.Add(value);
else
@@ -931,28 +931,28 @@ namespace SabreTools.Library.Filtering
#region SoftwareList
case Field.PartName:
case Field.DatItem_Part_Name:
if (negate)
PartName.NegativeSet.Add(value);
else
PartName.PositiveSet.Add(value);
break;
case Field.PartInterface:
case Field.DatItem_Part_Interface:
if (negate)
PartInterface.NegativeSet.Add(value);
else
PartInterface.PositiveSet.Add(value);
break;
case Field.AreaName:
case Field.DatItem_AreaName:
if (negate)
AreaName.NegativeSet.Add(value);
else
AreaName.PositiveSet.Add(value);
break;
case Field.AreaSize:
case Field.DatItem_AreaSize:
bool? asOperation = null;
if (value.StartsWith(">"))
asOperation = true;
@@ -1004,28 +1004,28 @@ namespace SabreTools.Library.Filtering
break;
case Field.AreaWidth:
case Field.DatItem_AreaWidth:
if (negate)
AreaWidth.NegativeSet.Add(value);
else
AreaWidth.PositiveSet.Add(value);
break;
case Field.AreaEndianness:
case Field.DatItem_AreaEndianness:
if (negate)
AreaEndianness.NegativeSet.Add(value);
else
AreaEndianness.PositiveSet.Add(value);
break;
case Field.Value:
case Field.DatItem_Value:
if (negate)
Value.NegativeSet.Add(value);
else
Value.PositiveSet.Add(value);
break;
case Field.LoadFlag:
case Field.DatItem_LoadFlag:
if (negate)
LoadFlag.NegativeSet.Add(value);
else
@@ -1034,21 +1034,21 @@ namespace SabreTools.Library.Filtering
#endregion
case Field.Default:
case Field.DatItem_Default:
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
Default.Neutral = false;
else
Default.Neutral = true;
break;
case Field.BiosDescription:
case Field.DatItem_Description:
if (negate)
Description.NegativeSet.Add(value);
else
Description.PositiveSet.Add(value);
break;
case Field.Size:
case Field.DatItem_Size:
bool? sOperation = null;
if (value.StartsWith(">"))
sOperation = true;
@@ -1100,14 +1100,14 @@ namespace SabreTools.Library.Filtering
break;
case Field.CRC:
case Field.DatItem_CRC:
if (negate)
CRC.NegativeSet.Add(value);
else
CRC.PositiveSet.Add(value);
break;
case Field.MD5:
case Field.DatItem_MD5:
if (negate)
MD5.NegativeSet.Add(value);
else
@@ -1115,7 +1115,7 @@ namespace SabreTools.Library.Filtering
break;
#if NET_FRAMEWORK
case Field.RIPEMD160:
case Field.DatItem_RIPEMD160:
if (negate)
RIPEMD160.NegativeSet.Add(value);
else
@@ -1123,105 +1123,105 @@ namespace SabreTools.Library.Filtering
break;
#endif
case Field.SHA1:
case Field.DatItem_SHA1:
if (negate)
SHA1.NegativeSet.Add(value);
else
SHA1.PositiveSet.Add(value);
break;
case Field.SHA256:
case Field.DatItem_SHA256:
if (negate)
SHA256.NegativeSet.Add(value);
else
SHA256.PositiveSet.Add(value);
break;
case Field.SHA384:
case Field.DatItem_SHA384:
if (negate)
SHA384.NegativeSet.Add(value);
else
SHA384.PositiveSet.Add(value);
break;
case Field.SHA512:
case Field.DatItem_SHA512:
if (negate)
SHA512.NegativeSet.Add(value);
else
SHA512.PositiveSet.Add(value);
break;
case Field.Merge:
case Field.DatItem_Merge:
if (negate)
MergeTag.NegativeSet.Add(value);
else
MergeTag.PositiveSet.Add(value);
break;
case Field.Region:
case Field.DatItem_Region:
if (negate)
Region.NegativeSet.Add(value);
else
Region.PositiveSet.Add(value);
break;
case Field.Index:
case Field.DatItem_Index:
if (negate)
Index.NegativeSet.Add(value);
else
Index.PositiveSet.Add(value);
break;
case Field.Writable:
case Field.DatItem_Writable:
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
Writable.Neutral = false;
else
Writable.Neutral = true;
break;
case Field.Optional:
case Field.DatItem_Optional:
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
Optional.Neutral = false;
else
Optional.Neutral = true;
break;
case Field.Status:
case Field.DatItem_Status:
if (negate)
Status.Negative |= value.AsItemStatus();
else
Status.Positive |= value.AsItemStatus();
break;
case Field.Language:
case Field.DatItem_Language:
if (negate)
Language.NegativeSet.Add(value);
else
Language.PositiveSet.Add(value);
break;
case Field.Date:
case Field.DatItem_Date:
if (negate)
Date.NegativeSet.Add(value);
else
Date.PositiveSet.Add(value);
break;
case Field.Bios:
case Field.DatItem_Bios:
if (negate)
Bios.NegativeSet.Add(value);
else
Bios.PositiveSet.Add(value);
break;
case Field.Offset:
case Field.DatItem_Offset:
if (negate)
Offset.NegativeSet.Add(value);
else
Offset.PositiveSet.Add(value);
break;
case Field.Inverted:
case Field.DatItem_Inverted:
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
Inverted.Neutral = false;
else

View File

@@ -1,6 +1,7 @@
using SabreTools.Library.DatFiles;
using SabreTools.Library.DatItems;
using SabreTools.Library.Reports;
using System.Text.RegularExpressions;
namespace SabreTools.Library.Tools
{
@@ -16,21 +17,21 @@ namespace SabreTools.Library.Tools
switch (hash)
{
case Hash.CRC:
return Field.CRC;
return Field.DatItem_CRC;
case Hash.MD5:
return Field.MD5;
return Field.DatItem_MD5;
#if NET_FRAMEWORK
case Hash.RIPEMD160:
return Field.RIPEMD160;
return Field.DatItem_RIPEMD160;
#endif
case Hash.SHA1:
return Field.SHA1;
return Field.DatItem_SHA1;
case Hash.SHA256:
return Field.SHA256;
return Field.DatItem_SHA256;
case Hash.SHA384:
return Field.SHA384;
return Field.DatItem_SHA384;
case Hash.SHA512:
return Field.SHA512;
return Field.DatItem_SHA512;
default:
return Field.NULL;
@@ -128,6 +129,355 @@ namespace SabreTools.Library.Tools
/// TODO: Needs to be SEVERELY overhauled. Start using dot notation for fields... (where possible)
public static Field AsField(this string input)
{
// If the input is null, we return null
if (input == null)
return Field.NULL;
// Normalize the input
input = input.ToLowerInvariant();
// Create regex strings
string headerRegex = @"^(dat|header|datheader)[.-_\s]";
string machineRegex = @"^(game|machine)[.-_\s]";
string datItemRegex = @"^(item|datitem|archive|biosset|blank|disk|release|rom|sample)[.-_\s]";
// If we have a header field
if (Regex.IsMatch(input, headerRegex))
{
// Replace the match and re-normalize
string headerInput = Regex.Replace(input, headerRegex, string.Empty)
.Replace(' ', '_')
.Replace('-', '_')
.Replace('.', '_');
switch (headerInput)
{
#region Common
case "file":
case "filename":
case "file_name":
return Field.DatHeader_FileName;
case "dat":
case "datname":
case "dat_name":
case "internalname":
case "internal_name":
return Field.DatHeader_Name;
case "desc":
case "description":
return Field.DatHeader_Description;
case "root":
case "rootdir":
case "root_dir":
case "rootdirectory":
case "root_directory":
return Field.DatHeader_RootDir;
case "category":
return Field.DatHeader_Category;
case "version":
return Field.DatHeader_Version;
case "date":
case "timestamp":
case "time_stamp":
return Field.DatHeader_Date;
case "author":
return Field.DatHeader_Author;
case "email":
case "e_mail":
return Field.DatHeader_Email;
case "homepage":
case "home_page":
return Field.DatHeader_Homepage;
case "url":
return Field.DatHeader_Url;
case "comment":
return Field.DatHeader_Comment;
case "header":
case "headerskipper":
case "header_skipper":
case "skipper":
return Field.DatHeader_HeaderSkipper;
case "dattype":
case "type":
case "superdat":
return Field.DatHeader_Type;
case "forcemerging":
case "force_merging":
return Field.DatHeader_ForceMerging;
case "forcenodump":
case "force_nodump":
return Field.DatHeader_ForceNodump;
case "forcepacking":
case "force_packing":
return Field.DatHeader_ForcePacking;
#endregion
#region ListXML
case "debug":
return Field.DatHeader_Debug;
case "mameconfig":
case "mame_config":
return Field.DatHeader_MameConfig;
#endregion
#region Logiqx
case "build":
return Field.DatHeader_Build;
case "rommode":
case "rom_mode":
return Field.DatHeader_RomMode;
case "biosmode":
case "bios_mode":
return Field.DatHeader_BiosMode;
case "samplemode":
case "sample_mode":
return Field.DatHeader_SampleMode;
case "lockrommode":
case "lockrom_mode":
case "lock_rommode":
case "lock_rom_mode":
return Field.DatHeader_LockRomMode;
case "lockbiosmode":
case "lockbios_mode":
case "lock_biosmode":
case "lock_bios_mode":
return Field.DatHeader_LockBiosMode;
case "locksamplemode":
case "locksample_mode":
case "lock_samplemode":
case "lock_sample_mode":
return Field.DatHeader_LockSampleMode;
#endregion
#region OfflineList
case "system":
case "plugin": // Used with RomCenter
return Field.DatHeader_System;
case "screenshotwidth":
case "screenshotswidth":
case "screenshot_width":
case "screenshots_width":
return Field.DatHeader_ScreenshotsWidth;
case "screenshotheight":
case "screenshotsheight":
case "screenshot_height":
case "screenshots_height":
return Field.DatHeader_ScreenshotsHeight;
case "info":
case "infos":
return Field.DatHeader_Infos;
case "info_name":
case "infos_name":
return Field.DatHeader_Info_Name;
case "info_visible":
case "infos_visible":
return Field.DatHeader_Info_Visible;
case "info_isnamingoption":
case "info_is_naming_option":
case "infos_isnamingoption":
case "infos_is_naming_option":
return Field.DatHeader_Info_IsNamingOption;
case "info_default":
case "infos_default":
return Field.DatHeader_Info_Default;
case "canopen":
case "can_open":
return Field.DatHeader_CanOpen;
case "romtitle":
case "rom_title":
return Field.DatHeader_RomTitle;
#endregion
#region RomCenter
case "rcversion":
case "rc_version":
case "romcenterversion":
case "romcenter_version":
case "rom_center_version":
return Field.DatHeader_RomCenterVersion;
#endregion
}
}
// If we have a machine field
else if (Regex.IsMatch(input, machineRegex))
{
// Replace the match and re-normalize
string machineInput = Regex.Replace(input, machineRegex, string.Empty)
.Replace(' ', '_')
.Replace('-', '_')
.Replace('.', '_');
switch (machineInput)
{
#region Common
case "name":
return Field.Machine_Name;
case "comment":
case "extra": // Used with AttractMode
return Field.Machine_Comment;
case "desc":
case "description":
return Field.Machine_Description;
case "year":
return Field.Machine_Year;
case "manufacturer":
return Field.Machine_Manufacturer;
case "publisher":
return Field.Machine_Publisher;
case "category":
return Field.Machine_Category;
case "romof":
case "rom_of":
return Field.Machine_RomOf;
case "cloneof":
case "clone_of":
return Field.Machine_CloneOf;
case "sampleof":
case "sample_of":
return Field.Machine_SampleOf;
case "type":
return Field.Machine_Type;
#endregion
#region AttractMode
case "players":
return Field.Machine_Players;
case "rotation":
return Field.Machine_Rotation;
case "control":
return Field.Machine_Control;
case "amstatus":
case "am_status":
case "gamestatus":
case "supportstatus":
case "support_status":
return Field.Machine_Status;
case "displaycount":
case "displays":
return Field.Machine_DisplayCount;
case "displaytype":
return Field.Machine_DisplayType;
case "buttons":
return Field.Machine_Buttons;
#endregion
#region ListXML
case "sourcefile":
case "source_file":
return Field.Machine_SourceFile;
case "runnable":
return Field.Machine_Runnable;
case "devreferences":
case "devicereferences":
return Field.Machine_DeviceReferences;
case "devreference_name":
case "devicereference_name":
return Field.Machine_DeviceReference_Name;
case "chips":
return Field.Machine_Chips;
case "chip_name":
return Field.Machine_Chip_Name;
case "chip_tag":
return Field.Machine_Chip_Tag;
case "chip_type":
return Field.Machine_Chip_Type;
case "chip_clock":
return Field.Machine_Chip_Clock;
#endregion
}
}
// If we have a datitem field
else if (Regex.IsMatch(input, datItemRegex))
{
// Replace the match and re-normalize
string itemInput = Regex.Replace(input, datItemRegex, string.Empty)
.Replace(' ', '_')
.Replace('-', '_')
.Replace('.', '_');
switch (itemInput)
{
#region Common
#endregion
}
}
// Else, we fall back on the old matching
switch (input?.ToLowerInvariant())
{
#region Machine
@@ -212,7 +562,7 @@ namespace SabreTools.Library.Tools
case "machine-status":
case "supportstatus":
case "support-status":
return Field.Machine_SupportStatus;
return Field.Machine_Status;
case "displaycount":
case "display-count":
@@ -403,98 +753,98 @@ namespace SabreTools.Library.Tools
case "partname":
case "part name":
case "part-name":
return Field.PartName;
return Field.DatItem_Part_Name;
case "partinterface":
case "part interface":
case "part-interface":
return Field.PartInterface;
return Field.DatItem_Part_Interface;
case "features":
return Field.Features;
return Field.DatItem_Features;
case "areaname":
case "area name":
case "area-name":
return Field.AreaName;
return Field.DatItem_AreaName;
case "areasize":
case "area size":
case "area-size":
return Field.AreaSize;
return Field.DatItem_AreaSize;
case "areawidth":
case "area width":
case "area-width":
return Field.AreaWidth;
return Field.DatItem_AreaWidth;
case "areaendinanness":
case "area endianness":
case "area-endianness":
return Field.AreaEndianness;
return Field.DatItem_AreaEndianness;
case "value":
return Field.Value;
return Field.DatItem_Value;
case "loadflag":
case "load flag":
case "load-flag":
return Field.LoadFlag;
return Field.DatItem_LoadFlag;
#endregion
case "bios":
return Field.Bios;
return Field.DatItem_Bios;
case "biosdescription":
case "bios-description":
case "biossetdescription":
case "biosset-description":
case "bios-set-description":
return Field.BiosDescription;
return Field.DatItem_Description;
case "crc":
case "crc32":
return Field.CRC;
return Field.DatItem_CRC;
case "default":
return Field.Default;
return Field.DatItem_Default;
case "date":
return Field.Date;
return Field.DatItem_Date;
case "equal":
case "greater":
case "less":
case "size":
return Field.Size;
return Field.DatItem_Size;
case "index":
return Field.Index;
return Field.DatItem_Index;
case "inverted":
return Field.Inverted;
return Field.DatItem_Inverted;
case "itemtatus":
case "item-status":
case "status":
return Field.Status;
return Field.DatItem_Status;
case "language":
return Field.Language;
return Field.DatItem_Language;
case "md5":
return Field.MD5;
return Field.DatItem_MD5;
case "merge":
case "mergetag":
case "merge-tag":
return Field.Merge;
return Field.DatItem_Merge;
case "offset":
return Field.Offset;
return Field.DatItem_Offset;
case "optional":
return Field.Optional;
return Field.DatItem_Optional;
case "region":
return Field.Region;
return Field.DatItem_Region;
#if NET_FRAMEWORK
case "ripemd160":
return Field.RIPEMD160;
return Field.DatItem_RIPEMD160;
#endif
case "sha1":
case "sha-1":
return Field.SHA1;
return Field.DatItem_SHA1;
case "sha256":
case "sha-256":
return Field.SHA256;
return Field.DatItem_SHA256;
case "sha384":
case "sha-384":
return Field.SHA384;
return Field.DatItem_SHA384;
case "sha512":
case "sha-512":
return Field.SHA512;
return Field.DatItem_SHA512;
case "writable":
return Field.Writable;
return Field.DatItem_Writable;
#endregion

View File

@@ -2560,15 +2560,15 @@ Some special strings that can be used:
if (GetBoolean(features, UpdateHashesValue))
{
Globals.Logger.User($"This flag '{(UpdateHashesValue)}' is deprecated, please use {(string.Join(", ", UpdateFieldListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
updateFields.Add(Field.CRC);
updateFields.Add(Field.MD5);
updateFields.Add(Field.DatItem_CRC);
updateFields.Add(Field.DatItem_MD5);
#if NET_FRAMEWORK
updateFields.Add(Field.RIPEMD160);
updateFields.Add(Field.DatItem_RIPEMD160);
#endif
updateFields.Add(Field.SHA1);
updateFields.Add(Field.SHA256);
updateFields.Add(Field.SHA384);
updateFields.Add(Field.SHA512);
updateFields.Add(Field.DatItem_SHA1);
updateFields.Add(Field.DatItem_SHA256);
updateFields.Add(Field.DatItem_SHA384);
updateFields.Add(Field.DatItem_SHA512);
}
if (GetBoolean(features, UpdateManufacturerValue))
@@ -2768,12 +2768,12 @@ Some special strings that can be used:
if (features.ContainsKey(NotCrcListValue))
{
Globals.Logger.User($"This flag '{(NotCrcListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.CRC, GetList(features, NotCrcListValue), true);
filter.SetFilter(Field.DatItem_CRC, GetList(features, NotCrcListValue), true);
}
if (features.ContainsKey(CrcListValue))
{
Globals.Logger.User($"This flag '{(CrcListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.CRC, GetList(features, NotCrcListValue), false);
filter.SetFilter(Field.DatItem_CRC, GetList(features, NotCrcListValue), false);
}
// Item name
@@ -2792,12 +2792,12 @@ Some special strings that can be used:
if (features.ContainsKey(NotStatusListValue))
{
Globals.Logger.User($"This flag '{(NotStatusListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.Status, GetList(features, NotStatusListValue), true);
filter.SetFilter(Field.DatItem_Status, GetList(features, NotStatusListValue), true);
}
if (features.ContainsKey(StatusListValue))
{
Globals.Logger.User($"This flag '{(StatusListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.Status, GetList(features, StatusListValue), false);
filter.SetFilter(Field.DatItem_Status, GetList(features, StatusListValue), false);
}
// Item type
@@ -2852,12 +2852,12 @@ Some special strings that can be used:
if (features.ContainsKey(NotMd5ListValue))
{
Globals.Logger.User($"This flag '{(NotMd5ListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.MD5, GetList(features, NotMd5ListValue), true);
filter.SetFilter(Field.DatItem_MD5, GetList(features, NotMd5ListValue), true);
}
if (features.ContainsKey(Md5ListValue))
{
Globals.Logger.User($"This flag '{Md5ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.MD5, GetList(features, Md5ListValue), false);
filter.SetFilter(Field.DatItem_MD5, GetList(features, Md5ListValue), false);
}
#if NET_FRAMEWORK
@@ -2865,12 +2865,12 @@ Some special strings that can be used:
if (features.ContainsKey(NotRipeMd160ListValue))
{
Globals.Logger.User($"This flag '{NotRipeMd160ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.RIPEMD160, GetList(features, NotRipeMd160ListValue), true);
filter.SetFilter(Field.DatItem_RIPEMD160, GetList(features, NotRipeMd160ListValue), true);
}
if (features.ContainsKey(RipeMd160ListValue))
{
Globals.Logger.User($"This flag '{RipeMd160ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.RIPEMD160, GetList(features, RipeMd160ListValue), false);
filter.SetFilter(Field.DatItem_RIPEMD160, GetList(features, RipeMd160ListValue), false);
}
#endif
@@ -2890,48 +2890,48 @@ Some special strings that can be used:
if (features.ContainsKey(NotSha1ListValue))
{
Globals.Logger.User($"This flag '{NotSha1ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.SHA1, GetList(features, NotSha1ListValue), true);
filter.SetFilter(Field.DatItem_SHA1, GetList(features, NotSha1ListValue), true);
}
if (features.ContainsKey(Sha1ListValue))
{
Globals.Logger.User($"This flag '{Sha1ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.SHA1, GetList(features, Sha1ListValue), false);
filter.SetFilter(Field.DatItem_SHA1, GetList(features, Sha1ListValue), false);
}
// SHA256
if (features.ContainsKey(NotSha256ListValue))
{
Globals.Logger.User($"This flag '{NotSha256ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.SHA256, GetList(features, NotSha256ListValue), true);
filter.SetFilter(Field.DatItem_SHA256, GetList(features, NotSha256ListValue), true);
}
if (features.ContainsKey(Sha256ListValue))
{
Globals.Logger.User($"This flag '{Sha256ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.SHA256, GetList(features, Sha256ListValue), false);
filter.SetFilter(Field.DatItem_SHA256, GetList(features, Sha256ListValue), false);
}
// SHA384
if (features.ContainsKey(NotSha384ListValue))
{
Globals.Logger.User($"This flag '{NotSha384ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.SHA384, GetList(features, NotSha384ListValue), true);
filter.SetFilter(Field.DatItem_SHA384, GetList(features, NotSha384ListValue), true);
}
if (features.ContainsKey(Sha384ListValue))
{
Globals.Logger.User($"This flag '{Sha384ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.SHA384, GetList(features, Sha384ListValue), false);
filter.SetFilter(Field.DatItem_SHA384, GetList(features, Sha384ListValue), false);
}
// SHA512
if (features.ContainsKey(NotSha512ListValue))
{
Globals.Logger.User($"This flag '{NotSha512ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.SHA512, GetList(features, NotSha512ListValue), true);
filter.SetFilter(Field.DatItem_SHA512, GetList(features, NotSha512ListValue), true);
}
if (features.ContainsKey(Sha512ListValue))
{
Globals.Logger.User($"This flag '{Sha512ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
filter.SetFilter(Field.SHA512, GetList(features, Sha512ListValue), false);
filter.SetFilter(Field.DatItem_SHA512, GetList(features, Sha512ListValue), false);
}
// Size
@@ -2939,19 +2939,19 @@ Some special strings that can be used:
{
Globals.Logger.User($"This flag '{LessStringValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
var value = Sanitizer.ToSize(GetString(features, LessStringValue));
filter.SetFilter(Field.Size, $"<{value}", false);
filter.SetFilter(Field.DatItem_Size, $"<{value}", false);
}
if (features.ContainsKey(EqualStringValue))
{
Globals.Logger.User($"This flag '{EqualStringValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
var value = Sanitizer.ToSize(GetString(features, EqualStringValue));
filter.SetFilter(Field.Size, $"={value}", false);
filter.SetFilter(Field.DatItem_Size, $"={value}", false);
}
if (features.ContainsKey(GreaterStringValue))
{
Globals.Logger.User($"This flag '{GreaterStringValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
var value = Sanitizer.ToSize(GetString(features, GreaterStringValue));
filter.SetFilter(Field.Size, $">{value}", false);
filter.SetFilter(Field.DatItem_Size, $">{value}", false);
}
#endregion