From 7d35594040b831ff137f0cf591bd70f2b48d836d Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 2 May 2025 16:46:20 -0400 Subject: [PATCH] Increase readability of Machine access --- .../DatFileTests.Filtering.cs | 10 ++--- .../DatFileTests.Splitting.cs | 6 +-- SabreTools.DatFiles/DatFile.Filtering.cs | 14 +++---- SabreTools.DatFiles/DatFile.Splitting.cs | 34 +++++++-------- SabreTools.DatFiles/DatFile.ToMetadata.cs | 2 +- SabreTools.DatFiles/DatFile.cs | 8 ++-- SabreTools.DatFiles/Formats/Missfile.cs | 4 +- SabreTools.DatFiles/Formats/SabreJSON.cs | 14 +++---- SabreTools.DatFiles/Formats/SabreXML.cs | 12 +++--- SabreTools.DatFiles/ItemDictionary.cs | 12 +++--- SabreTools.DatItems.Test/DatItemTests.cs | 12 +++--- SabreTools.DatItems.Test/Formats/DiskTests.cs | 2 +- SabreTools.DatItems.Test/Formats/FileTests.cs | 2 +- .../Formats/MediaTests.cs | 2 +- SabreTools.DatItems/DatItem.cs | 42 ++++++++++++------- SabreTools.DatItems/Formats/Blank.cs | 4 +- SabreTools.DatItems/Formats/Disk.cs | 2 +- SabreTools.DatItems/Formats/File.cs | 4 +- SabreTools.DatItems/Formats/Media.cs | 2 +- SabreTools.DatItems/Formats/ReleaseDetails.cs | 2 +- SabreTools.DatItems/Formats/Serials.cs | 2 +- SabreTools.DatItems/Formats/SourceDetails.cs | 2 +- SabreTools.DatTools/Cleaner.cs | 2 +- SabreTools.DatTools/DatFromDir.cs | 4 +- SabreTools.DatTools/DatItemTool.cs | 8 ++-- SabreTools.DatTools/Diffing.cs | 4 +- SabreTools.DatTools/ExtraIni.cs | 2 +- SabreTools.DatTools/MergeSplit.cs | 2 +- SabreTools.DatTools/Rebuilder.cs | 10 ++--- SabreTools.DatTools/Remover.cs | 2 +- SabreTools.DatTools/Replacer.cs | 2 +- SabreTools.DatTools/Setter.cs | 4 +- SabreTools.DatTools/Splitter.cs | 4 +- 33 files changed, 124 insertions(+), 114 deletions(-) diff --git a/SabreTools.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.DatFiles.Test/DatFileTests.Filtering.cs index 29ba0bcd..31a44722 100644 --- a/SabreTools.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.DatFiles.Test/DatFileTests.Filtering.cs @@ -93,7 +93,7 @@ namespace SabreTools.DatFiles.Test // The name of the bucket is not expected to change DatItem actual = Assert.Single(datFile.GetItemsForBucket("machine")); - Machine? actualMachine = actual.GetFieldValue(DatItem.MachineKey); + Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); Assert.Equal("description", actualMachine.GetName()); Assert.Equal("description", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey)); @@ -149,12 +149,12 @@ namespace SabreTools.DatFiles.Test Assert.Equal(2, actualDatItems.Count); DatItem actualRom = Assert.Single(actualDatItems.FindAll(i => i is Rom)); - Machine? actualRomMachine = actualRom.GetFieldValue(DatItem.MachineKey); + Machine? actualRomMachine = actualRom.GetMachine(); Assert.NotNull(actualRomMachine); Assert.Equal("machine/rom", actualRomMachine.GetName()); DatItem actualDisk = Assert.Single(actualDatItems.FindAll(i => i is Disk)); - Machine? actualDiskMachine = actualDisk.GetFieldValue(DatItem.MachineKey); + Machine? actualDiskMachine = actualDisk.GetMachine(); Assert.NotNull(actualDiskMachine); Assert.Equal("machine/disk", actualDiskMachine.GetName()); } @@ -229,7 +229,7 @@ namespace SabreTools.DatFiles.Test var actualDatItems = datFile.GetItemsForBucket("machine (world)"); DatItem actualWorldRom = Assert.Single(actualDatItems); - Machine? actualWorldMachine = actualWorldRom.GetFieldValue(DatItem.MachineKey); + Machine? actualWorldMachine = actualWorldRom.GetMachine(); Assert.NotNull(actualWorldMachine); Assert.Equal("machine (World)", actualWorldMachine.GetName()); } @@ -279,7 +279,7 @@ namespace SabreTools.DatFiles.Test // The name of the bucket is not expected to change DatItem actual = Assert.Single(datFile.GetItemsForBucket("10.10.10-machine-name")); - Machine? actualMachine = actual.GetFieldValue(DatItem.MachineKey); + Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); Assert.Equal("machine-name", actualMachine.GetName()); } diff --git a/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs index d747f522..9f4a774a 100644 --- a/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.DatFiles.Test/DatFileTests.Splitting.cs @@ -618,7 +618,7 @@ namespace SabreTools.DatFiles.Test Assert.Single(datFile.GetItemsForBucket("parent")); DatItem actual = Assert.Single(datFile.GetItemsForBucket("child")); - Machine? actualMachine = actual.GetFieldValue(DatItem.MachineKey); + Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); Assert.Equal("child", actualMachine.GetName()); Assert.Equal("romof", actualMachine.GetStringFieldValue(Models.Metadata.Machine.RomOfKey)); @@ -725,7 +725,7 @@ namespace SabreTools.DatFiles.Test Assert.Single(datFile.GetItemsForBucket("parent")); DatItem actual = Assert.Single(datFile.GetItemsForBucket("child")); - Machine? actualMachine = actual.GetFieldValue(DatItem.MachineKey); + Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); Assert.Equal("child", actualMachine.GetName()); } @@ -808,7 +808,7 @@ namespace SabreTools.DatFiles.Test datFile.RemoveMachineRelationshipTags(); DatItem actualItem = Assert.Single(datFile.GetItemsForBucket("machine")); - Machine? actual = actualItem.GetFieldValue(DatItem.MachineKey); + Machine? actual = actualItem.GetMachine(); Assert.NotNull(actual); Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey)); Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.RomOfKey)); diff --git a/SabreTools.DatFiles/DatFile.Filtering.cs b/SabreTools.DatFiles/DatFile.Filtering.cs index e3f7f0e2..7d6dd0cb 100644 --- a/SabreTools.DatFiles/DatFile.Filtering.cs +++ b/SabreTools.DatFiles/DatFile.Filtering.cs @@ -120,7 +120,7 @@ namespace SabreTools.DatFiles foreach (DatItem item in items) { // Get the current machine - var machine = item.GetFieldValue(DatItem.MachineKey); + var machine = item.GetMachine(); if (machine == null) continue; @@ -331,7 +331,7 @@ namespace SabreTools.DatFiles DatItem item = GetItemsForBucket(key)[0]; // Get machine information - Machine? machine = item.GetFieldValue(DatItem.MachineKey); + Machine? machine = item.GetMachine(); string? machineName = machine?.GetName()?.ToLowerInvariant(); if (machine == null || machineName == null) continue; @@ -521,7 +521,7 @@ namespace SabreTools.DatFiles return; // Get the current machine - var machine = datItem.GetFieldValue(DatItem.MachineKey); + var machine = datItem.GetMachine(); if (machine == null) return; @@ -657,7 +657,7 @@ namespace SabreTools.DatFiles foreach (DatItem item in items) { // Get the current machine - var machine = item.GetFieldValue(DatItem.MachineKey); + var machine = item.GetMachine(); if (machine == null) continue; @@ -666,10 +666,10 @@ namespace SabreTools.DatFiles string? machineDesc = machine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey); if (machineName != null && Regex.IsMatch(machineName, SceneNamePattern)) - item.GetFieldValue(DatItem.MachineKey)!.SetName(Regex.Replace(machineName, SceneNamePattern, "$2")); + item.GetMachine()!.SetName(Regex.Replace(machineName, SceneNamePattern, "$2")); if (machineDesc != null && Regex.IsMatch(machineDesc, SceneNamePattern)) - item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, Regex.Replace(machineDesc, SceneNamePattern, "$2")); + item.GetMachine()!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, Regex.Replace(machineDesc, SceneNamePattern, "$2")); } #if NET40_OR_GREATER || NETCOREAPP }); @@ -742,7 +742,7 @@ namespace SabreTools.DatFiles foreach (DatItem item in items) { // Get the current machine - var machine = item.GetFieldValue(DatItem.MachineKey); + var machine = item.GetMachine(); if (machine == null) continue; diff --git a/SabreTools.DatFiles/DatFile.Splitting.cs b/SabreTools.DatFiles/DatFile.Splitting.cs index a9c5eb95..cd968860 100644 --- a/SabreTools.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.DatFiles/DatFile.Splitting.cs @@ -248,7 +248,7 @@ namespace SabreTools.DatFiles continue; // Get the machine - var machine = items[0].GetFieldValue(DatItem.MachineKey); + var machine = items[0].GetMachine(); if (machine == null) continue; @@ -263,8 +263,8 @@ namespace SabreTools.DatFiles if (parentItems.Count == 0) { copyFrom = new Rom(); - copyFrom.GetFieldValue(DatItem.MachineKey)!.SetName(cloneOf); - copyFrom.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, cloneOf); + copyFrom.GetMachine()!.SetName(cloneOf); + copyFrom.GetMachine()!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, cloneOf); } else { @@ -325,7 +325,7 @@ namespace SabreTools.DatFiles .Contains(rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey))) { if (subfolder) - rom.SetName($"{rom.GetFieldValue(DatItem.MachineKey)!.GetName()}\\{rom.GetName()}"); + rom.SetName($"{rom.GetMachine()!.GetName()}\\{rom.GetName()}"); rom.CopyMachineInformation(copyFrom); AddItem(rom, statsOnly: false); @@ -335,7 +335,7 @@ namespace SabreTools.DatFiles else if (!GetItemsForBucket(cloneOf).Contains(item) || skipDedup) { if (subfolder) - rom.SetName($"{item.GetFieldValue(DatItem.MachineKey)!.GetName()}\\{rom.GetName()}"); + rom.SetName($"{item.GetMachine()!.GetName()}\\{rom.GetName()}"); rom.CopyMachineInformation(copyFrom); AddItem(rom, statsOnly: false); @@ -346,7 +346,7 @@ namespace SabreTools.DatFiles else if (!GetItemsForBucket(cloneOf).Contains(item)) { if (subfolder) - item.SetName($"{item.GetFieldValue(DatItem.MachineKey)!.GetName()}\\{item.GetName()}"); + item.SetName($"{item.GetMachine()!.GetName()}\\{item.GetName()}"); item.CopyMachineInformation(copyFrom); AddItem(item, statsOnly: false); @@ -507,7 +507,7 @@ namespace SabreTools.DatFiles continue; // Get the machine - var machine = items[0].GetFieldValue(DatItem.MachineKey); + var machine = items[0].GetMachine(); if (machine == null) continue; @@ -532,10 +532,10 @@ namespace SabreTools.DatFiles // Now we want to get the parent romof tag and put it in each of the items items = GetItemsForBucket(bucket); - string? romof = GetItemsForBucket(cloneOf)[0].GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey); + string? romof = GetItemsForBucket(cloneOf)[0].GetMachine()!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey); foreach (DatItem item in items) { - item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.RomOfKey, romof); + item.GetMachine()!.SetFieldValue(Models.Metadata.Machine.RomOfKey, romof); } } } @@ -626,7 +626,7 @@ namespace SabreTools.DatFiles continue; // If the machine (is/is not) a device, we want to continue - if (deviceOnly ^ (datItems[0].GetFieldValue(DatItem.MachineKey)!.GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey) == true)) + if (deviceOnly ^ (datItems[0].GetMachine()!.GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey) == true)) continue; // Get all device reference names from the current machine @@ -935,7 +935,7 @@ namespace SabreTools.DatFiles continue; // Get the machine - var machine = items[0].GetFieldValue(DatItem.MachineKey); + var machine = items[0].GetMachine(); if (machine == null) continue; @@ -1018,7 +1018,7 @@ namespace SabreTools.DatFiles continue; // Get the machine - var machine = items[0].GetFieldValue(DatItem.MachineKey); + var machine = items[0].GetMachine(); if (machine == null) continue; @@ -1085,7 +1085,7 @@ namespace SabreTools.DatFiles continue; // Get the machine - var machine = items[0].GetFieldValue(DatItem.MachineKey); + var machine = items[0].GetMachine(); if (machine == null) continue; @@ -1107,10 +1107,10 @@ namespace SabreTools.DatFiles // Now we want to get the parent romof tag and put it in each of the remaining items items = GetItemsForBucket(bucket); - string? romof = GetItemsForBucket(cloneOf)[0].GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey); + string? romof = GetItemsForBucket(cloneOf)[0].GetMachine()!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey); foreach (DatItem item in items) { - item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.RomOfKey, romof); + item.GetMachine()!.SetFieldValue(Models.Metadata.Machine.RomOfKey, romof); } } } @@ -1189,7 +1189,7 @@ namespace SabreTools.DatFiles continue; // Get the machine - var machine = items[0].GetFieldValue(DatItem.MachineKey); + var machine = items[0].GetMachine(); if (machine == null) continue; @@ -1269,7 +1269,7 @@ namespace SabreTools.DatFiles foreach (DatItem item in items) { // Get the machine - var machine = item.GetFieldValue(DatItem.MachineKey); + var machine = item.GetMachine(); if (machine == null) continue; diff --git a/SabreTools.DatFiles/DatFile.ToMetadata.cs b/SabreTools.DatFiles/DatFile.ToMetadata.cs index 7d0e905f..7c871fc2 100644 --- a/SabreTools.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.DatFiles/DatFile.ToMetadata.cs @@ -75,7 +75,7 @@ namespace SabreTools.DatFiles continue; // Create a machine to hold everything - var machine = items[0].GetFieldValue(DatItems.DatItem.MachineKey)!.GetInternalClone(); + var machine = items[0].GetMachine()!.GetInternalClone(); // Handle Trurip object, if it exists if (machine.ContainsKey(Models.Metadata.Machine.TruripKey)) diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index f141577b..6131df8f 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -1000,8 +1000,8 @@ namespace SabreTools.DatFiles var nc = new NaturalComparer(); // If machine names don't match - string? xMachineName = x.GetFieldValue(DatItem.MachineKey)?.GetName(); - string? yMachineName = y.GetFieldValue(DatItem.MachineKey)?.GetName(); + string? xMachineName = x.GetMachine()?.GetName(); + string? yMachineName = y.GetMachine()?.GetName(); if (xMachineName != yMachineName) return nc.Compare(xMachineName, yMachineName); @@ -1055,8 +1055,8 @@ namespace SabreTools.DatFiles // TODO: Fix this since DB uses an external map for machines // If machine names don't match - string? xMachineName = x.Value.GetFieldValue(DatItem.MachineKey)?.GetName(); - string? yMachineName = y.Value.GetFieldValue(DatItem.MachineKey)?.GetName(); + string? xMachineName = x.Value.GetMachine()?.GetName(); + string? yMachineName = y.Value.GetMachine()?.GetName(); if (xMachineName != yMachineName) return nc.Compare(xMachineName, yMachineName); diff --git a/SabreTools.DatFiles/Formats/Missfile.cs b/SabreTools.DatFiles/Formats/Missfile.cs index 75125ee8..abb5304c 100644 --- a/SabreTools.DatFiles/Formats/Missfile.cs +++ b/SabreTools.DatFiles/Formats/Missfile.cs @@ -82,7 +82,7 @@ namespace SabreTools.DatFiles.Formats WriteDatItem(sw, datItem, lastgame); // Set the new data to compare against - lastgame = datItem.GetFieldValue(DatItem.MachineKey)!.GetName(); + lastgame = datItem.GetMachine()!.GetName(); } } @@ -168,7 +168,7 @@ namespace SabreTools.DatFiles.Formats /// The name of the last game to be output private void WriteDatItem(StreamWriter sw, DatItem datItem, string? lastgame) { - var machine = datItem.GetFieldValue(DatItem.MachineKey); + var machine = datItem.GetMachine(); WriteDatItemImpl(sw, datItem, machine!, lastgame); } diff --git a/SabreTools.DatFiles/Formats/SabreJSON.cs b/SabreTools.DatFiles/Formats/SabreJSON.cs index 07fadfe0..98ce52a2 100644 --- a/SabreTools.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.DatFiles/Formats/SabreJSON.cs @@ -412,11 +412,11 @@ namespace SabreTools.DatFiles.Formats DatItem datItem = datItems[index]; // If we have a different game and we're not at the start of the list, output the end of last item - if (lastgame != null && !string.Equals(lastgame, datItem.GetFieldValue(DatItem.MachineKey)!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame != null && !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase)) WriteEndGame(jtw); // If we have a new game, output the beginning of the new item - if (lastgame == null || !string.Equals(lastgame, datItem.GetFieldValue(DatItem.MachineKey)!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame == null || !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase)) WriteStartGame(jtw, datItem); // Check for a "null" item @@ -427,7 +427,7 @@ namespace SabreTools.DatFiles.Formats WriteDatItem(jtw, datItem); // Set the new data to compare against - lastgame = datItem.GetFieldValue(DatItem.MachineKey)!.GetName(); + lastgame = datItem.GetMachine()!.GetName(); } } @@ -555,8 +555,8 @@ namespace SabreTools.DatFiles.Formats private static void WriteStartGame(JsonTextWriter jtw, DatItem datItem) { // No game should start with a path separator - if (!string.IsNullOrEmpty(datItem.GetFieldValue(DatItem.MachineKey)!.GetName())) - datItem.GetFieldValue(DatItem.MachineKey)!.SetName(datItem.GetFieldValue(DatItem.MachineKey)!.GetName()!.TrimStart(Path.DirectorySeparatorChar)); + if (!string.IsNullOrEmpty(datItem.GetMachine()!.GetName())) + datItem.GetMachine()!.SetName(datItem.GetMachine()!.GetName()!.TrimStart(Path.DirectorySeparatorChar)); // Build the state jtw.WriteStartObject(); @@ -564,7 +564,7 @@ namespace SabreTools.DatFiles.Formats // Write the Machine jtw.WritePropertyName("machine"); JsonSerializer js = new() { Formatting = Formatting.Indented }; - js.Serialize(jtw, datItem.GetFieldValue(DatItem.MachineKey)!); + js.Serialize(jtw, datItem.GetMachine()!); jtw.WritePropertyName("items"); jtw.WriteStartArray(); @@ -595,7 +595,7 @@ namespace SabreTools.DatFiles.Formats private void WriteDatItem(JsonTextWriter jtw, DatItem datItem) { // Get the machine for the item - var machine = datItem.GetFieldValue(DatItem.MachineKey); + var machine = datItem.GetMachine(); // Pre-process the item name ProcessItemName(datItem, machine, forceRemoveQuotes: true, forceRomName: false); diff --git a/SabreTools.DatFiles/Formats/SabreXML.cs b/SabreTools.DatFiles/Formats/SabreXML.cs index 432a9817..c32dcdb3 100644 --- a/SabreTools.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.DatFiles/Formats/SabreXML.cs @@ -240,11 +240,11 @@ namespace SabreTools.DatFiles.Formats DatItem datItem = datItems[index]; // If we have a different game and we're not at the start of the list, output the end of last item - if (lastgame != null && !string.Equals(lastgame, datItem.GetFieldValue(DatItem.MachineKey)!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame != null && !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase)) WriteEndGame(xtw); // If we have a new game, output the beginning of the new item - if (lastgame == null || !string.Equals(lastgame, datItem.GetFieldValue(DatItem.MachineKey)!.GetName(), StringComparison.OrdinalIgnoreCase)) + if (lastgame == null || !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase)) WriteStartGame(xtw, datItem); // Check for a "null" item @@ -255,7 +255,7 @@ namespace SabreTools.DatFiles.Formats WriteDatItem(xtw, datItem); // Set the new data to compare against - lastgame = datItem.GetFieldValue(DatItem.MachineKey)!.GetName(); + lastgame = datItem.GetMachine()!.GetName(); } } @@ -387,14 +387,14 @@ namespace SabreTools.DatFiles.Formats private static void WriteStartGame(XmlTextWriter xtw, DatItem datItem) { // No game should start with a path separator - datItem.GetFieldValue(DatItem.MachineKey)!.SetName(datItem.GetFieldValue(DatItem.MachineKey)!.GetName()?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty); + datItem.GetMachine()!.SetName(datItem.GetMachine()!.GetName()?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty); // Write the machine xtw.WriteStartElement("directory"); XmlSerializer xs = new(typeof(Machine)); XmlSerializerNamespaces ns = new(); ns.Add("", ""); - xs.Serialize(xtw, datItem.GetFieldValue(DatItem.MachineKey), ns); + xs.Serialize(xtw, datItem.GetMachine(), ns); xtw.WriteStartElement("files"); @@ -424,7 +424,7 @@ namespace SabreTools.DatFiles.Formats private void WriteDatItem(XmlTextWriter xtw, DatItem datItem) { // Get the machine for the item - var machine = datItem.GetFieldValue(DatItem.MachineKey); + var machine = datItem.GetMachine(); // Pre-process the item name ProcessItemName(datItem, machine, forceRemoveQuotes: true, forceRomName: false); diff --git a/SabreTools.DatFiles/ItemDictionary.cs b/SabreTools.DatFiles/ItemDictionary.cs index dd744d00..22d16344 100644 --- a/SabreTools.DatFiles/ItemDictionary.cs +++ b/SabreTools.DatFiles/ItemDictionary.cs @@ -521,8 +521,8 @@ namespace SabreTools.DatFiles var itemSource = datItem.GetFieldValue(DatItem.SourceKey); // Get the machines associated with the items - var savedMachine = savedItem.GetFieldValue(DatItem.MachineKey); - var itemMachine = datItem.GetFieldValue(DatItem.MachineKey); + var savedMachine = savedItem.GetMachine(); + var itemMachine = datItem.GetMachine(); // If the current source has a lower ID than the saved, use the saved source if (itemSource?.Index < savedSource?.Index) @@ -690,7 +690,7 @@ namespace SabreTools.DatFiles bucketBy = ItemKey.Machine; // Get the machine and source - var machine = datItem.GetFieldValue(DatItem.MachineKey); + var machine = datItem.GetMachine(); var source = datItem.GetFieldValue(DatItem.SourceKey); // Get the bucket key @@ -731,7 +731,7 @@ namespace SabreTools.DatFiles continue; // Get the machine and source - var machine = item.GetFieldValue(DatItem.MachineKey); + var machine = item.GetMachine(); var source = item.GetFieldValue(DatItem.SourceKey); // We want to get the key most appropriate for the given sorting type @@ -803,8 +803,8 @@ namespace SabreTools.DatFiles var nc = new NaturalComparer(); // Get the machines - Machine? xMachine = x.GetFieldValue(DatItem.MachineKey); - Machine? yMachine = y.GetFieldValue(DatItem.MachineKey); + Machine? xMachine = x.GetMachine(); + Machine? yMachine = y.GetMachine(); // If machine names don't match string? xMachineName = xMachine?.GetName(); diff --git a/SabreTools.DatItems.Test/DatItemTests.cs b/SabreTools.DatItems.Test/DatItemTests.cs index ae73cf74..376df493 100644 --- a/SabreTools.DatItems.Test/DatItemTests.cs +++ b/SabreTools.DatItems.Test/DatItemTests.cs @@ -55,7 +55,7 @@ namespace SabreTools.DatItems.Test romB.RemoveField(DatItem.MachineKey); romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetFieldValue(DatItem.MachineKey); + var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); Assert.Null(actualMachineA.GetName()); } @@ -73,7 +73,7 @@ namespace SabreTools.DatItems.Test romB.RemoveField(DatItem.MachineKey); romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetFieldValue(DatItem.MachineKey); + var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); Assert.Equal("machineA", actualMachineA.GetName()); } @@ -93,7 +93,7 @@ namespace SabreTools.DatItems.Test romB.SetFieldValue(DatItem.MachineKey, machineB); romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetFieldValue(DatItem.MachineKey); + var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); Assert.Equal("machineA", actualMachineA.GetName()); } @@ -113,7 +113,7 @@ namespace SabreTools.DatItems.Test romB.SetFieldValue(DatItem.MachineKey, machineB); romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetFieldValue(DatItem.MachineKey); + var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); Assert.Null(actualMachineA.GetName()); } @@ -134,7 +134,7 @@ namespace SabreTools.DatItems.Test romB.SetFieldValue(DatItem.MachineKey, machineB); romA.CopyMachineInformation(romB); - var actualMachineA = romA.GetFieldValue(DatItem.MachineKey); + var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); Assert.Equal("machineB", actualMachineA.GetName()); } @@ -155,7 +155,7 @@ namespace SabreTools.DatItems.Test diskB.SetFieldValue(DatItem.MachineKey, machineB); romA.CopyMachineInformation(diskB); - var actualMachineA = romA.GetFieldValue(DatItem.MachineKey); + var actualMachineA = romA.GetMachine(); Assert.NotNull(actualMachineA); Assert.Equal("machineB", actualMachineA.GetName()); } diff --git a/SabreTools.DatItems.Test/Formats/DiskTests.cs b/SabreTools.DatItems.Test/Formats/DiskTests.cs index 7f1ccdca..c8911983 100644 --- a/SabreTools.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.DatItems.Test/Formats/DiskTests.cs @@ -52,7 +52,7 @@ namespace SabreTools.DatItems.Test.Formats Assert.NotNull(actualDataArea); Assert.Equal("XXXXXX", actualDataArea.GetStringFieldValue(Models.Metadata.DataArea.NameKey)); - Machine? actualMachine = actual.GetFieldValue(DatItem.MachineKey); + Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); Assert.Equal("XXXXXX", actualMachine.GetName()); diff --git a/SabreTools.DatItems.Test/Formats/FileTests.cs b/SabreTools.DatItems.Test/Formats/FileTests.cs index 429ac89e..cb88ea08 100644 --- a/SabreTools.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.DatItems.Test/Formats/FileTests.cs @@ -40,7 +40,7 @@ namespace SabreTools.DatItems.Test.Formats Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)); Assert.Equal(DupeType.All | DupeType.External, actual.GetFieldValue(DatItem.DupeTypeKey)); - Machine? actualMachine = actual.GetFieldValue(DatItem.MachineKey); + Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); Assert.Equal("XXXXXX", actualMachine.GetName()); diff --git a/SabreTools.DatItems.Test/Formats/MediaTests.cs b/SabreTools.DatItems.Test/Formats/MediaTests.cs index cb2f8386..f162d7f0 100644 --- a/SabreTools.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.DatItems.Test/Formats/MediaTests.cs @@ -36,7 +36,7 @@ namespace SabreTools.DatItems.Test.Formats Assert.Equal(ZeroHash.SpamSumStr, actual.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)); Assert.Equal(DupeType.All | DupeType.External, actual.GetFieldValue(DatItem.DupeTypeKey)); - Machine? actualMachine = actual.GetFieldValue(DatItem.MachineKey); + Machine? actualMachine = actual.GetMachine(); Assert.NotNull(actualMachine); Assert.Equal("XXXXXX", actualMachine.GetName()); diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs index f8c4f205..f869c1e6 100644 --- a/SabreTools.DatItems/DatItem.cs +++ b/SabreTools.DatItems/DatItem.cs @@ -101,6 +101,13 @@ namespace SabreTools.DatItems #region Accessors + /// + /// Get the machine for a DatItem + /// + /// Machine if available, null otherwise + /// Relies on + public virtual Machine? GetMachine() => null; + /// /// Gets the name to use for a DatItem /// @@ -130,10 +137,10 @@ namespace SabreTools.DatItems public void CopyMachineInformation(DatItem item) { // If there is no machine - if (!item._internal.ContainsKey(DatItem.MachineKey)) + if (!item._internal.ContainsKey(MachineKey)) return; - var machine = item.GetFieldValue(DatItem.MachineKey); + var machine = item.GetMachine(); CopyMachineInformation(machine); } @@ -147,7 +154,7 @@ namespace SabreTools.DatItems return; if (machine.Clone() is Machine cloned) - SetFieldValue(DatItem.MachineKey, cloned); + SetFieldValue(MachineKey, cloned); } #endregion @@ -241,20 +248,20 @@ namespace SabreTools.DatItems return output; // Get the sources for comparison - var selfSource = GetFieldValue(DatItem.SourceKey); - var lastSource = lastItem.GetFieldValue(DatItem.SourceKey); + var selfSource = GetFieldValue(SourceKey); + var lastSource = lastItem.GetFieldValue(SourceKey); // Get the machines for comparison - var selfMachine = GetFieldValue(DatItem.MachineKey); + var selfMachine = GetMachine(); string? selfMachineName = selfMachine?.GetName(); - var lastMachine = lastItem.GetFieldValue(DatItem.MachineKey); + var lastMachine = lastItem.GetMachine(); string? lastMachineName = lastMachine?.GetName(); // If the duplicate is external already #if NET20 || NET35 - if ((lastItem.GetFieldValue(DatItem.DupeTypeKey) & DupeType.External) != 0) + if ((lastItem.GetFieldValue(DupeTypeKey) & DupeType.External) != 0) #else - if (lastItem.GetFieldValue(DatItem.DupeTypeKey).HasFlag(DupeType.External)) + if (lastItem.GetFieldValue(DupeTypeKey).HasFlag(DupeType.External)) #endif output |= DupeType.External; @@ -294,16 +301,16 @@ namespace SabreTools.DatItems // TODO: Fix this since machines are determined in a different way // Get the machines for comparison - var selfMachine = GetFieldValue(DatItem.MachineKey); + var selfMachine = GetMachine(); string? selfMachineName = selfMachine?.GetName(); - var lastMachine = lastItem.GetFieldValue(DatItem.MachineKey); + var lastMachine = lastItem.GetMachine(); string? lastMachineName = lastMachine?.GetName(); // If the duplicate is external already #if NET20 || NET35 - if ((lastItem.GetFieldValue(DatItem.DupeTypeKey) & DupeType.External) != 0) + if ((lastItem.GetFieldValue(DupeTypeKey) & DupeType.External) != 0) #else - if (lastItem.GetFieldValue(DatItem.DupeTypeKey).HasFlag(DupeType.External)) + if (lastItem.GetFieldValue(DupeTypeKey).HasFlag(DupeType.External)) #endif output |= DupeType.External; @@ -337,7 +344,7 @@ namespace SabreTools.DatItems /// True if the item and its machine passes the filter, false otherwise public bool PassesFilter(FilterRunner filterRunner) { - var machine = GetFieldValue(DatItem.MachineKey); + var machine = GetMachine(); if (machine != null && !machine.PassesFilter(filterRunner)) return false; @@ -450,7 +457,7 @@ namespace SabreTools.DatItems SetName(string.Empty); SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType); - SetFieldValue(DatItem.MachineKey, new Machine()); + SetFieldValue(MachineKey, new Machine()); } /// @@ -461,13 +468,16 @@ namespace SabreTools.DatItems _internal = item; SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType); - SetFieldValue(DatItem.MachineKey, new Machine()); + SetFieldValue(MachineKey, new Machine()); } #endregion #region Accessors + /// + public override Machine? GetMachine() => _internal.Read(MachineKey); + /// public override string? GetName() => _internal.GetName(); diff --git a/SabreTools.DatItems/Formats/Blank.cs b/SabreTools.DatItems/Formats/Blank.cs index f8a89e05..e7bb3229 100644 --- a/SabreTools.DatItems/Formats/Blank.cs +++ b/SabreTools.DatItems/Formats/Blank.cs @@ -36,7 +36,7 @@ namespace SabreTools.DatItems.Formats public override object Clone() { var blank = new Blank(); - blank.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); + blank.SetFieldValue(DatItem.MachineKey, GetMachine()); blank.SetFieldValue(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey)); blank.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); blank.SetFieldValue(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue().AsStringValue()); @@ -89,7 +89,7 @@ namespace SabreTools.DatItems.Formats Blank? newOther = other as Blank; // If the machine information matches - return GetFieldValue(DatItem.MachineKey) == newOther!.GetFieldValue(DatItem.MachineKey); + return GetMachine() == newOther!.GetMachine(); } #endregion diff --git a/SabreTools.DatItems/Formats/Disk.cs b/SabreTools.DatItems/Formats/Disk.cs index 770bdcea..0ae5fa53 100644 --- a/SabreTools.DatItems/Formats/Disk.cs +++ b/SabreTools.DatItems/Formats/Disk.cs @@ -106,7 +106,7 @@ namespace SabreTools.DatItems.Formats } rom.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); - rom.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)?.Clone() as Machine); + rom.SetFieldValue(DatItem.MachineKey, GetMachine()?.Clone() as Machine); rom.SetFieldValue(Rom.PartKey, GetFieldValue(Disk.PartKey)?.Clone() as Part); rom.SetFieldValue(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey)); rom.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)?.Clone() as Source); diff --git a/SabreTools.DatItems/Formats/File.cs b/SabreTools.DatItems/Formats/File.cs index d1780bc7..cbf3bffe 100644 --- a/SabreTools.DatItems/Formats/File.cs +++ b/SabreTools.DatItems/Formats/File.cs @@ -123,7 +123,7 @@ namespace SabreTools.DatItems.Formats Format = this.Format, }; file.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); - file.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)!.Clone() as Machine ?? new Machine()); + file.SetFieldValue(DatItem.MachineKey, GetMachine()!.Clone() as Machine ?? new Machine()); file.SetFieldValue(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey)); file.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); @@ -146,7 +146,7 @@ namespace SabreTools.DatItems.Formats rom.SetFieldValue(Models.Metadata.Rom.SHA256Key, SHA256); rom.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); - rom.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)?.Clone() as Machine); + rom.SetFieldValue(DatItem.MachineKey, GetMachine()?.Clone() as Machine); rom.SetFieldValue(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey)); rom.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); diff --git a/SabreTools.DatItems/Formats/Media.cs b/SabreTools.DatItems/Formats/Media.cs index d34a051f..d0d6a54e 100644 --- a/SabreTools.DatItems/Formats/Media.cs +++ b/SabreTools.DatItems/Formats/Media.cs @@ -51,7 +51,7 @@ namespace SabreTools.DatItems.Formats var rom = new Rom(_internal.ConvertToRom()!); rom.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); - rom.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); + rom.SetFieldValue(DatItem.MachineKey, GetMachine()); rom.SetFieldValue(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey)); rom.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); diff --git a/SabreTools.DatItems/Formats/ReleaseDetails.cs b/SabreTools.DatItems/Formats/ReleaseDetails.cs index 7b19d40d..c9f27179 100644 --- a/SabreTools.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.DatItems/Formats/ReleaseDetails.cs @@ -145,7 +145,7 @@ namespace SabreTools.DatItems.Formats Origin = this.Origin, }; releaseDetails.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); - releaseDetails.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); + releaseDetails.SetFieldValue(DatItem.MachineKey, GetMachine()); releaseDetails.SetFieldValue(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey)); releaseDetails.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); releaseDetails.SetFieldValue(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue().AsStringValue()); diff --git a/SabreTools.DatItems/Formats/Serials.cs b/SabreTools.DatItems/Formats/Serials.cs index 65ec412b..bd6f1554 100644 --- a/SabreTools.DatItems/Formats/Serials.cs +++ b/SabreTools.DatItems/Formats/Serials.cs @@ -137,7 +137,7 @@ namespace SabreTools.DatItems.Formats BoxBarcode = this.BoxBarcode, }; serials.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); - serials.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); + serials.SetFieldValue(DatItem.MachineKey, GetMachine()); serials.SetFieldValue(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey)); serials.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); serials.SetFieldValue(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue().AsStringValue()); diff --git a/SabreTools.DatItems/Formats/SourceDetails.cs b/SabreTools.DatItems/Formats/SourceDetails.cs index 3af65a9e..32dedbf1 100644 --- a/SabreTools.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.DatItems/Formats/SourceDetails.cs @@ -180,7 +180,7 @@ namespace SabreTools.DatItems.Formats Link3 = this.Link3, }; sourceDetails.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); - sourceDetails.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); + sourceDetails.SetFieldValue(DatItem.MachineKey, GetMachine()); sourceDetails.SetFieldValue(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey)); sourceDetails.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); sourceDetails.SetFieldValue(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue().AsStringValue()); diff --git a/SabreTools.DatTools/Cleaner.cs b/SabreTools.DatTools/Cleaner.cs index 9ab44050..5f6dc4f2 100644 --- a/SabreTools.DatTools/Cleaner.cs +++ b/SabreTools.DatTools/Cleaner.cs @@ -172,7 +172,7 @@ namespace SabreTools.DatTools continue; // Get the machine associated with the item, if possible - var machine = item.GetFieldValue(DatItem.MachineKey); + var machine = item.GetMachine(); if (machine == null) continue; diff --git a/SabreTools.DatTools/DatFromDir.cs b/SabreTools.DatTools/DatFromDir.cs index dfe80fe9..e7c7c9eb 100644 --- a/SabreTools.DatTools/DatFromDir.cs +++ b/SabreTools.DatTools/DatFromDir.cs @@ -509,8 +509,8 @@ namespace SabreTools.DatTools } // Update machine information - datItem.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, machineName); - datItem.GetFieldValue(DatItem.MachineKey)!.SetName(machineName); + datItem.GetMachine()!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, machineName); + datItem.GetMachine()!.SetName(machineName); // If we have a Disk, then the ".chd" extension needs to be removed if (datItem is Disk && itemName!.EndsWith(".chd")) diff --git a/SabreTools.DatTools/DatItemTool.cs b/SabreTools.DatTools/DatItemTool.cs index b4b76e1f..b2131dd7 100644 --- a/SabreTools.DatTools/DatItemTool.cs +++ b/SabreTools.DatTools/DatItemTool.cs @@ -162,7 +162,7 @@ namespace SabreTools.DatTools public static BaseFile ConvertToBaseFile(this Disk disk) { string? machineName = null; - var machine = disk.GetFieldValue(DatItem.MachineKey); + var machine = disk.GetMachine(); if (machine != null) machineName = machine.GetName(); @@ -185,7 +185,7 @@ namespace SabreTools.DatTools public static BaseFile ConvertToBaseFile(this DatItems.Formats.File file) { string? machineName = null; - var machine = file.GetFieldValue(DatItem.MachineKey); + var machine = file.GetMachine(); if (machine != null) machineName = machine.GetName(); @@ -207,7 +207,7 @@ namespace SabreTools.DatTools public static BaseFile ConvertToBaseFile(this Media media) { string? machineName = null; - var machine = media.GetFieldValue(DatItem.MachineKey); + var machine = media.GetMachine(); if (machine != null) machineName = machine.GetName(); @@ -234,7 +234,7 @@ namespace SabreTools.DatTools public static BaseFile ConvertToBaseFile(this Rom rom) { string? machineName = null; - var machine = rom.GetFieldValue(DatItem.MachineKey); + var machine = rom.GetMachine(); if (machine != null) machineName = machine.GetName(); diff --git a/SabreTools.DatTools/Diffing.cs b/SabreTools.DatTools/Diffing.cs index f83da02e..e5003d40 100644 --- a/SabreTools.DatTools/Diffing.cs +++ b/SabreTools.DatTools/Diffing.cs @@ -488,7 +488,7 @@ namespace SabreTools.DatTools continue; if (item.GetFieldValue(DatItem.SourceKey) != null) - newrom.GetFieldValue(DatItem.MachineKey)!.SetName(newrom.GetFieldValue(DatItem.MachineKey)!.GetName() + $" ({Path.GetFileNameWithoutExtension(inputs[item.GetFieldValue(DatItem.SourceKey)!.Index].CurrentPath)})"); + newrom.GetMachine()!.SetName(newrom.GetMachine()!.GetName() + $" ({Path.GetFileNameWithoutExtension(inputs[item.GetFieldValue(DatItem.SourceKey)!.Index].CurrentPath)})"); dupeData.AddItem(newrom, statsOnly: false); } @@ -887,7 +887,7 @@ namespace SabreTools.DatTools if (item.Clone() is not DatItem newrom || newrom.GetFieldValue(DatItem.SourceKey) == null) continue; - newrom.GetFieldValue(DatItem.MachineKey)!.SetName(newrom.GetFieldValue(DatItem.MachineKey)!.GetName() + $" ({Path.GetFileNameWithoutExtension(inputs[newrom.GetFieldValue(DatItem.SourceKey)!.Index].CurrentPath)})"); + newrom.GetMachine()!.SetName(newrom.GetMachine()!.GetName() + $" ({Path.GetFileNameWithoutExtension(inputs[newrom.GetFieldValue(DatItem.SourceKey)!.Index].CurrentPath)})"); outerDiffData.AddItem(newrom, statsOnly: false); } } diff --git a/SabreTools.DatTools/ExtraIni.cs b/SabreTools.DatTools/ExtraIni.cs index 36297912..9eabbbe2 100644 --- a/SabreTools.DatTools/ExtraIni.cs +++ b/SabreTools.DatTools/ExtraIni.cs @@ -119,7 +119,7 @@ namespace SabreTools.DatTools // Loop through and set the fields accordingly foreach (var datItem in datItems) { - setter.SetFields(datItem.GetFieldValue(DatItem.MachineKey)); + setter.SetFields(datItem.GetMachine()); setter.SetFields(datItem); } } diff --git a/SabreTools.DatTools/MergeSplit.cs b/SabreTools.DatTools/MergeSplit.cs index a0e04945..e7a70dee 100644 --- a/SabreTools.DatTools/MergeSplit.cs +++ b/SabreTools.DatTools/MergeSplit.cs @@ -141,7 +141,7 @@ namespace SabreTools.DatTools filename = filename.Remove(0, rootpath.Length); - var machine = newItem.GetFieldValue(DatItem.MachineKey); + var machine = newItem.GetMachine(); if (machine == null) continue; diff --git a/SabreTools.DatTools/Rebuilder.cs b/SabreTools.DatTools/Rebuilder.cs index a59e365a..24730d6e 100644 --- a/SabreTools.DatTools/Rebuilder.cs +++ b/SabreTools.DatTools/Rebuilder.cs @@ -457,7 +457,7 @@ namespace SabreTools.DatTools foreach (DatItem item in dupes) { // If we don't have a proper machine - var machine = item.GetFieldValue(DatItem.MachineKey); + var machine = item.GetMachine(); if (machine?.GetName() == null) continue; @@ -575,14 +575,14 @@ namespace SabreTools.DatTools // Get the item from the current file HashType[] hashes = [HashType.CRC32, HashType.MD5, HashType.SHA1]; Rom item = FileTypeTool.GetInfo(stream, hashes).ConvertToRom(); - item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, Path.GetFileNameWithoutExtension(item.GetName())); - item.GetFieldValue(DatItem.MachineKey)!.SetName(Path.GetFileNameWithoutExtension(item.GetName())); + item.GetMachine()!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, Path.GetFileNameWithoutExtension(item.GetName())); + item.GetMachine()!.SetName(Path.GetFileNameWithoutExtension(item.GetName())); // If we are coming from an archive, set the correct machine name if (machinename != null) { - item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, machinename); - item.GetFieldValue(DatItem.MachineKey)!.SetName(machinename); + item.GetMachine()!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, machinename); + item.GetMachine()!.SetName(machinename); } dupes.Add(item); diff --git a/SabreTools.DatTools/Remover.cs b/SabreTools.DatTools/Remover.cs index 36ec54c0..11839aaa 100644 --- a/SabreTools.DatTools/Remover.cs +++ b/SabreTools.DatTools/Remover.cs @@ -175,7 +175,7 @@ namespace SabreTools.DatTools for (int j = 0; j < items.Count; j++) { // Handle machine removals - var machine = items[j].GetFieldValue(DatItem.MachineKey); + var machine = items[j].GetMachine(); RemoveFields(machine); // Handle item removals diff --git a/SabreTools.DatTools/Replacer.cs b/SabreTools.DatTools/Replacer.cs index 567c6108..0f7ae11b 100644 --- a/SabreTools.DatTools/Replacer.cs +++ b/SabreTools.DatTools/Replacer.cs @@ -209,7 +209,7 @@ namespace SabreTools.DatTools var list = datFile.GetItemsForBucket(key); if (list.Count > 0) - ReplaceFields(newDatItem.GetFieldValue(DatItem.MachineKey)!, list[index: 0].GetFieldValue(DatItem.MachineKey)!, machineFieldNames, onlySame); + ReplaceFields(newDatItem.GetMachine()!, list[index: 0].GetMachine()!, machineFieldNames, onlySame); newDatItems.Add(newDatItem); } diff --git a/SabreTools.DatTools/Setter.cs b/SabreTools.DatTools/Setter.cs index ff4d81db..2d8d8f07 100644 --- a/SabreTools.DatTools/Setter.cs +++ b/SabreTools.DatTools/Setter.cs @@ -172,8 +172,8 @@ namespace SabreTools.DatTools #region Common // Handle Machine fields - if (MachineFieldMappings.Count > 0 && datItem.GetFieldValue(DatItem.MachineKey) != null) - SetFields(datItem.GetFieldValue(DatItem.MachineKey)!); + if (MachineFieldMappings.Count > 0 && datItem.GetMachine() != null) + SetFields(datItem.GetMachine()!); // If there are no field names, return if (ItemFieldMappings == null || ItemFieldMappings.Count == 0) diff --git a/SabreTools.DatTools/Splitter.cs b/SabreTools.DatTools/Splitter.cs index 70b20f81..6e4b090c 100644 --- a/SabreTools.DatTools/Splitter.cs +++ b/SabreTools.DatTools/Splitter.cs @@ -526,8 +526,8 @@ namespace SabreTools.DatTools #else continue; #endif - items.ForEach(item => item.GetFieldValue(DatItem.MachineKey)!.SetName(Path.GetFileName(item.GetFieldValue(DatItem.MachineKey)!.GetName()))); - items.ForEach(item => item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, Path.GetFileName(item.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey)))); + items.ForEach(item => item.GetMachine()!.SetName(Path.GetFileName(item.GetMachine()!.GetName()))); + items.ForEach(item => item.GetMachine()!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, Path.GetFileName(item.GetMachine()!.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey)))); // Now add the game to the output DAT items.ForEach(item => tempDat.AddItem(item, statsOnly: false));