mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Checkpoint (nw)
This commit is contained in:
@@ -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>();
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user