From fe58061a2dee3668b2bcc8f5cffc1aa6a4f16dc9 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 18 Apr 2026 12:45:58 -0400 Subject: [PATCH] Found out why these helpers were this way --- .../DatFileTests.Filtering.cs | 6 ++-- .../DatFileTests.Splitting.cs | 2 +- .../DatFile.Filtering.cs | 36 +++++++++---------- .../DatFile.Splitting.cs | 6 ++-- SabreTools.Metadata.DatFiles/DatFile.cs | 8 ++++- SabreTools.Metadata.DatFiles/ItemDatabase.cs | 17 +++++++-- 6 files changed, 47 insertions(+), 28 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index 92eb70f6..c3cd2001 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -121,7 +121,7 @@ namespace SabreTools.Metadata.DatFiles.Test datFile.MachineDescriptionToName(); - Machine actualMachine = Assert.Single(datFile.GetMachinesDB()); + Machine actualMachine = Assert.Single(datFile.GetMachinesDB()).Value; Assert.Equal("description", actualMachine.Name); Assert.Equal("description", actualMachine.Description); } @@ -274,7 +274,7 @@ namespace SabreTools.Metadata.DatFiles.Test List regions = ["World", "Nowhere"]; datFile.SetOneGamePerRegion(regions); - var actualWorldMachine = Assert.Single(datFile.GetMachinesDB()); + var actualWorldMachine = Assert.Single(datFile.GetMachinesDB()).Value; Assert.NotNull(actualWorldMachine); Assert.Equal("machine (World)", actualWorldMachine.Name); } @@ -318,7 +318,7 @@ namespace SabreTools.Metadata.DatFiles.Test datFile.StripSceneDatesFromItems(); - Machine actualMachine = Assert.Single(datFile.GetMachinesDB()); + Machine actualMachine = Assert.Single(datFile.GetMachinesDB()).Value; Assert.Equal("machine-name", actualMachine.Name); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index 4c535f69..5d5d4c98 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -1010,7 +1010,7 @@ namespace SabreTools.Metadata.DatFiles.Test datFile.BucketBy(ItemKey.Machine); datFile.RemoveMachineRelationshipTags(); - Machine actual = Assert.Single(datFile.GetMachinesDB()); + Machine actual = Assert.Single(datFile.GetMachinesDB()).Value; Assert.Null(actual.CloneOf); Assert.Null(actual.RomOf); Assert.Null(actual.SampleOf); diff --git a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs index 987a7a89..7215ec8d 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Filtering.cs @@ -161,8 +161,8 @@ namespace SabreTools.Metadata.DatFiles foreach (var machine in GetMachinesDB()) { // Get the values to check against - string? machineName = machine.Name; - string? machineDesc = machine.Description; + string? machineName = machine.Value.Name; + string? machineDesc = machine.Value.Description; if (machineName is null || machineDesc is null) continue; @@ -398,13 +398,13 @@ namespace SabreTools.Metadata.DatFiles foreach (var machine in GetMachinesDB()) { // Get machine information - string? machineName = machine.Name?.ToLowerInvariant(); - if (machine is null || machineName is null) + string? machineName = machine.Value?.Name?.ToLowerInvariant(); + if (machine.Value is null || machineName is null) continue; // Get the string values - string? cloneOf = machine.CloneOf?.ToLowerInvariant(); - string? romOf = machine.RomOf?.ToLowerInvariant(); + string? cloneOf = machine.Value.CloneOf?.ToLowerInvariant(); + string? romOf = machine.Value.RomOf?.ToLowerInvariant(); // Match on CloneOf first if (!string.IsNullOrEmpty(cloneOf)) @@ -675,15 +675,15 @@ namespace SabreTools.Metadata.DatFiles #endif { // Get the values to check against - string? machineName = machine.Name; - string? machineDesc = machine.Description; + string? machineName = machine.Value.Name; + string? machineDesc = machine.Value.Description; #pragma warning disable SYSLIB1045 // Convert to 'GeneratedRegexAttribute' if (machineName is not null && Regex.IsMatch(machineName, SceneNamePattern)) - machine.Name = Regex.Replace(machineName, SceneNamePattern, "$2"); + machine.Value.Name = Regex.Replace(machineName, SceneNamePattern, "$2"); if (machineDesc is not null && Regex.IsMatch(machineDesc, SceneNamePattern)) - machine.Description = Regex.Replace(machineDesc, SceneNamePattern, "$2"); + machine.Value.Description = Regex.Replace(machineDesc, SceneNamePattern, "$2"); #pragma warning restore SYSLIB1045 #if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER }); @@ -757,26 +757,26 @@ namespace SabreTools.Metadata.DatFiles foreach (var machine in GetMachinesDB()) { // Get the values to check against - string? machineName = machine.Name; - string? cloneOf = machine.CloneOf; - string? romOf = machine.RomOf; - string? sampleOf = machine.SampleOf; + string? machineName = machine.Value.Name; + string? cloneOf = machine.Value.CloneOf; + string? romOf = machine.Value.RomOf; + string? sampleOf = machine.Value.SampleOf; // Update machine name if (machineName is not null && mapping.TryGetValue(machineName, out string? mappedMachineName)) - machine.Name = mappedMachineName; + machine.Value.Name = mappedMachineName; // Update cloneof if (cloneOf is not null && mapping.TryGetValue(cloneOf, out string? mappedCloneOf)) - machine.CloneOf = mappedCloneOf; + machine.Value.CloneOf = mappedCloneOf; // Update romof if (romOf is not null && mapping.TryGetValue(romOf, out string? mappedRomOf)) - machine.RomOf = mappedRomOf; + machine.Value.RomOf = mappedRomOf; // Update sampleof if (sampleOf is not null && mapping.TryGetValue(sampleOf, out string? mappedSampleOf)) - machine.SampleOf = mappedSampleOf; + machine.Value.SampleOf = mappedSampleOf; } } diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index 48a4e885..0a550e62 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -1421,9 +1421,9 @@ namespace SabreTools.Metadata.DatFiles foreach (var machine in machines) #endif { - machine.CloneOf = null; - machine.RomOf = null; - machine.SampleOf = null; + machine.Value.CloneOf = null; + machine.Value.RomOf = null; + machine.Value.SampleOf = null; #if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER }); #else diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 8dfc0238..1fd96da9 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -274,7 +274,7 @@ namespace SabreTools.Metadata.DatFiles /// /// Get all machines and their indicies /// - public Machine[] GetMachinesDB() + public IDictionary GetMachinesDB() => ItemsDB.GetMachines(); /// @@ -283,6 +283,12 @@ namespace SabreTools.Metadata.DatFiles public KeyValuePair GetSourceDB(long sourceIndex) => ItemsDB.GetSource(sourceIndex); + /// + /// Get all sources and their indicies + /// + public IDictionary GetSourcesDB() + => ItemsDB.GetSources(); + /// /// Remove a key from the file dictionary if it exists /// diff --git a/SabreTools.Metadata.DatFiles/ItemDatabase.cs b/SabreTools.Metadata.DatFiles/ItemDatabase.cs index 11226de8..240c430f 100644 --- a/SabreTools.Metadata.DatFiles/ItemDatabase.cs +++ b/SabreTools.Metadata.DatFiles/ItemDatabase.cs @@ -535,6 +535,12 @@ namespace SabreTools.Metadata.DatFiles /// public DatItem? GetItem(long index) => _items.Get(index); + /// + /// Get the internal item table + /// + /// TODO: Figure out if this can be removed + public IDictionary GetItems() => _items.Table; + /// /// Get the indices and items associated with a bucket name /// @@ -584,9 +590,10 @@ namespace SabreTools.Metadata.DatFiles } /// - /// Get all machines and their indicies + /// Get the internal machine table /// - public Machine[] GetMachines() => _machines.Values; + /// TODO: Figure out if this can be removed + public IDictionary GetMachines() => _machines.Table; /// /// Get a source based on the index @@ -599,6 +606,12 @@ namespace SabreTools.Metadata.DatFiles return new KeyValuePair(index, source); } + /// + /// Get the internal source table + /// + /// TODO: Figure out if this can be removed + public IDictionary GetSources() => _sources.Table; + /// /// Remove a key from the file dictionary if it exists ///