diff --git a/RombaSharp/Features/RefreshDats.cs b/RombaSharp/Features/RefreshDats.cs index 3bbfe3f9..4119713d 100644 --- a/RombaSharp/Features/RefreshDats.cs +++ b/RombaSharp/Features/RefreshDats.cs @@ -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 databaseDats = new List(); diff --git a/RombaSharp/Features/RescanDepots.cs b/RombaSharp/Features/RescanDepots.cs index bf888ba2..4571091c 100644 --- a/RombaSharp/Features/RescanDepots.cs +++ b/RombaSharp/Features/RescanDepots.cs @@ -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"; diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs index 10ec44bc..3c1394cf 100644 --- a/SabreTools.Library/DatFiles/DatFile.cs +++ b/SabreTools.Library/DatFiles/DatFile.cs @@ -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 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); diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs index 66188cc9..7086c202 100644 --- a/SabreTools.Library/DatFiles/DatHeader.cs +++ b/SabreTools.Library/DatFiles/DatHeader.cs @@ -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 + + /// + /// Set fields with given values + /// + /// Mappings dictionary + public void SetFields(Dictionary 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 /// diff --git a/SabreTools.Library/DatFiles/ItemDictionary.cs b/SabreTools.Library/DatFiles/ItemDictionary.cs index aa278dcd..4c2b7dcd 100644 --- a/SabreTools.Library/DatFiles/ItemDictionary.cs +++ b/SabreTools.Library/DatFiles/ItemDictionary.cs @@ -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; } /// diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs index 7a6cacd5..6fe5d7c0 100644 --- a/SabreTools.Library/DatFiles/SeparatedValue.cs +++ b/SabreTools.Library/DatFiles/SeparatedValue.cs @@ -73,889 +73,30 @@ namespace SabreTools.Library.DatFiles Globals.Logger.Warning($"Malformed line found in '{filename}' at line {svr.LineNumber}"); continue; } - - // Set the output item information - Machine machine = new Machine(); - - bool? def = null, - writable = null, - optional = null, - inverted = null; - string name = null, - altName = null, - altTitle = null, - original = null, - msxType = null, - remark = null, - boot = null, - partName = null, - partInterface = null, - areaName = null, - areaWidth = null, - areaEndianness = null, - slvalue = null, - loadFlag = null, - biosDescription = null, - crc = null, - md5 = null, -#if NET_FRAMEWORK - ripemd160 = null, -#endif - sha1 = null, - sha256 = null, - sha384 = null, - sha512 = null, - merge = null, - region = null, - index = null, - language = null, - date = null, - bios = null, - offset = null; - long? areaSize = null; - long size = -1; - ItemType itemType = ItemType.Rom; - ItemStatus status = ItemStatus.None; - OpenMSXSubType subType = OpenMSXSubType.NULL; - List features = null; + + // Create mapping dictionary + var mappings = new Dictionary(); // Now we loop through and get values for everything for (int i = 0; i < svr.HeaderValues.Count; i++) { + Field key = svr.HeaderValues[i].AsField(); string value = svr.Line[i]; - switch (GetNormalizedHeader(svr.HeaderValues[i])) - { - #region DatFile - - #region Common - - case "DatFile.FileName": - Header.FileName = (Header.FileName== null ? value : Header.FileName); - break; - - case "DatFile.Name": - Header.Name = (Header.Name== null ? value : Header.Name); - break; - - case "DatFile.Description": - Header.Description = (Header.Description== null ? value : Header.Description); - break; - - case "DatFile.RootDir": - Header.RootDir = (Header.RootDir== null ? value : Header.RootDir); - break; - - case "DatFile.Category": - Header.Category = (Header.Category== null ? value : Header.Category); - break; - - case "DatFile.Version": - Header.Version = (Header.Version== null ? value : Header.Version); - break; - - case "DatFile.Date": - Header.Date = (Header.Date== null ? value : Header.Date); - break; - - case "DatFile.Author": - Header.Author = (Header.Author== null ? value : Header.Author); - break; - - case "DatFile.Email": - Header.Email = (Header.Email== null ? value : Header.Email); - break; - - case "DatFile.Homepage": - Header.Homepage = (Header.Homepage== null ? value : Header.Homepage); - break; - - case "DatFile.Url": - Header.Url = (Header.Url== null ? value : Header.Url); - break; - - case "DatFile.Comment": - Header.Comment = (Header.Comment== null ? value : Header.Comment); - break; - - case "DatFile.Header": - Header.HeaderSkipper = (Header.HeaderSkipper== null ? value : Header.HeaderSkipper); - break; - - case "DatFile.Type": - Header.Type = (Header.Type== null ? value : Header.Type); - break; - - case "DatFile.ForceMerging": - Header.ForceMerging = (Header.ForceMerging == MergingFlag.None ? value.AsMergingFlag() : Header.ForceMerging); - break; - - case "DatFile.ForceNodump": - Header.ForceNodump = (Header.ForceNodump == NodumpFlag.None ? value.AsNodumpFlag() : Header.ForceNodump); - break; - - case "DatFile.ForcePacking": - Header.ForcePacking = (Header.ForcePacking == PackingFlag.None ? value.AsPackingFlag() : Header.ForcePacking); - break; - - #endregion - - #region ListXML - - case "DatFile.Debug": - Header.Debug = (Header.Debug == null ? value.AsYesNo() : Header.Debug); - break; - - case "DatFile.MameConfig": - Header.MameConfig = (Header.MameConfig == null ? value : Header.MameConfig); - break; - - #endregion - - #region Logiqx - - case "DatFile.Build": - Header.Build = (Header.Build == null ? value : Header.Build); - break; - - case "DatFile.RomMode": - Header.RomMode = (Header.RomMode == MergingFlag.None ? value.AsMergingFlag() : Header.RomMode); - break; - - case "DatFile.BiosMode": - Header.BiosMode = (Header.BiosMode == MergingFlag.None ? value.AsMergingFlag() : Header.BiosMode); - break; - - case "DatFile.SampleMode": - Header.SampleMode = (Header.SampleMode == MergingFlag.None ? value.AsMergingFlag() : Header.SampleMode); - break; - - case "DatFile.LockRomMode": - Header.LockRomMode = (Header.LockRomMode == null ? value.AsYesNo() : Header.LockRomMode); - break; - - case "DatFile.LockBiosMode": - Header.LockBiosMode = (Header.LockBiosMode == null ? value.AsYesNo() : Header.LockBiosMode); - break; - - case "DatFile.LockSampleMode": - Header.LockSampleMode = (Header.LockSampleMode == null ? value.AsYesNo() : Header.LockSampleMode); - break; - - #endregion - - #region OfflineList - - case "DatFile.System": - Header.System = (Header.System == null ? value : Header.System); - break; - - case "DatFile.ScreenshotsWidth": - Header.ScreenshotsWidth = (Header.ScreenshotsWidth == null ? value : Header.ScreenshotsWidth); - break; - - case "DatFile.ScreenshotsHeight": - Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? value : Header.ScreenshotsHeight); - break; - - case "DatFile.Infos": - // TODO: Figure out how Header.Infos could be read in - break; - - case "DatFile.CanOpen": - Header.CanOpen = new List(); - var extensions = value.Split(';'); - foreach (var extension in extensions) - { - Header.CanOpen.Add(extension); - } - - break; - - case "DatFile.RomTitle": - Header.RomTitle = (Header.RomTitle == null ? value : Header.RomTitle); - break; - - #endregion - - #region RomCenter - - case "DatFile.RomCenterVersion": - Header.RomCenterVersion = (Header.RomCenterVersion == null ? value : Header.RomCenterVersion); - break; - - #endregion - - #endregion // DatFile - - #region Machine - - #region Common - - case "Machine.Name": - machine.Name = value; - break; - - case "Machine.Comment": - machine.Comment = value; - break; - - case "Machine.Description": - machine.Description = value; - break; - - case "Machine.Year": - machine.Year = value; - break; - - case "Machine.Manufacturer": - machine.Manufacturer = value; - break; - - case "Machine.Publisher": - machine.Publisher = value; - break; - - case "Machine.Category": - machine.Category = value; - break; - - case "Machine.RomOf": - machine.RomOf = value; - break; - - case "Machine.CloneOf": - machine.CloneOf = value; - break; - - case "Machine.SampleOf": - machine.SampleOf = value; - break; - - case "Machine.MachineType": - machine.MachineType = value.AsMachineType(); - break; - - #endregion - - #region AttractMode - - case "Machine.Players": - machine.Players = value; - break; - - case "Machine.Rotation": - machine.Rotation = value; - break; - - case "Machine.Control": - machine.Control = value; - break; - - case "Machine.Status": - machine.Status = value; - break; - - case "Machine.DisplayCount": - machine.DisplayCount = value; - break; - - case "Machine.DisplayType": - machine.DisplayType = value; - break; - - case "Machine.Buttons": - machine.Buttons = value; - break; - - #endregion - - #region ListXML - - case "Machine.SourceFile": - machine.SourceFile = value; - break; - - case "Machine.Runnable": - machine.Runnable = value.AsRunnable(); - break; - - case "Machine.Devices": - machine.DeviceReferences = new List(); - var devices = value.Split(';'); - foreach (var device in devices) - { - machine.DeviceReferences.Add(new ListXmlDeviceReference() { Name = device }); - } - - break; - - // TODO: Add Machine.Slot - - case "Machine.Infos": - machine.Infos = new List(); - var infos = value.Split(';'); - foreach (var info in infos) - { - var infoPair = info.Split('='); - - var infoObj = new SoftwareListInfo(); - infoObj.Name = infoPair[0]; - infoObj.Value = infoPair[1]; - - machine.Infos.Add(infoObj); - } - - break; - - #endregion - - #region Logiqx - - case "Machine.Board": - machine.Board = value; - break; - - case "Machine.RebuildTo": - machine.RebuildTo = value; - break; - - #endregion - - #region Logiqx EmuArc - - case "Machine.TitleID": - machine.TitleID = value; - break; - - case "Machine.Developer": - machine.Developer = value; - break; - - case "Machine.Genre": - machine.Genre = value; - break; - - case "Machine.Subgenre": - machine.Subgenre = value; - break; - - case "Machine.Ratings": - machine.Ratings = value; - break; - - case "Machine.Score": - machine.Score = value; - break; - - case "Machine.Enabled": - machine.Enabled = value; - break; - - case "Machine.HasCrc": - machine.HasCrc = value.AsYesNo(); - break; - - case "Machine.RelatedTo": - machine.RelatedTo = value; - break; - - #endregion - - #region OpenMSX - - case "Machine.GenMSXID": - machine.GenMSXID = value; - break; - - case "Machine.System": - machine.System = value; - break; - - case "Machine.Country": - machine.Country = value; - break; - - #endregion - - #region SoftwareList - - case "Machine.Supported": - machine.Supported = value.AsSupported(); - break; - - case "Machine.SharedFeatures": - machine.SharedFeatures = new List(); - var sharedFeatures = value.Split(';'); - foreach (var pair in sharedFeatures) - { - var featurePair = pair.Split('='); - - var sharedFeature = new SoftwareListSharedFeature(); - sharedFeature.Name = featurePair[0]; - sharedFeature.Value = featurePair[1]; - - machine.SharedFeatures.Add(sharedFeature); - } - - break; - - // TODO: Implement Machine.DipSwitches - - #endregion - - #endregion // Machine - - #region DatItem - - #region Common - - case "DatItem.Name": - name = value; - break; - - case "DatItem.Type": - itemType = value.AsItemType() ?? ItemType.Rom; - break; - - #endregion - - #region AttractMode - - case "DatItem.AltName": - altName = value; - break; - - case "DatItem.AltTitle": - altTitle = value; - break; - - #endregion - - #region OpenMSX - - case "DatItem.Original": - original = value; - break; - - case "DatItem.OpenMSXSubType": - subType = value.AsOpenMSXSubType(); - break; - - case "DatItem.OpenMSXType": - msxType = value; - break; - - case "DatItem.Remark": - remark = value; - break; - - case "DatItem.Boot": - boot = value; - break; - - #endregion - - #region SoftwareList - - case "DatItem.PartName": - partName = value; - break; - - case "DatItem.PartInterface": - partInterface = value; - break; - - case "DatItem.Features": - features = new List(); - var splitFeatures = value.Split(';'); - foreach (var splitFeature in splitFeatures) - { - var featurePair = splitFeature.Split('='); - - var feature = new SoftwareListFeature(); - feature.Name = featurePair[0]; - feature.Value = featurePair[1]; - - features.Add(feature); - } - - break; - - case "DatItem.AreaName": - areaName = value; - break; - - case "DatItem.AreaSize": - if (Int64.TryParse(value, out long tempAreaSize)) - areaSize = tempAreaSize; - else - areaSize = null; - - break; - - case "DatItem.AreaWidth": - areaWidth = value; - break; - - case "DatItem.AreaEndianness": - areaEndianness = value; - break; - - case "DatItem.Value": - slvalue = value; - break; - - case "DatItem.LoadFlag": - loadFlag = value; - break; - - #endregion - - case "DatItem.Default": - def = value.AsYesNo(); - break; - - case "DatItem.Description": - biosDescription = value; - break; - - case "DatItem.Size": - if (!Int64.TryParse(value, out size)) - size = -1; - - break; - - case "DatItem.CRC": - crc = value; - break; - - case "DatItem.MD5": - md5 = value; - break; - -#if NET_FRAMEWORK - case "DatItem.RIPEMD160": - ripemd160 = value; - break; -#endif - - case "DatItem.SHA1": - sha1 = value; - break; - - case "DatItem.SHA256": - sha256 = value; - break; - - case "DatItem.SHA384": - sha384 = value; - break; - - case "DatItem.SHA512": - sha512 = value; - break; - - case "DatItem.Merge": - merge = value; - break; - - case "DatItem.Region": - region = value; - break; - - case "DatItem.Index": - index = value; - break; - - case "DatItem.Writable": - writable = value.AsYesNo(); - break; - - case "DatItem.Optional": - optional = value.AsYesNo(); - break; - - case "DatItem.Status": - status = value.AsItemStatus(); - break; - - case "DatItem.Language": - language = value; - break; - - case "DatItem.Date": - date = value; - break; - - case "DatItem.Bios": - bios = value; - break; - - case "DatItem.Offset": - offset = value; - break; - - case "DatItem.Inverted": - inverted = value.AsYesNo(); - break; - - #endregion // DatItem - - case "INVALID": - default: - // No-op, we don't even care right now - break; - } + mappings[key] = value; } - // And now we populate and add the new item - switch (itemType) + // Set DatHeader fields + DatHeader header = new DatHeader(); + header.SetFields(mappings); + Header.ConditionalCopy(header); + + // Set Machine and DatItem fields + if (mappings.ContainsKey(Field.DatItem_Type)) { - case ItemType.Archive: - Archive archive = new Archive() - { - Name = name, - - AltName = altName, - AltTitle = altTitle, - - Original = new OpenMSXOriginal() { Content = original }, - OpenMSXSubType = subType, - OpenMSXType = msxType, - Remark = remark, - Boot = boot, - - Part = new SoftwareListPart() { Name = partName, Interface = partInterface }, - Features = features, - AreaName = areaName, - AreaSize = areaSize, - AreaWidth = areaWidth, - AreaEndianness = areaEndianness, - Value = slvalue, - LoadFlag = loadFlag, - - Source = new Source - { - Index = indexId, - Name = filename, - }, - }; - - archive.CopyMachineInformation(machine); - ParseAddHelper(archive); - break; - - case ItemType.BiosSet: - BiosSet biosset = new BiosSet() - { - Name = name, - - AltName = altName, - AltTitle = altTitle, - - Original = new OpenMSXOriginal() { Content = original }, - OpenMSXSubType = subType, - OpenMSXType = msxType, - Remark = remark, - Boot = boot, - - Part = new SoftwareListPart() { Name = partName, Interface = partInterface }, - Features = features, - AreaName = areaName, - AreaSize = areaSize, - AreaWidth = areaWidth, - AreaEndianness = areaEndianness, - Value = slvalue, - LoadFlag = loadFlag, - - Description = biosDescription, - Default = def, - - Source = new Source - { - Index = indexId, - Name = filename, - }, - }; - - biosset.CopyMachineInformation(machine); - ParseAddHelper(biosset); - break; - - case ItemType.Disk: - Disk disk = new Disk() - { - Name = name, - - AltName = altName, - AltTitle = altTitle, - - Original = new OpenMSXOriginal() { Content = original }, - OpenMSXSubType = subType, - OpenMSXType = msxType, - Remark = remark, - Boot = boot, - - Part = new SoftwareListPart() { Name = partName, Interface = partInterface }, - Features = features, - AreaName = areaName, - AreaSize = areaSize, - AreaWidth = areaWidth, - AreaEndianness = areaEndianness, - Value = slvalue, - LoadFlag = loadFlag, - - MD5 = md5, -#if NET_FRAMEWORK - RIPEMD160 = ripemd160, -#endif - SHA1 = sha1, - SHA256 = sha256, - SHA384 = sha384, - SHA512 = sha512, - MergeTag = merge, - Region = region, - Index = index, - Writable = writable, - ItemStatus = status, - Optional = optional, - - Source = new Source - { - Index = indexId, - Name = filename, - }, - }; - - disk.CopyMachineInformation(machine); - ParseAddHelper(disk); - break; - - case ItemType.Release: - Release release = new Release() - { - Name = name, - - AltName = altName, - AltTitle = altTitle, - - Original = new OpenMSXOriginal() { Content = original }, - OpenMSXSubType = subType, - OpenMSXType = msxType, - Remark = remark, - Boot = boot, - - Part = new SoftwareListPart() { Name = partName, Interface = partInterface }, - Features = features, - AreaName = areaName, - AreaSize = areaSize, - AreaWidth = areaWidth, - AreaEndianness = areaEndianness, - Value = slvalue, - LoadFlag = loadFlag, - - Region = region, - Language = language, - Date = date, - Default = default, - - Source = new Source - { - Index = indexId, - Name = filename, - }, - }; - - release.CopyMachineInformation(machine); - ParseAddHelper(release); - break; - - case ItemType.Rom: - Rom rom = new Rom() - { - Name = name, - - AltName = altName, - AltTitle = altTitle, - - Original = new OpenMSXOriginal() { Content = original }, - OpenMSXSubType = subType, - OpenMSXType = msxType, - Remark = remark, - Boot = boot, - - Part = new SoftwareListPart() { Name = partName, Interface = partInterface }, - Features = features, - AreaName = areaName, - AreaSize = areaSize, - AreaWidth = areaWidth, - AreaEndianness = areaEndianness, - Value = slvalue, - LoadFlag = loadFlag, - - Bios = bios, - Size = size, - CRC = crc, - MD5 = md5, -#if NET_FRAMEWORK - RIPEMD160 = ripemd160, -#endif - SHA1 = sha1, - SHA256 = sha256, - SHA384 = sha384, - SHA512 = sha512, - MergeTag = merge, - Region = region, - Offset = offset, - Date = date, - ItemStatus = status, - Optional = optional, - Inverted = inverted, - - Source = new Source - { - Index = indexId, - Name = filename, - }, - }; - - rom.CopyMachineInformation(machine); - ParseAddHelper(rom); - break; - - case ItemType.Sample: - Sample sample = new Sample() - { - Name = name, - - AltName = altName, - AltTitle = altTitle, - - Original = new OpenMSXOriginal() { Content = original }, - OpenMSXSubType = subType, - OpenMSXType = msxType, - Remark = remark, - Boot = boot, - - Part = new SoftwareListPart() { Name = partName, Interface = partInterface }, - Features = features, - AreaName = areaName, - AreaSize = areaSize, - AreaWidth = areaWidth, - AreaEndianness = areaEndianness, - Value = slvalue, - LoadFlag = loadFlag, - - Source = new Source - { - Index = indexId, - Name = filename, - }, - }; - - sample.CopyMachineInformation(machine); - ParseAddHelper(sample); - break; + DatItem datItem = DatItem.Create(mappings[Field.DatItem_Type].AsItemType()); + datItem.SetFields(mappings); + datItem.Source = new Source(indexId, filename); + ParseAddHelper(datItem); } } } @@ -963,309 +104,12 @@ namespace SabreTools.Library.DatFiles /// /// Get normalized header value for a given separated value header field /// - /// TODO: Have this return Field (actually, replace with existing convert at that point) private string GetNormalizedHeader(string header) { switch (header.ToLowerInvariant()) { - #region DatFile - - #region Common - - case "file": - case "filename": - case "file name": - return "DatFile.FileName"; - - case "datname": - case "dat name": - case "internalname": - case "internal name": - return "DatFile.Name"; - - case "desc": - case "description": - case "dat description": - return "DatFile.Description"; - - case "rootdir": - case "root dir": - return "DatFile.RootDir"; - - case "category": - return "DatFile.Category"; - - case "version": - return "DatFile.Version"; - - case "datdate": - case "dat date": - case "dat-date": - case "timestamp": - case "time stamp": - case "time-stamp": - return "DatFile.Date"; - - case "author": - return "DatFile.Author"; - - case "email": - return "DatFile.Email"; - - case "homepage": - return "DatFile.Homepage"; - - case "url": - return "DatFile.Url"; - - case "datcomment": - case "dat comment": - return "DatFile.Comment"; - - case "header": - return "DatFile.Header"; - - case "dattype": - case "dat type": - return "DatFile.Type"; - - case "forcemerging": - case "force merging": - return "DatFile.ForceMerging"; - - case "forcenodump": - case "force nodump": - return "DatFile.ForceNodump"; - - case "forcepacking": - case "force packing": - return "DatFile.ForcePacking"; - - #endregion - - #region ListXML - - case "debug": - return "DatFile.Debug"; - - case "mameconfig": - case "mame config": - case "mame-config": - return "DatFile.MameConfig"; - - #endregion - - #region Logiqx - - case "build": - return "DatFile.Build"; - - case "rommode": - case "rom mode": - case "rom-mode": - return "DatFile.RomMode"; - - case "biosmode": - case "bios mode": - case "bios-mode": - return "DatFile.BiosMode"; - - case "samplemode": - case "sample mode": - case "sample-mode": - return "DatFile.SampleMode"; - - case "lockrommode": - case "lock rom mode": - case "lock-rom-mode": - return "DatFile.LockRomMode"; - - case "lockbiosmode": - case "lock bios mode": - case "lock-bios-mode": - return "DatFile.LockBiosMode"; - - case "locksamplemode": - case "lock sample mode": - case "lock-sample-mode": - return "DatFile.LockSampleMode"; - - #endregion - - #region OfflineList - - case "system": - case "plugin": - return "DatFile.System"; - - case "screenshotwidth": - case "screenshotswidth": - case "screenshot width": - case "screenshot-width": - case "screenshots width": - case "screenshots-width": - return "DatFile.ScreenshotsWidth"; - - case "screenshotheight": - case "screenshotsheight": - case "screenshot height": - case "screenshot-height": - case "screenshots height": - case "screenshots-height": - return "DatFile.ScreenshotsHeight"; - - case "offlineinfos": - case "offline infos": - case "offline-infos": - case "olinfos": - case "ol infos": - case "ol-infos": - case "offlinelistinfos": - case "offlinelist infos": - case "offlinelist-infos": - return "DatFile.Infos"; - - case "canopen": - case "can open": - case "can-open": - return "DatFile.CanOpen"; - - case "romtitle": - case "rom title": - case "rom-title": - return "DatFile.RomTitle"; - - #endregion - - #region RomCenter - - case "rcversion": - case "rc version": - case "rc-version": - case "romcenterversion": - case "romcenter version": - case "romcenter-version": - return "DatFile.RomCenterVersion"; - - #endregion - - #endregion // DatFile - #region Machine - #region Common - - case "game": - case "gamename": - case "game name": - case "machine": - case "machinename": - case "machine name": - return "Machine.Name"; - - case "comment": - case "extra": - return "Machine.Comment"; - - case "gamedesc": - case "gamedescription": - case "game-description": - case "game description": - case "machinedesc": - case "machinedescription": - case "machine-description": - case "machine description": - return "Machine.Description"; - - case "year": - return "Machine.Year"; - - case "manufacturer": - return "Machine.Manufacturer"; - - case "publisher": - return "Machine.Publisher"; - - case "gamecategory": - case "game-category": - case "machinecategory": - case "machine-category": - return "Machine.Category"; - - case "romof": - return "Machine.RomOf"; - - case "cloneof": - return "Machine.CloneOf"; - - case "sampleof": - return "Machine.SampleOf"; - - case "gametype": - case "game type": - case "game-type": - case "machinetype": - case "machine type": - case "machine-type": - return "Machine.MachineType"; - - #endregion - - #region AttractMode - - case "players": - return "Machine.Players"; - - case "rotation": - return "Machine.Rotation"; - - case "control": - return "Machine.Control"; - - case "amstatus": - case "am-status": - case "gamestatus": - case "game-status": - case "machinestatus": - case "machine-status": - case "supportstatus": - case "support-status": - return "Machine.Status"; - - case "displaycount": - case "display-count": - case "displays": - return "Machine.DisplayCount"; - - case "displaytype": - case "display-type": - return "Machine.DisplayType"; - - case "buttons": - return "Machine.Buttons"; - - #endregion - - #region ListXML - - case "sourcefile": - case "source file": - case "source-file": - return "Machine.SourceFile"; - - case "runnable": - return "Machine.Runnable"; - - case "devices": - return "Machine.Devices"; - - // TODO: Add Machine.Slot - - case "infos": - return "Machine.Infos"; - - #endregion - #region Logiqx case "board": diff --git a/SabreTools.Library/DatItems/BiosSet.cs b/SabreTools.Library/DatItems/BiosSet.cs index 7301142f..107dd728 100644 --- a/SabreTools.Library/DatItems/BiosSet.cs +++ b/SabreTools.Library/DatItems/BiosSet.cs @@ -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; } diff --git a/SabreTools.Library/DatItems/DatItem.cs b/SabreTools.Library/DatItems/DatItem.cs index 726538a2..8f492764 100644 --- a/SabreTools.Library/DatItems/DatItem.cs +++ b/SabreTools.Library/DatItems/DatItem.cs @@ -185,6 +185,7 @@ namespace SabreTools.Library.DatItems /// /// Fields unique to a DatItem /// + /// TODO: Ensure list public static readonly List DatItemFields = new List() { // 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, }; /// /// Fields unique to a Machine /// + /// TODO: Ensure list public static readonly List MachineFields = new List() { // 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 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(); - - 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 /// /// Type of the DatItem to be created /// DatItem of the specific internal type that corresponds to the inputs - 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 diff --git a/SabreTools.Library/DatItems/Disk.cs b/SabreTools.Library/DatItems/Disk.cs index eb6aa07e..f98d080f 100644 --- a/SabreTools.Library/DatItems/Disk.cs +++ b/SabreTools.Library/DatItems/Disk.cs @@ -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; } diff --git a/SabreTools.Library/DatItems/Enums.cs b/SabreTools.Library/DatItems/Enums.cs index d9260e26..8782710e 100644 --- a/SabreTools.Library/DatItems/Enums.cs +++ b/SabreTools.Library/DatItems/Enums.cs @@ -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 } diff --git a/SabreTools.Library/DatItems/Machine.cs b/SabreTools.Library/DatItems/Machine.cs index 23d620ad..43eb9231 100644 --- a/SabreTools.Library/DatItems/Machine.cs +++ b/SabreTools.Library/DatItems/Machine.cs @@ -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(); - - 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(); - - 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(); - - 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(); - - // 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)) diff --git a/SabreTools.Library/DatItems/Release.cs b/SabreTools.Library/DatItems/Release.cs index 866fd249..ceb35f8e 100644 --- a/SabreTools.Library/DatItems/Release.cs +++ b/SabreTools.Library/DatItems/Release.cs @@ -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; } diff --git a/SabreTools.Library/DatItems/Rom.cs b/SabreTools.Library/DatItems/Rom.cs index 92674057..ae4b89ad 100644 --- a/SabreTools.Library/DatItems/Rom.cs +++ b/SabreTools.Library/DatItems/Rom.cs @@ -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; } diff --git a/SabreTools.Library/Filtering/Filter.cs b/SabreTools.Library/Filtering/Filter.cs index 67e3e680..b5699c9c 100644 --- a/SabreTools.Library/Filtering/Filter.cs +++ b/SabreTools.Library/Filtering/Filter.cs @@ -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 diff --git a/SabreTools.Library/Tools/Converters.cs b/SabreTools.Library/Tools/Converters.cs index f24a0734..1fcb54f0 100644 --- a/SabreTools.Library/Tools/Converters.cs +++ b/SabreTools.Library/Tools/Converters.cs @@ -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 diff --git a/SabreTools/Features/BaseFeature.cs b/SabreTools/Features/BaseFeature.cs index 410c7c17..e6621794 100644 --- a/SabreTools/Features/BaseFeature.cs +++ b/SabreTools/Features/BaseFeature.cs @@ -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