diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs
index 4e062916..dacc76c6 100644
--- a/SabreTools.DatFiles/DatFile.cs
+++ b/SabreTools.DatFiles/DatFile.cs
@@ -210,7 +210,7 @@ namespace SabreTools.DatFiles
/// True to only add item statistics while parsing, false otherwise
/// The key for the item
protected long ParseAddHelper(DatItem item, long machineIndex, bool statsOnly)
- => ItemsDB.AddItem(item, machineIndex, statsOnly);
+ => ItemsDB.AddItem(item, machineIndex, statsOnly: statsOnly);
#endregion
diff --git a/SabreTools.DatFiles/ItemDictionaryDB.cs b/SabreTools.DatFiles/ItemDictionaryDB.cs
index 21a82c6c..fb0e7204 100644
--- a/SabreTools.DatFiles/ItemDictionaryDB.cs
+++ b/SabreTools.DatFiles/ItemDictionaryDB.cs
@@ -28,7 +28,6 @@ using SabreTools.Matching;
* - Feature parity with all existing item dictionary operations
* - A way to transition between the two item dictionaries (a flag?)
* - Helper methods that target the "database" version instead of assuming the standard dictionary
- * - Should sources be separated out the same as machines are?
*
* Notable changes include:
* - Separation of Machine from DatItem, leading to a mapping instead
@@ -80,6 +79,22 @@ namespace SabreTools.DatFiles
[JsonIgnore, XmlIgnore]
private long _machineIndex = 0;
+ ///
+ /// Internal dictionary for all sources
+ ///
+ [JsonIgnore, XmlIgnore]
+#if NET40_OR_GREATER || NETCOREAPP
+ private readonly ConcurrentDictionary _sources = new ConcurrentDictionary();
+#else
+ private readonly Dictionary _sources = [];
+#endif
+
+ ///
+ /// Current highest available source index
+ ///
+ [JsonIgnore, XmlIgnore]
+ private long _sourceIndex = 0;
+
///
/// Internal dictionary for item to machine mappings
///
@@ -90,6 +105,16 @@ namespace SabreTools.DatFiles
private readonly Dictionary _itemToMachineMapping = [];
#endif
+ ///
+ /// Internal dictionary for item to source mappings
+ ///
+ [JsonIgnore, XmlIgnore]
+#if NET40_OR_GREATER || NETCOREAPP
+ private readonly ConcurrentDictionary _itemToSourceMapping = new ConcurrentDictionary();
+#else
+ private readonly Dictionary _itemToSourceMapping = [];
+#endif
+
///
/// Internal dictionary representing the current buckets
///
@@ -154,7 +179,7 @@ namespace SabreTools.DatFiles
/// Index of the machine related to the item
/// True to only add item statistics while parsing, false otherwise (default)
/// The index for the added item, -1 on error
- public long AddItem(DatItem item, long machineIndex, bool statsOnly)
+ public long AddItem(DatItem item, long machineIndex, long sourceIndex = -1, bool statsOnly = false)
{
// If we have a Disk, Media, or Rom, clean the hash data
if (item is Disk disk)
@@ -235,7 +260,7 @@ namespace SabreTools.DatFiles
}
else
{
- return AddItem(item, machineIndex);
+ return AddItem(item, machineIndex, sourceIndex);
}
}
@@ -248,6 +273,15 @@ namespace SabreTools.DatFiles
return _machineIndex - 1;
}
+ ///
+ /// Add a source, returning the insert index
+ ///
+ public long AddSource(Source source)
+ {
+ _sources[_sourceIndex++] = source;
+ return _sourceIndex - 1;
+ }
+
///
/// Remove any keys that have null or empty values
///
@@ -306,9 +340,14 @@ namespace SabreTools.DatFiles
}
///
- /// Get all item mappings
+ /// Get all item to machine mappings
///
- public (long, long)[] GetItemMappings() => _itemToMachineMapping.Select(kvp => (kvp.Key, kvp.Value)).ToArray();
+ public (long, long)[] GetItemMachineMappings() => _itemToMachineMapping.Select(kvp => (kvp.Key, kvp.Value)).ToArray();
+
+ ///
+ /// Get all item to source mappings
+ ///
+ public (long, long)[] GetItemSourceMappings() => _itemToSourceMapping.Select(kvp => (kvp.Key, kvp.Value)).ToArray();
///
/// Get all items and their indicies
@@ -354,6 +393,25 @@ namespace SabreTools.DatFiles
return [.. datItems];
}
+ ///
+ /// Get the indices and items associated with a source index
+ ///
+ public (long, DatItem)[]? GetItemsForSource(long sourceIndex, bool filter = false)
+ {
+ var itemIds = _itemToSourceMapping
+ .Where(mapping => mapping.Value == sourceIndex)
+ .Select(mapping => mapping.Key);
+
+ var datItems = new List<(long, DatItem)>();
+ foreach (long itemId in itemIds)
+ {
+ if (_items.ContainsKey(itemId) && (!filter || _items[itemId].GetBoolFieldValue(DatItem.RemoveKey) != true))
+ datItems.Add((itemId, _items[itemId]));
+ }
+
+ return [.. datItems];
+ }
+
///
/// Get a machine based on the index
///
@@ -398,6 +456,37 @@ namespace SabreTools.DatFiles
///
public (long, Machine)[] GetMachines() => _machines.Select(kvp => (kvp.Key, kvp.Value)).ToArray();
+ ///
+ /// Get a source based on the index
+ ///
+ public Source? GetSource(long index)
+ {
+ if (!_sources.ContainsKey(index))
+ return null;
+
+ return _sources[index];
+ }
+
+ ///
+ /// Get the index and source associated with an item index
+ ///
+ public (long, Source?) GetSourceForItem(long itemIndex)
+ {
+ if (!_itemToSourceMapping.ContainsKey(itemIndex))
+ return (-1, null);
+
+ long sourceIndex = _itemToSourceMapping[itemIndex];
+ if (!_sources.ContainsKey(sourceIndex))
+ return (-1, null);
+
+ return (sourceIndex, _sources[sourceIndex]);
+ }
+
+ ///
+ /// Get all sources and their indicies
+ ///
+ public (long, Source)[] GetSources() => _sources.Select(kvp => (kvp.Key, kvp.Value)).ToArray();
+
///
/// Remove an item, returning if it could be removed
///
@@ -467,7 +556,7 @@ namespace SabreTools.DatFiles
///
/// Add an item, returning the insert index
///
- private long AddItem(DatItem item, long machineIndex)
+ private long AddItem(DatItem item, long machineIndex, long sourceIndex)
{
// Add the item with a new index
_items[_itemIndex++] = item;
@@ -475,6 +564,9 @@ namespace SabreTools.DatFiles
// Add the machine mapping
_itemToMachineMapping[_itemIndex - 1] = machineIndex;
+ // Add the source mapping
+ _itemToSourceMapping[_itemIndex - 1] = sourceIndex;
+
// Add the item statistics
DatStatistics.AddItemStatistics(item);
diff --git a/SabreTools.DatTools/DatFileTool.cs b/SabreTools.DatTools/DatFileTool.cs
index c050fe85..242e48b2 100644
--- a/SabreTools.DatTools/DatFileTool.cs
+++ b/SabreTools.DatTools/DatFileTool.cs
@@ -641,7 +641,7 @@ namespace SabreTools.DatTools
// Get all current items, machines, and mappings
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
- var mappings = datFile.ItemsDB.GetItemMappings().ToDictionary(m => m.Item1, m => m.Item2);
+ var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
// Create a mapping from old machine index to new machine index
var machineRemapping = new Dictionary();
@@ -683,7 +683,7 @@ namespace SabreTools.DatTools
continue;
#endif
- dupeData.ItemsDB.AddItem(newrom, machineRemapping[machineIndex], false);
+ dupeData.ItemsDB.AddItem(newrom, machineRemapping[machineIndex], statsOnly: false);
}
#if NET40_OR_GREATER || NETCOREAPP
});
@@ -855,7 +855,7 @@ namespace SabreTools.DatTools
// Get all current items, machines, and mappings
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
- var mappings = datFile.ItemsDB.GetItemMappings().ToDictionary(m => m.Item1, m => m.Item2);
+ var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
// Create a mapping from old machine index to new machine index
var machineRemapping = new Dictionary();
@@ -896,7 +896,7 @@ namespace SabreTools.DatTools
#else
if (item.Value.GetFieldValue(DatItem.DupeTypeKey).HasFlag(DupeType.Internal) || item.Value.GetFieldValue(DatItem.DupeTypeKey) == 0x00)
#endif
- outDats[item.Value.GetFieldValue(DatItem.SourceKey)!.Index].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ outDats[item.Value.GetFieldValue(DatItem.SourceKey)!.Index].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
#if NET40_OR_GREATER || NETCOREAPP
});
#else
@@ -1030,7 +1030,7 @@ namespace SabreTools.DatTools
// Get all current items, machines, and mappings
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
- var mappings = datFile.ItemsDB.GetItemMappings().ToDictionary(m => m.Item1, m => m.Item2);
+ var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
// Create a mapping from old machine index to new machine index
var machineRemapping = new Dictionary();
@@ -1073,7 +1073,7 @@ namespace SabreTools.DatTools
#endif
newrom.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.NameKey, newrom.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) + $" ({Path.GetFileNameWithoutExtension(inputs[newrom.GetFieldValue(DatItem.SourceKey)!.Index].CurrentPath)})");
- outerDiffData.ItemsDB.AddItem(newrom, machineRemapping[machineIndex], false);
+ outerDiffData.ItemsDB.AddItem(newrom, machineRemapping[machineIndex], statsOnly: false);
}
#if NET40_OR_GREATER || NETCOREAPP
});
@@ -1178,7 +1178,7 @@ namespace SabreTools.DatTools
// Get all current items, machines, and mappings
var datItems = addFrom.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
var machines = addFrom.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
- var mappings = addFrom.ItemsDB.GetItemMappings().ToDictionary(m => m.Item1, m => m.Item2);
+ var mappings = addFrom.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
// Create a mapping from old machine index to new machine index
var machineRemapping = new Dictionary();
@@ -1201,7 +1201,7 @@ namespace SabreTools.DatTools
{
// Get the machine index for this item
long machineIndex = mappings[item.Key];
- addTo.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ addTo.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
// Now remove the key from the source DAT
if (delete)
@@ -1270,7 +1270,7 @@ namespace SabreTools.DatTools
// Get all current items, machines, and mappings
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
- var mappings = datFile.ItemsDB.GetItemMappings().ToDictionary(m => m.Item1, m => m.Item2);
+ var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
// Create a mapping from old machine index to new machine index
var machineRemapping = new Dictionary();
@@ -1295,7 +1295,7 @@ namespace SabreTools.DatTools
long machineIndex = mappings[item.Key];
if (item.Value.GetFieldValue(DatItem.SourceKey) != null && item.Value.GetFieldValue(DatItem.SourceKey)!.Index == index)
- indexDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ indexDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
#if NET40_OR_GREATER || NETCOREAPP
});
#else
diff --git a/SabreTools.DatTools/Splitter.cs b/SabreTools.DatTools/Splitter.cs
index e7f874e6..0ca54acf 100644
--- a/SabreTools.DatTools/Splitter.cs
+++ b/SabreTools.DatTools/Splitter.cs
@@ -145,7 +145,7 @@ namespace SabreTools.DatTools
// Get all current items, machines, and mappings
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
- var mappings = datFile.ItemsDB.GetItemMappings().ToDictionary(m => m.Item1, m => m.Item2);
+ var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
// Create a mapping from old machine index to new machine index
var machineRemapping = new Dictionary();
@@ -172,16 +172,16 @@ namespace SabreTools.DatTools
if (newExtA.Contains((item.Value.GetName() ?? string.Empty).GetNormalizedExtension()))
{
- extADat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ extADat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
}
else if (newExtB.Contains((item.Value.GetName() ?? string.Empty).GetNormalizedExtension()))
{
- extBDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ extBDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
}
else
{
- extADat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
- extBDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ extADat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
+ extBDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
}
#if NET40_OR_GREATER || NETCOREAPP
});
@@ -383,7 +383,7 @@ namespace SabreTools.DatTools
// Get all current items, machines, and mappings
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
- var mappings = datFile.ItemsDB.GetItemMappings().ToDictionary(m => m.Item1, m => m.Item2);
+ var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
// Create a mapping from old machine index to new machine index
var machineRemapping = new Dictionary();
@@ -419,45 +419,45 @@ namespace SabreTools.DatTools
{
case Disk disk:
if (disk.GetStringFieldValue(Models.Metadata.Disk.StatusKey).AsEnumValue() == ItemStatus.Nodump)
- fieldDats[Models.Metadata.Disk.StatusKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Disk.StatusKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
- fieldDats[Models.Metadata.Disk.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Disk.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)))
- fieldDats[Models.Metadata.Disk.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Disk.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)))
- fieldDats[Models.Metadata.Disk.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Disk.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else
- fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
break;
case Media media:
if (!string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA256Key)))
- fieldDats[Models.Metadata.Media.SHA256Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Media.SHA256Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)))
- fieldDats[Models.Metadata.Media.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Media.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.MD5Key)))
- fieldDats[Models.Metadata.Media.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Media.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else
- fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
break;
case Rom rom:
if (rom.GetStringFieldValue(Models.Metadata.Rom.StatusKey).AsEnumValue() == ItemStatus.Nodump)
- fieldDats[Models.Metadata.Rom.StatusKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Rom.StatusKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)))
- fieldDats[Models.Metadata.Rom.SHA512Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Rom.SHA512Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)))
- fieldDats[Models.Metadata.Rom.SHA384Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Rom.SHA384Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)))
- fieldDats[Models.Metadata.Rom.SHA256Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Rom.SHA256Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
- fieldDats[Models.Metadata.Rom.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Rom.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)))
- fieldDats[Models.Metadata.Rom.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Rom.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)))
- fieldDats[Models.Metadata.Rom.CRCKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats[Models.Metadata.Rom.CRCKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
else
- fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
break;
default:
@@ -695,7 +695,7 @@ namespace SabreTools.DatTools
// Get all current items, machines, and mappings
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
- var mappings = datFile.ItemsDB.GetItemMappings().ToDictionary(m => m.Item1, m => m.Item2);
+ var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
// Create a mapping from old machine index to new machine index
var machineRemapping = new Dictionary();
@@ -722,19 +722,19 @@ namespace SabreTools.DatTools
// If the file is not a Rom, it automatically goes in the "lesser" dat
if (item.Value is not Rom rom)
- lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
// If the file is a Rom and has no size, put it in the "lesser" dat
else if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null)
- lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
// If the file is a Rom and less than the radix, put it in the "lesser" dat
else if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < radix)
- lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
// If the file is a Rom and greater than or equal to the radix, put it in the "greater" dat
else if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) >= radix)
- greaterThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ greaterThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
#if NET40_OR_GREATER || NETCOREAPP
});
#else
@@ -939,7 +939,7 @@ namespace SabreTools.DatTools
// Get all current items, machines, and mappings
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
- var mappings = datFile.ItemsDB.GetItemMappings().ToDictionary(m => m.Item1, m => m.Item2);
+ var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
// Create a mapping from old machine index to new machine index
var machineRemapping = new Dictionary();
@@ -964,7 +964,7 @@ namespace SabreTools.DatTools
long machineIndex = mappings[item.Key];
if (item.Value.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue() == itemType)
- indexDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], false);
+ indexDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
#if NET40_OR_GREATER || NETCOREAPP
});
#else