mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Increase readability of Machine access
This commit is contained in:
@@ -93,7 +93,7 @@ namespace SabreTools.DatFiles.Test
|
|||||||
|
|
||||||
// The name of the bucket is not expected to change
|
// The name of the bucket is not expected to change
|
||||||
DatItem actual = Assert.Single(datFile.GetItemsForBucket("machine"));
|
DatItem actual = Assert.Single(datFile.GetItemsForBucket("machine"));
|
||||||
Machine? actualMachine = actual.GetFieldValue<Machine?>(DatItem.MachineKey);
|
Machine? actualMachine = actual.GetMachine();
|
||||||
Assert.NotNull(actualMachine);
|
Assert.NotNull(actualMachine);
|
||||||
Assert.Equal("description", actualMachine.GetName());
|
Assert.Equal("description", actualMachine.GetName());
|
||||||
Assert.Equal("description", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey));
|
Assert.Equal("description", actualMachine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey));
|
||||||
@@ -149,12 +149,12 @@ namespace SabreTools.DatFiles.Test
|
|||||||
Assert.Equal(2, actualDatItems.Count);
|
Assert.Equal(2, actualDatItems.Count);
|
||||||
|
|
||||||
DatItem actualRom = Assert.Single(actualDatItems.FindAll(i => i is Rom));
|
DatItem actualRom = Assert.Single(actualDatItems.FindAll(i => i is Rom));
|
||||||
Machine? actualRomMachine = actualRom.GetFieldValue<Machine>(DatItem.MachineKey);
|
Machine? actualRomMachine = actualRom.GetMachine();
|
||||||
Assert.NotNull(actualRomMachine);
|
Assert.NotNull(actualRomMachine);
|
||||||
Assert.Equal("machine/rom", actualRomMachine.GetName());
|
Assert.Equal("machine/rom", actualRomMachine.GetName());
|
||||||
|
|
||||||
DatItem actualDisk = Assert.Single(actualDatItems.FindAll(i => i is Disk));
|
DatItem actualDisk = Assert.Single(actualDatItems.FindAll(i => i is Disk));
|
||||||
Machine? actualDiskMachine = actualDisk.GetFieldValue<Machine>(DatItem.MachineKey);
|
Machine? actualDiskMachine = actualDisk.GetMachine();
|
||||||
Assert.NotNull(actualDiskMachine);
|
Assert.NotNull(actualDiskMachine);
|
||||||
Assert.Equal("machine/disk", actualDiskMachine.GetName());
|
Assert.Equal("machine/disk", actualDiskMachine.GetName());
|
||||||
}
|
}
|
||||||
@@ -229,7 +229,7 @@ namespace SabreTools.DatFiles.Test
|
|||||||
|
|
||||||
var actualDatItems = datFile.GetItemsForBucket("machine (world)");
|
var actualDatItems = datFile.GetItemsForBucket("machine (world)");
|
||||||
DatItem actualWorldRom = Assert.Single(actualDatItems);
|
DatItem actualWorldRom = Assert.Single(actualDatItems);
|
||||||
Machine? actualWorldMachine = actualWorldRom.GetFieldValue<Machine>(DatItem.MachineKey);
|
Machine? actualWorldMachine = actualWorldRom.GetMachine();
|
||||||
Assert.NotNull(actualWorldMachine);
|
Assert.NotNull(actualWorldMachine);
|
||||||
Assert.Equal("machine (World)", actualWorldMachine.GetName());
|
Assert.Equal("machine (World)", actualWorldMachine.GetName());
|
||||||
}
|
}
|
||||||
@@ -279,7 +279,7 @@ namespace SabreTools.DatFiles.Test
|
|||||||
|
|
||||||
// The name of the bucket is not expected to change
|
// The name of the bucket is not expected to change
|
||||||
DatItem actual = Assert.Single(datFile.GetItemsForBucket("10.10.10-machine-name"));
|
DatItem actual = Assert.Single(datFile.GetItemsForBucket("10.10.10-machine-name"));
|
||||||
Machine? actualMachine = actual.GetFieldValue<Machine?>(DatItem.MachineKey);
|
Machine? actualMachine = actual.GetMachine();
|
||||||
Assert.NotNull(actualMachine);
|
Assert.NotNull(actualMachine);
|
||||||
Assert.Equal("machine-name", actualMachine.GetName());
|
Assert.Equal("machine-name", actualMachine.GetName());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -618,7 +618,7 @@ namespace SabreTools.DatFiles.Test
|
|||||||
|
|
||||||
Assert.Single(datFile.GetItemsForBucket("parent"));
|
Assert.Single(datFile.GetItemsForBucket("parent"));
|
||||||
DatItem actual = Assert.Single(datFile.GetItemsForBucket("child"));
|
DatItem actual = Assert.Single(datFile.GetItemsForBucket("child"));
|
||||||
Machine? actualMachine = actual.GetFieldValue<Machine>(DatItem.MachineKey);
|
Machine? actualMachine = actual.GetMachine();
|
||||||
Assert.NotNull(actualMachine);
|
Assert.NotNull(actualMachine);
|
||||||
Assert.Equal("child", actualMachine.GetName());
|
Assert.Equal("child", actualMachine.GetName());
|
||||||
Assert.Equal("romof", actualMachine.GetStringFieldValue(Models.Metadata.Machine.RomOfKey));
|
Assert.Equal("romof", actualMachine.GetStringFieldValue(Models.Metadata.Machine.RomOfKey));
|
||||||
@@ -725,7 +725,7 @@ namespace SabreTools.DatFiles.Test
|
|||||||
|
|
||||||
Assert.Single(datFile.GetItemsForBucket("parent"));
|
Assert.Single(datFile.GetItemsForBucket("parent"));
|
||||||
DatItem actual = Assert.Single(datFile.GetItemsForBucket("child"));
|
DatItem actual = Assert.Single(datFile.GetItemsForBucket("child"));
|
||||||
Machine? actualMachine = actual.GetFieldValue<Machine>(DatItem.MachineKey);
|
Machine? actualMachine = actual.GetMachine();
|
||||||
Assert.NotNull(actualMachine);
|
Assert.NotNull(actualMachine);
|
||||||
Assert.Equal("child", actualMachine.GetName());
|
Assert.Equal("child", actualMachine.GetName());
|
||||||
}
|
}
|
||||||
@@ -808,7 +808,7 @@ namespace SabreTools.DatFiles.Test
|
|||||||
datFile.RemoveMachineRelationshipTags();
|
datFile.RemoveMachineRelationshipTags();
|
||||||
|
|
||||||
DatItem actualItem = Assert.Single(datFile.GetItemsForBucket("machine"));
|
DatItem actualItem = Assert.Single(datFile.GetItemsForBucket("machine"));
|
||||||
Machine? actual = actualItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
Machine? actual = actualItem.GetMachine();
|
||||||
Assert.NotNull(actual);
|
Assert.NotNull(actual);
|
||||||
Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey));
|
Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey));
|
||||||
Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.RomOfKey));
|
Assert.Null(actual.GetStringFieldValue(Models.Metadata.Machine.RomOfKey));
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ namespace SabreTools.DatFiles
|
|||||||
foreach (DatItem item in items)
|
foreach (DatItem item in items)
|
||||||
{
|
{
|
||||||
// Get the current machine
|
// Get the current machine
|
||||||
var machine = item.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = item.GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -331,7 +331,7 @@ namespace SabreTools.DatFiles
|
|||||||
DatItem item = GetItemsForBucket(key)[0];
|
DatItem item = GetItemsForBucket(key)[0];
|
||||||
|
|
||||||
// Get machine information
|
// Get machine information
|
||||||
Machine? machine = item.GetFieldValue<Machine>(DatItem.MachineKey);
|
Machine? machine = item.GetMachine();
|
||||||
string? machineName = machine?.GetName()?.ToLowerInvariant();
|
string? machineName = machine?.GetName()?.ToLowerInvariant();
|
||||||
if (machine == null || machineName == null)
|
if (machine == null || machineName == null)
|
||||||
continue;
|
continue;
|
||||||
@@ -521,7 +521,7 @@ namespace SabreTools.DatFiles
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Get the current machine
|
// Get the current machine
|
||||||
var machine = datItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = datItem.GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -657,7 +657,7 @@ namespace SabreTools.DatFiles
|
|||||||
foreach (DatItem item in items)
|
foreach (DatItem item in items)
|
||||||
{
|
{
|
||||||
// Get the current machine
|
// Get the current machine
|
||||||
var machine = item.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = item.GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -666,10 +666,10 @@ namespace SabreTools.DatFiles
|
|||||||
string? machineDesc = machine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey);
|
string? machineDesc = machine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey);
|
||||||
|
|
||||||
if (machineName != null && Regex.IsMatch(machineName, SceneNamePattern))
|
if (machineName != null && Regex.IsMatch(machineName, SceneNamePattern))
|
||||||
item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(Regex.Replace(machineName, SceneNamePattern, "$2"));
|
item.GetMachine()!.SetName(Regex.Replace(machineName, SceneNamePattern, "$2"));
|
||||||
|
|
||||||
if (machineDesc != null && Regex.IsMatch(machineDesc, SceneNamePattern))
|
if (machineDesc != null && Regex.IsMatch(machineDesc, SceneNamePattern))
|
||||||
item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, Regex.Replace(machineDesc, SceneNamePattern, "$2"));
|
item.GetMachine()!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, Regex.Replace(machineDesc, SceneNamePattern, "$2"));
|
||||||
}
|
}
|
||||||
#if NET40_OR_GREATER || NETCOREAPP
|
#if NET40_OR_GREATER || NETCOREAPP
|
||||||
});
|
});
|
||||||
@@ -742,7 +742,7 @@ namespace SabreTools.DatFiles
|
|||||||
foreach (DatItem item in items)
|
foreach (DatItem item in items)
|
||||||
{
|
{
|
||||||
// Get the current machine
|
// Get the current machine
|
||||||
var machine = item.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = item.GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@@ -248,7 +248,7 @@ namespace SabreTools.DatFiles
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Get the machine
|
// Get the machine
|
||||||
var machine = items[0].GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = items[0].GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -263,8 +263,8 @@ namespace SabreTools.DatFiles
|
|||||||
if (parentItems.Count == 0)
|
if (parentItems.Count == 0)
|
||||||
{
|
{
|
||||||
copyFrom = new Rom();
|
copyFrom = new Rom();
|
||||||
copyFrom.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(cloneOf);
|
copyFrom.GetMachine()!.SetName(cloneOf);
|
||||||
copyFrom.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, cloneOf);
|
copyFrom.GetMachine()!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, cloneOf);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -325,7 +325,7 @@ namespace SabreTools.DatFiles
|
|||||||
.Contains(rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey)))
|
.Contains(rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey)))
|
||||||
{
|
{
|
||||||
if (subfolder)
|
if (subfolder)
|
||||||
rom.SetName($"{rom.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName()}\\{rom.GetName()}");
|
rom.SetName($"{rom.GetMachine()!.GetName()}\\{rom.GetName()}");
|
||||||
|
|
||||||
rom.CopyMachineInformation(copyFrom);
|
rom.CopyMachineInformation(copyFrom);
|
||||||
AddItem(rom, statsOnly: false);
|
AddItem(rom, statsOnly: false);
|
||||||
@@ -335,7 +335,7 @@ namespace SabreTools.DatFiles
|
|||||||
else if (!GetItemsForBucket(cloneOf).Contains(item) || skipDedup)
|
else if (!GetItemsForBucket(cloneOf).Contains(item) || skipDedup)
|
||||||
{
|
{
|
||||||
if (subfolder)
|
if (subfolder)
|
||||||
rom.SetName($"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName()}\\{rom.GetName()}");
|
rom.SetName($"{item.GetMachine()!.GetName()}\\{rom.GetName()}");
|
||||||
|
|
||||||
rom.CopyMachineInformation(copyFrom);
|
rom.CopyMachineInformation(copyFrom);
|
||||||
AddItem(rom, statsOnly: false);
|
AddItem(rom, statsOnly: false);
|
||||||
@@ -346,7 +346,7 @@ namespace SabreTools.DatFiles
|
|||||||
else if (!GetItemsForBucket(cloneOf).Contains(item))
|
else if (!GetItemsForBucket(cloneOf).Contains(item))
|
||||||
{
|
{
|
||||||
if (subfolder)
|
if (subfolder)
|
||||||
item.SetName($"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName()}\\{item.GetName()}");
|
item.SetName($"{item.GetMachine()!.GetName()}\\{item.GetName()}");
|
||||||
|
|
||||||
item.CopyMachineInformation(copyFrom);
|
item.CopyMachineInformation(copyFrom);
|
||||||
AddItem(item, statsOnly: false);
|
AddItem(item, statsOnly: false);
|
||||||
@@ -507,7 +507,7 @@ namespace SabreTools.DatFiles
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Get the machine
|
// Get the machine
|
||||||
var machine = items[0].GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = items[0].GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
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
|
// Now we want to get the parent romof tag and put it in each of the items
|
||||||
items = GetItemsForBucket(bucket);
|
items = GetItemsForBucket(bucket);
|
||||||
string? romof = GetItemsForBucket(cloneOf)[0].GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey);
|
string? romof = GetItemsForBucket(cloneOf)[0].GetMachine()!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey);
|
||||||
foreach (DatItem item in items)
|
foreach (DatItem item in items)
|
||||||
{
|
{
|
||||||
item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.RomOfKey, romof);
|
item.GetMachine()!.SetFieldValue<string?>(Models.Metadata.Machine.RomOfKey, romof);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -626,7 +626,7 @@ namespace SabreTools.DatFiles
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// If the machine (is/is not) a device, we want to continue
|
// If the machine (is/is not) a device, we want to continue
|
||||||
if (deviceOnly ^ (datItems[0].GetFieldValue<Machine>(DatItem.MachineKey)!.GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey) == true))
|
if (deviceOnly ^ (datItems[0].GetMachine()!.GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey) == true))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Get all device reference names from the current machine
|
// Get all device reference names from the current machine
|
||||||
@@ -935,7 +935,7 @@ namespace SabreTools.DatFiles
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Get the machine
|
// Get the machine
|
||||||
var machine = items[0].GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = items[0].GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -1018,7 +1018,7 @@ namespace SabreTools.DatFiles
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Get the machine
|
// Get the machine
|
||||||
var machine = items[0].GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = items[0].GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -1085,7 +1085,7 @@ namespace SabreTools.DatFiles
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Get the machine
|
// Get the machine
|
||||||
var machine = items[0].GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = items[0].GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
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
|
// Now we want to get the parent romof tag and put it in each of the remaining items
|
||||||
items = GetItemsForBucket(bucket);
|
items = GetItemsForBucket(bucket);
|
||||||
string? romof = GetItemsForBucket(cloneOf)[0].GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey);
|
string? romof = GetItemsForBucket(cloneOf)[0].GetMachine()!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey);
|
||||||
foreach (DatItem item in items)
|
foreach (DatItem item in items)
|
||||||
{
|
{
|
||||||
item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.RomOfKey, romof);
|
item.GetMachine()!.SetFieldValue<string?>(Models.Metadata.Machine.RomOfKey, romof);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1189,7 +1189,7 @@ namespace SabreTools.DatFiles
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Get the machine
|
// Get the machine
|
||||||
var machine = items[0].GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = items[0].GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -1269,7 +1269,7 @@ namespace SabreTools.DatFiles
|
|||||||
foreach (DatItem item in items)
|
foreach (DatItem item in items)
|
||||||
{
|
{
|
||||||
// Get the machine
|
// Get the machine
|
||||||
var machine = item.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = item.GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ namespace SabreTools.DatFiles
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Create a machine to hold everything
|
// Create a machine to hold everything
|
||||||
var machine = items[0].GetFieldValue<DatItems.Machine>(DatItems.DatItem.MachineKey)!.GetInternalClone();
|
var machine = items[0].GetMachine()!.GetInternalClone();
|
||||||
|
|
||||||
// Handle Trurip object, if it exists
|
// Handle Trurip object, if it exists
|
||||||
if (machine.ContainsKey(Models.Metadata.Machine.TruripKey))
|
if (machine.ContainsKey(Models.Metadata.Machine.TruripKey))
|
||||||
|
|||||||
@@ -1000,8 +1000,8 @@ namespace SabreTools.DatFiles
|
|||||||
var nc = new NaturalComparer();
|
var nc = new NaturalComparer();
|
||||||
|
|
||||||
// If machine names don't match
|
// If machine names don't match
|
||||||
string? xMachineName = x.GetFieldValue<Machine>(DatItem.MachineKey)?.GetName();
|
string? xMachineName = x.GetMachine()?.GetName();
|
||||||
string? yMachineName = y.GetFieldValue<Machine>(DatItem.MachineKey)?.GetName();
|
string? yMachineName = y.GetMachine()?.GetName();
|
||||||
if (xMachineName != yMachineName)
|
if (xMachineName != yMachineName)
|
||||||
return nc.Compare(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
|
// TODO: Fix this since DB uses an external map for machines
|
||||||
|
|
||||||
// If machine names don't match
|
// If machine names don't match
|
||||||
string? xMachineName = x.Value.GetFieldValue<Machine>(DatItem.MachineKey)?.GetName();
|
string? xMachineName = x.Value.GetMachine()?.GetName();
|
||||||
string? yMachineName = y.Value.GetFieldValue<Machine>(DatItem.MachineKey)?.GetName();
|
string? yMachineName = y.Value.GetMachine()?.GetName();
|
||||||
if (xMachineName != yMachineName)
|
if (xMachineName != yMachineName)
|
||||||
return nc.Compare(xMachineName, yMachineName);
|
return nc.Compare(xMachineName, yMachineName);
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
WriteDatItem(sw, datItem, lastgame);
|
WriteDatItem(sw, datItem, lastgame);
|
||||||
|
|
||||||
// Set the new data to compare against
|
// Set the new data to compare against
|
||||||
lastgame = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName();
|
lastgame = datItem.GetMachine()!.GetName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
/// <param name="lastgame">The name of the last game to be output</param>
|
/// <param name="lastgame">The name of the last game to be output</param>
|
||||||
private void WriteDatItem(StreamWriter sw, DatItem datItem, string? lastgame)
|
private void WriteDatItem(StreamWriter sw, DatItem datItem, string? lastgame)
|
||||||
{
|
{
|
||||||
var machine = datItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = datItem.GetMachine();
|
||||||
WriteDatItemImpl(sw, datItem, machine!, lastgame);
|
WriteDatItemImpl(sw, datItem, machine!, lastgame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -412,11 +412,11 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
DatItem datItem = datItems[index];
|
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 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<Machine>(DatItem.MachineKey)!.GetName(), StringComparison.OrdinalIgnoreCase))
|
if (lastgame != null && !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase))
|
||||||
WriteEndGame(jtw);
|
WriteEndGame(jtw);
|
||||||
|
|
||||||
// If we have a new game, output the beginning of the new item
|
// If we have a new game, output the beginning of the new item
|
||||||
if (lastgame == null || !string.Equals(lastgame, datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName(), StringComparison.OrdinalIgnoreCase))
|
if (lastgame == null || !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase))
|
||||||
WriteStartGame(jtw, datItem);
|
WriteStartGame(jtw, datItem);
|
||||||
|
|
||||||
// Check for a "null" item
|
// Check for a "null" item
|
||||||
@@ -427,7 +427,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
WriteDatItem(jtw, datItem);
|
WriteDatItem(jtw, datItem);
|
||||||
|
|
||||||
// Set the new data to compare against
|
// Set the new data to compare against
|
||||||
lastgame = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName();
|
lastgame = datItem.GetMachine()!.GetName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -555,8 +555,8 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
private static void WriteStartGame(JsonTextWriter jtw, DatItem datItem)
|
private static void WriteStartGame(JsonTextWriter jtw, DatItem datItem)
|
||||||
{
|
{
|
||||||
// No game should start with a path separator
|
// No game should start with a path separator
|
||||||
if (!string.IsNullOrEmpty(datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName()))
|
if (!string.IsNullOrEmpty(datItem.GetMachine()!.GetName()))
|
||||||
datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName()!.TrimStart(Path.DirectorySeparatorChar));
|
datItem.GetMachine()!.SetName(datItem.GetMachine()!.GetName()!.TrimStart(Path.DirectorySeparatorChar));
|
||||||
|
|
||||||
// Build the state
|
// Build the state
|
||||||
jtw.WriteStartObject();
|
jtw.WriteStartObject();
|
||||||
@@ -564,7 +564,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
// Write the Machine
|
// Write the Machine
|
||||||
jtw.WritePropertyName("machine");
|
jtw.WritePropertyName("machine");
|
||||||
JsonSerializer js = new() { Formatting = Formatting.Indented };
|
JsonSerializer js = new() { Formatting = Formatting.Indented };
|
||||||
js.Serialize(jtw, datItem.GetFieldValue<Machine>(DatItem.MachineKey)!);
|
js.Serialize(jtw, datItem.GetMachine()!);
|
||||||
|
|
||||||
jtw.WritePropertyName("items");
|
jtw.WritePropertyName("items");
|
||||||
jtw.WriteStartArray();
|
jtw.WriteStartArray();
|
||||||
@@ -595,7 +595,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
private void WriteDatItem(JsonTextWriter jtw, DatItem datItem)
|
private void WriteDatItem(JsonTextWriter jtw, DatItem datItem)
|
||||||
{
|
{
|
||||||
// Get the machine for the item
|
// Get the machine for the item
|
||||||
var machine = datItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = datItem.GetMachine();
|
||||||
|
|
||||||
// Pre-process the item name
|
// Pre-process the item name
|
||||||
ProcessItemName(datItem, machine, forceRemoveQuotes: true, forceRomName: false);
|
ProcessItemName(datItem, machine, forceRemoveQuotes: true, forceRomName: false);
|
||||||
|
|||||||
@@ -240,11 +240,11 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
DatItem datItem = datItems[index];
|
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 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<Machine>(DatItem.MachineKey)!.GetName(), StringComparison.OrdinalIgnoreCase))
|
if (lastgame != null && !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase))
|
||||||
WriteEndGame(xtw);
|
WriteEndGame(xtw);
|
||||||
|
|
||||||
// If we have a new game, output the beginning of the new item
|
// If we have a new game, output the beginning of the new item
|
||||||
if (lastgame == null || !string.Equals(lastgame, datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName(), StringComparison.OrdinalIgnoreCase))
|
if (lastgame == null || !string.Equals(lastgame, datItem.GetMachine()!.GetName(), StringComparison.OrdinalIgnoreCase))
|
||||||
WriteStartGame(xtw, datItem);
|
WriteStartGame(xtw, datItem);
|
||||||
|
|
||||||
// Check for a "null" item
|
// Check for a "null" item
|
||||||
@@ -255,7 +255,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
WriteDatItem(xtw, datItem);
|
WriteDatItem(xtw, datItem);
|
||||||
|
|
||||||
// Set the new data to compare against
|
// Set the new data to compare against
|
||||||
lastgame = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName();
|
lastgame = datItem.GetMachine()!.GetName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -387,14 +387,14 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
private static void WriteStartGame(XmlTextWriter xtw, DatItem datItem)
|
private static void WriteStartGame(XmlTextWriter xtw, DatItem datItem)
|
||||||
{
|
{
|
||||||
// No game should start with a path separator
|
// No game should start with a path separator
|
||||||
datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName()?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty);
|
datItem.GetMachine()!.SetName(datItem.GetMachine()!.GetName()?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty);
|
||||||
|
|
||||||
// Write the machine
|
// Write the machine
|
||||||
xtw.WriteStartElement("directory");
|
xtw.WriteStartElement("directory");
|
||||||
XmlSerializer xs = new(typeof(Machine));
|
XmlSerializer xs = new(typeof(Machine));
|
||||||
XmlSerializerNamespaces ns = new();
|
XmlSerializerNamespaces ns = new();
|
||||||
ns.Add("", "");
|
ns.Add("", "");
|
||||||
xs.Serialize(xtw, datItem.GetFieldValue<Machine>(DatItem.MachineKey), ns);
|
xs.Serialize(xtw, datItem.GetMachine(), ns);
|
||||||
|
|
||||||
xtw.WriteStartElement("files");
|
xtw.WriteStartElement("files");
|
||||||
|
|
||||||
@@ -424,7 +424,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
private void WriteDatItem(XmlTextWriter xtw, DatItem datItem)
|
private void WriteDatItem(XmlTextWriter xtw, DatItem datItem)
|
||||||
{
|
{
|
||||||
// Get the machine for the item
|
// Get the machine for the item
|
||||||
var machine = datItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = datItem.GetMachine();
|
||||||
|
|
||||||
// Pre-process the item name
|
// Pre-process the item name
|
||||||
ProcessItemName(datItem, machine, forceRemoveQuotes: true, forceRomName: false);
|
ProcessItemName(datItem, machine, forceRemoveQuotes: true, forceRomName: false);
|
||||||
|
|||||||
@@ -521,8 +521,8 @@ namespace SabreTools.DatFiles
|
|||||||
var itemSource = datItem.GetFieldValue<Source?>(DatItem.SourceKey);
|
var itemSource = datItem.GetFieldValue<Source?>(DatItem.SourceKey);
|
||||||
|
|
||||||
// Get the machines associated with the items
|
// Get the machines associated with the items
|
||||||
var savedMachine = savedItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var savedMachine = savedItem.GetMachine();
|
||||||
var itemMachine = datItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var itemMachine = datItem.GetMachine();
|
||||||
|
|
||||||
// If the current source has a lower ID than the saved, use the saved source
|
// If the current source has a lower ID than the saved, use the saved source
|
||||||
if (itemSource?.Index < savedSource?.Index)
|
if (itemSource?.Index < savedSource?.Index)
|
||||||
@@ -690,7 +690,7 @@ namespace SabreTools.DatFiles
|
|||||||
bucketBy = ItemKey.Machine;
|
bucketBy = ItemKey.Machine;
|
||||||
|
|
||||||
// Get the machine and source
|
// Get the machine and source
|
||||||
var machine = datItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = datItem.GetMachine();
|
||||||
var source = datItem.GetFieldValue<Source?>(DatItem.SourceKey);
|
var source = datItem.GetFieldValue<Source?>(DatItem.SourceKey);
|
||||||
|
|
||||||
// Get the bucket key
|
// Get the bucket key
|
||||||
@@ -731,7 +731,7 @@ namespace SabreTools.DatFiles
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Get the machine and source
|
// Get the machine and source
|
||||||
var machine = item.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = item.GetMachine();
|
||||||
var source = item.GetFieldValue<Source?>(DatItem.SourceKey);
|
var source = item.GetFieldValue<Source?>(DatItem.SourceKey);
|
||||||
|
|
||||||
// We want to get the key most appropriate for the given sorting type
|
// We want to get the key most appropriate for the given sorting type
|
||||||
@@ -803,8 +803,8 @@ namespace SabreTools.DatFiles
|
|||||||
var nc = new NaturalComparer();
|
var nc = new NaturalComparer();
|
||||||
|
|
||||||
// Get the machines
|
// Get the machines
|
||||||
Machine? xMachine = x.GetFieldValue<Machine>(DatItem.MachineKey);
|
Machine? xMachine = x.GetMachine();
|
||||||
Machine? yMachine = y.GetFieldValue<Machine>(DatItem.MachineKey);
|
Machine? yMachine = y.GetMachine();
|
||||||
|
|
||||||
// If machine names don't match
|
// If machine names don't match
|
||||||
string? xMachineName = xMachine?.GetName();
|
string? xMachineName = xMachine?.GetName();
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ namespace SabreTools.DatItems.Test
|
|||||||
romB.RemoveField(DatItem.MachineKey);
|
romB.RemoveField(DatItem.MachineKey);
|
||||||
|
|
||||||
romA.CopyMachineInformation(romB);
|
romA.CopyMachineInformation(romB);
|
||||||
var actualMachineA = romA.GetFieldValue<Machine>(DatItem.MachineKey);
|
var actualMachineA = romA.GetMachine();
|
||||||
Assert.NotNull(actualMachineA);
|
Assert.NotNull(actualMachineA);
|
||||||
Assert.Null(actualMachineA.GetName());
|
Assert.Null(actualMachineA.GetName());
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ namespace SabreTools.DatItems.Test
|
|||||||
romB.RemoveField(DatItem.MachineKey);
|
romB.RemoveField(DatItem.MachineKey);
|
||||||
|
|
||||||
romA.CopyMachineInformation(romB);
|
romA.CopyMachineInformation(romB);
|
||||||
var actualMachineA = romA.GetFieldValue<Machine>(DatItem.MachineKey);
|
var actualMachineA = romA.GetMachine();
|
||||||
Assert.NotNull(actualMachineA);
|
Assert.NotNull(actualMachineA);
|
||||||
Assert.Equal("machineA", actualMachineA.GetName());
|
Assert.Equal("machineA", actualMachineA.GetName());
|
||||||
}
|
}
|
||||||
@@ -93,7 +93,7 @@ namespace SabreTools.DatItems.Test
|
|||||||
romB.SetFieldValue(DatItem.MachineKey, machineB);
|
romB.SetFieldValue(DatItem.MachineKey, machineB);
|
||||||
|
|
||||||
romA.CopyMachineInformation(romB);
|
romA.CopyMachineInformation(romB);
|
||||||
var actualMachineA = romA.GetFieldValue<Machine>(DatItem.MachineKey);
|
var actualMachineA = romA.GetMachine();
|
||||||
Assert.NotNull(actualMachineA);
|
Assert.NotNull(actualMachineA);
|
||||||
Assert.Equal("machineA", actualMachineA.GetName());
|
Assert.Equal("machineA", actualMachineA.GetName());
|
||||||
}
|
}
|
||||||
@@ -113,7 +113,7 @@ namespace SabreTools.DatItems.Test
|
|||||||
romB.SetFieldValue(DatItem.MachineKey, machineB);
|
romB.SetFieldValue(DatItem.MachineKey, machineB);
|
||||||
|
|
||||||
romA.CopyMachineInformation(romB);
|
romA.CopyMachineInformation(romB);
|
||||||
var actualMachineA = romA.GetFieldValue<Machine>(DatItem.MachineKey);
|
var actualMachineA = romA.GetMachine();
|
||||||
Assert.NotNull(actualMachineA);
|
Assert.NotNull(actualMachineA);
|
||||||
Assert.Null(actualMachineA.GetName());
|
Assert.Null(actualMachineA.GetName());
|
||||||
}
|
}
|
||||||
@@ -134,7 +134,7 @@ namespace SabreTools.DatItems.Test
|
|||||||
romB.SetFieldValue(DatItem.MachineKey, machineB);
|
romB.SetFieldValue(DatItem.MachineKey, machineB);
|
||||||
|
|
||||||
romA.CopyMachineInformation(romB);
|
romA.CopyMachineInformation(romB);
|
||||||
var actualMachineA = romA.GetFieldValue<Machine>(DatItem.MachineKey);
|
var actualMachineA = romA.GetMachine();
|
||||||
Assert.NotNull(actualMachineA);
|
Assert.NotNull(actualMachineA);
|
||||||
Assert.Equal("machineB", actualMachineA.GetName());
|
Assert.Equal("machineB", actualMachineA.GetName());
|
||||||
}
|
}
|
||||||
@@ -155,7 +155,7 @@ namespace SabreTools.DatItems.Test
|
|||||||
diskB.SetFieldValue(DatItem.MachineKey, machineB);
|
diskB.SetFieldValue(DatItem.MachineKey, machineB);
|
||||||
|
|
||||||
romA.CopyMachineInformation(diskB);
|
romA.CopyMachineInformation(diskB);
|
||||||
var actualMachineA = romA.GetFieldValue<Machine>(DatItem.MachineKey);
|
var actualMachineA = romA.GetMachine();
|
||||||
Assert.NotNull(actualMachineA);
|
Assert.NotNull(actualMachineA);
|
||||||
Assert.Equal("machineB", actualMachineA.GetName());
|
Assert.Equal("machineB", actualMachineA.GetName());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace SabreTools.DatItems.Test.Formats
|
|||||||
Assert.NotNull(actualDataArea);
|
Assert.NotNull(actualDataArea);
|
||||||
Assert.Equal("XXXXXX", actualDataArea.GetStringFieldValue(Models.Metadata.DataArea.NameKey));
|
Assert.Equal("XXXXXX", actualDataArea.GetStringFieldValue(Models.Metadata.DataArea.NameKey));
|
||||||
|
|
||||||
Machine? actualMachine = actual.GetFieldValue<Machine?>(DatItem.MachineKey);
|
Machine? actualMachine = actual.GetMachine();
|
||||||
Assert.NotNull(actualMachine);
|
Assert.NotNull(actualMachine);
|
||||||
Assert.Equal("XXXXXX", actualMachine.GetName());
|
Assert.Equal("XXXXXX", actualMachine.GetName());
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace SabreTools.DatItems.Test.Formats
|
|||||||
Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.GetStringFieldValue(Models.Metadata.Rom.SHA256Key));
|
Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.GetStringFieldValue(Models.Metadata.Rom.SHA256Key));
|
||||||
Assert.Equal(DupeType.All | DupeType.External, actual.GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
Assert.Equal(DupeType.All | DupeType.External, actual.GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
|
|
||||||
Machine? actualMachine = actual.GetFieldValue<Machine?>(DatItem.MachineKey);
|
Machine? actualMachine = actual.GetMachine();
|
||||||
Assert.NotNull(actualMachine);
|
Assert.NotNull(actualMachine);
|
||||||
Assert.Equal("XXXXXX", actualMachine.GetName());
|
Assert.Equal("XXXXXX", actualMachine.GetName());
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace SabreTools.DatItems.Test.Formats
|
|||||||
Assert.Equal(ZeroHash.SpamSumStr, actual.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey));
|
Assert.Equal(ZeroHash.SpamSumStr, actual.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey));
|
||||||
Assert.Equal(DupeType.All | DupeType.External, actual.GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
Assert.Equal(DupeType.All | DupeType.External, actual.GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
|
|
||||||
Machine? actualMachine = actual.GetFieldValue<Machine?>(DatItem.MachineKey);
|
Machine? actualMachine = actual.GetMachine();
|
||||||
Assert.NotNull(actualMachine);
|
Assert.NotNull(actualMachine);
|
||||||
Assert.Equal("XXXXXX", actualMachine.GetName());
|
Assert.Equal("XXXXXX", actualMachine.GetName());
|
||||||
|
|
||||||
|
|||||||
@@ -101,6 +101,13 @@ namespace SabreTools.DatItems
|
|||||||
|
|
||||||
#region Accessors
|
#region Accessors
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the machine for a DatItem
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Machine if available, null otherwise</returns>
|
||||||
|
/// <remarks>Relies on <see cref="MachineKey"/></remarks>
|
||||||
|
public virtual Machine? GetMachine() => null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the name to use for a DatItem
|
/// Gets the name to use for a DatItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -130,10 +137,10 @@ namespace SabreTools.DatItems
|
|||||||
public void CopyMachineInformation(DatItem item)
|
public void CopyMachineInformation(DatItem item)
|
||||||
{
|
{
|
||||||
// If there is no machine
|
// If there is no machine
|
||||||
if (!item._internal.ContainsKey(DatItem.MachineKey))
|
if (!item._internal.ContainsKey(MachineKey))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var machine = item.GetFieldValue<Machine?>(DatItem.MachineKey);
|
var machine = item.GetMachine();
|
||||||
CopyMachineInformation(machine);
|
CopyMachineInformation(machine);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,7 +154,7 @@ namespace SabreTools.DatItems
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (machine.Clone() is Machine cloned)
|
if (machine.Clone() is Machine cloned)
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, cloned);
|
SetFieldValue<Machine>(MachineKey, cloned);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -241,20 +248,20 @@ namespace SabreTools.DatItems
|
|||||||
return output;
|
return output;
|
||||||
|
|
||||||
// Get the sources for comparison
|
// Get the sources for comparison
|
||||||
var selfSource = GetFieldValue<Source?>(DatItem.SourceKey);
|
var selfSource = GetFieldValue<Source?>(SourceKey);
|
||||||
var lastSource = lastItem.GetFieldValue<Source?>(DatItem.SourceKey);
|
var lastSource = lastItem.GetFieldValue<Source?>(SourceKey);
|
||||||
|
|
||||||
// Get the machines for comparison
|
// Get the machines for comparison
|
||||||
var selfMachine = GetFieldValue<Machine>(DatItem.MachineKey);
|
var selfMachine = GetMachine();
|
||||||
string? selfMachineName = selfMachine?.GetName();
|
string? selfMachineName = selfMachine?.GetName();
|
||||||
var lastMachine = lastItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var lastMachine = lastItem.GetMachine();
|
||||||
string? lastMachineName = lastMachine?.GetName();
|
string? lastMachineName = lastMachine?.GetName();
|
||||||
|
|
||||||
// If the duplicate is external already
|
// If the duplicate is external already
|
||||||
#if NET20 || NET35
|
#if NET20 || NET35
|
||||||
if ((lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0)
|
if ((lastItem.GetFieldValue<DupeType>(DupeTypeKey) & DupeType.External) != 0)
|
||||||
#else
|
#else
|
||||||
if (lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.External))
|
if (lastItem.GetFieldValue<DupeType>(DupeTypeKey).HasFlag(DupeType.External))
|
||||||
#endif
|
#endif
|
||||||
output |= DupeType.External;
|
output |= DupeType.External;
|
||||||
|
|
||||||
@@ -294,16 +301,16 @@ namespace SabreTools.DatItems
|
|||||||
|
|
||||||
// TODO: Fix this since machines are determined in a different way
|
// TODO: Fix this since machines are determined in a different way
|
||||||
// Get the machines for comparison
|
// Get the machines for comparison
|
||||||
var selfMachine = GetFieldValue<Machine>(DatItem.MachineKey);
|
var selfMachine = GetMachine();
|
||||||
string? selfMachineName = selfMachine?.GetName();
|
string? selfMachineName = selfMachine?.GetName();
|
||||||
var lastMachine = lastItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var lastMachine = lastItem.GetMachine();
|
||||||
string? lastMachineName = lastMachine?.GetName();
|
string? lastMachineName = lastMachine?.GetName();
|
||||||
|
|
||||||
// If the duplicate is external already
|
// If the duplicate is external already
|
||||||
#if NET20 || NET35
|
#if NET20 || NET35
|
||||||
if ((lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0)
|
if ((lastItem.GetFieldValue<DupeType>(DupeTypeKey) & DupeType.External) != 0)
|
||||||
#else
|
#else
|
||||||
if (lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.External))
|
if (lastItem.GetFieldValue<DupeType>(DupeTypeKey).HasFlag(DupeType.External))
|
||||||
#endif
|
#endif
|
||||||
output |= DupeType.External;
|
output |= DupeType.External;
|
||||||
|
|
||||||
@@ -337,7 +344,7 @@ namespace SabreTools.DatItems
|
|||||||
/// <returns>True if the item and its machine passes the filter, false otherwise</returns>
|
/// <returns>True if the item and its machine passes the filter, false otherwise</returns>
|
||||||
public bool PassesFilter(FilterRunner filterRunner)
|
public bool PassesFilter(FilterRunner filterRunner)
|
||||||
{
|
{
|
||||||
var machine = GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = GetMachine();
|
||||||
if (machine != null && !machine.PassesFilter(filterRunner))
|
if (machine != null && !machine.PassesFilter(filterRunner))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -450,7 +457,7 @@ namespace SabreTools.DatItems
|
|||||||
|
|
||||||
SetName(string.Empty);
|
SetName(string.Empty);
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType);
|
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType);
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
SetFieldValue<Machine>(MachineKey, new Machine());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -461,13 +468,16 @@ namespace SabreTools.DatItems
|
|||||||
_internal = item;
|
_internal = item;
|
||||||
|
|
||||||
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType);
|
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType);
|
||||||
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
|
SetFieldValue<Machine>(MachineKey, new Machine());
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Accessors
|
#region Accessors
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override Machine? GetMachine() => _internal.Read<Machine>(MachineKey);
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public override string? GetName() => _internal.GetName();
|
public override string? GetName() => _internal.GetName();
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
public override object Clone()
|
public override object Clone()
|
||||||
{
|
{
|
||||||
var blank = new Blank();
|
var blank = new Blank();
|
||||||
blank.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
blank.SetFieldValue<Machine>(DatItem.MachineKey, GetMachine());
|
||||||
blank.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
blank.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||||
blank.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
blank.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
blank.SetFieldValue<string?>(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>().AsStringValue());
|
blank.SetFieldValue<string?>(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>().AsStringValue());
|
||||||
@@ -89,7 +89,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
Blank? newOther = other as Blank;
|
Blank? newOther = other as Blank;
|
||||||
|
|
||||||
// If the machine information matches
|
// If the machine information matches
|
||||||
return GetFieldValue<Machine>(DatItem.MachineKey) == newOther!.GetFieldValue<Machine>(DatItem.MachineKey);
|
return GetMachine() == newOther!.GetMachine();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)?.Clone() as Machine);
|
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetMachine()?.Clone() as Machine);
|
||||||
rom.SetFieldValue<Part>(Rom.PartKey, GetFieldValue<Part>(Disk.PartKey)?.Clone() as Part);
|
rom.SetFieldValue<Part>(Rom.PartKey, GetFieldValue<Part>(Disk.PartKey)?.Clone() as Part);
|
||||||
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||||
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey)?.Clone() as Source);
|
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey)?.Clone() as Source);
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
Format = this.Format,
|
Format = this.Format,
|
||||||
};
|
};
|
||||||
file.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
file.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
file.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
file.SetFieldValue<Machine>(DatItem.MachineKey, GetMachine()!.Clone() as Machine ?? new Machine());
|
||||||
file.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
file.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||||
file.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
file.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, SHA256);
|
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, SHA256);
|
||||||
|
|
||||||
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)?.Clone() as Machine);
|
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetMachine()?.Clone() as Machine);
|
||||||
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||||
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
var rom = new Rom(_internal.ConvertToRom()!);
|
var rom = new Rom(_internal.ConvertToRom()!);
|
||||||
|
|
||||||
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetMachine());
|
||||||
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||||
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
Origin = this.Origin,
|
Origin = this.Origin,
|
||||||
};
|
};
|
||||||
releaseDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
releaseDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
releaseDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
releaseDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetMachine());
|
||||||
releaseDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
releaseDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||||
releaseDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
releaseDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
releaseDetails.SetFieldValue<string?>(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>().AsStringValue());
|
releaseDetails.SetFieldValue<string?>(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>().AsStringValue());
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
BoxBarcode = this.BoxBarcode,
|
BoxBarcode = this.BoxBarcode,
|
||||||
};
|
};
|
||||||
serials.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
serials.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
serials.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
serials.SetFieldValue<Machine>(DatItem.MachineKey, GetMachine());
|
||||||
serials.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
serials.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||||
serials.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
serials.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
serials.SetFieldValue<string?>(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>().AsStringValue());
|
serials.SetFieldValue<string?>(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>().AsStringValue());
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
Link3 = this.Link3,
|
Link3 = this.Link3,
|
||||||
};
|
};
|
||||||
sourceDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
sourceDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
sourceDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
sourceDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetMachine());
|
||||||
sourceDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
sourceDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||||
sourceDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
sourceDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
sourceDetails.SetFieldValue<string?>(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>().AsStringValue());
|
sourceDetails.SetFieldValue<string?>(Models.Metadata.DatItem.TypeKey, GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>().AsStringValue());
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ namespace SabreTools.DatTools
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Get the machine associated with the item, if possible
|
// Get the machine associated with the item, if possible
|
||||||
var machine = item.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = item.GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@@ -509,8 +509,8 @@ namespace SabreTools.DatTools
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update machine information
|
// Update machine information
|
||||||
datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, machineName);
|
datItem.GetMachine()!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, machineName);
|
||||||
datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(machineName);
|
datItem.GetMachine()!.SetName(machineName);
|
||||||
|
|
||||||
// If we have a Disk, then the ".chd" extension needs to be removed
|
// If we have a Disk, then the ".chd" extension needs to be removed
|
||||||
if (datItem is Disk && itemName!.EndsWith(".chd"))
|
if (datItem is Disk && itemName!.EndsWith(".chd"))
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ namespace SabreTools.DatTools
|
|||||||
public static BaseFile ConvertToBaseFile(this Disk disk)
|
public static BaseFile ConvertToBaseFile(this Disk disk)
|
||||||
{
|
{
|
||||||
string? machineName = null;
|
string? machineName = null;
|
||||||
var machine = disk.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = disk.GetMachine();
|
||||||
if (machine != null)
|
if (machine != null)
|
||||||
machineName = machine.GetName();
|
machineName = machine.GetName();
|
||||||
|
|
||||||
@@ -185,7 +185,7 @@ namespace SabreTools.DatTools
|
|||||||
public static BaseFile ConvertToBaseFile(this DatItems.Formats.File file)
|
public static BaseFile ConvertToBaseFile(this DatItems.Formats.File file)
|
||||||
{
|
{
|
||||||
string? machineName = null;
|
string? machineName = null;
|
||||||
var machine = file.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = file.GetMachine();
|
||||||
if (machine != null)
|
if (machine != null)
|
||||||
machineName = machine.GetName();
|
machineName = machine.GetName();
|
||||||
|
|
||||||
@@ -207,7 +207,7 @@ namespace SabreTools.DatTools
|
|||||||
public static BaseFile ConvertToBaseFile(this Media media)
|
public static BaseFile ConvertToBaseFile(this Media media)
|
||||||
{
|
{
|
||||||
string? machineName = null;
|
string? machineName = null;
|
||||||
var machine = media.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = media.GetMachine();
|
||||||
if (machine != null)
|
if (machine != null)
|
||||||
machineName = machine.GetName();
|
machineName = machine.GetName();
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@ namespace SabreTools.DatTools
|
|||||||
public static BaseFile ConvertToBaseFile(this Rom rom)
|
public static BaseFile ConvertToBaseFile(this Rom rom)
|
||||||
{
|
{
|
||||||
string? machineName = null;
|
string? machineName = null;
|
||||||
var machine = rom.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = rom.GetMachine();
|
||||||
if (machine != null)
|
if (machine != null)
|
||||||
machineName = machine.GetName();
|
machineName = machine.GetName();
|
||||||
|
|
||||||
|
|||||||
@@ -488,7 +488,7 @@ namespace SabreTools.DatTools
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (item.GetFieldValue<Source?>(DatItem.SourceKey) != null)
|
if (item.GetFieldValue<Source?>(DatItem.SourceKey) != null)
|
||||||
newrom.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(newrom.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName() + $" ({Path.GetFileNameWithoutExtension(inputs[item.GetFieldValue<Source?>(DatItem.SourceKey)!.Index].CurrentPath)})");
|
newrom.GetMachine()!.SetName(newrom.GetMachine()!.GetName() + $" ({Path.GetFileNameWithoutExtension(inputs[item.GetFieldValue<Source?>(DatItem.SourceKey)!.Index].CurrentPath)})");
|
||||||
|
|
||||||
dupeData.AddItem(newrom, statsOnly: false);
|
dupeData.AddItem(newrom, statsOnly: false);
|
||||||
}
|
}
|
||||||
@@ -887,7 +887,7 @@ namespace SabreTools.DatTools
|
|||||||
if (item.Clone() is not DatItem newrom || newrom.GetFieldValue<Source?>(DatItem.SourceKey) == null)
|
if (item.Clone() is not DatItem newrom || newrom.GetFieldValue<Source?>(DatItem.SourceKey) == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
newrom.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(newrom.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName() + $" ({Path.GetFileNameWithoutExtension(inputs[newrom.GetFieldValue<Source?>(DatItem.SourceKey)!.Index].CurrentPath)})");
|
newrom.GetMachine()!.SetName(newrom.GetMachine()!.GetName() + $" ({Path.GetFileNameWithoutExtension(inputs[newrom.GetFieldValue<Source?>(DatItem.SourceKey)!.Index].CurrentPath)})");
|
||||||
outerDiffData.AddItem(newrom, statsOnly: false);
|
outerDiffData.AddItem(newrom, statsOnly: false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ namespace SabreTools.DatTools
|
|||||||
// Loop through and set the fields accordingly
|
// Loop through and set the fields accordingly
|
||||||
foreach (var datItem in datItems)
|
foreach (var datItem in datItems)
|
||||||
{
|
{
|
||||||
setter.SetFields(datItem.GetFieldValue<Machine>(DatItem.MachineKey));
|
setter.SetFields(datItem.GetMachine());
|
||||||
setter.SetFields(datItem);
|
setter.SetFields(datItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ namespace SabreTools.DatTools
|
|||||||
|
|
||||||
filename = filename.Remove(0, rootpath.Length);
|
filename = filename.Remove(0, rootpath.Length);
|
||||||
|
|
||||||
var machine = newItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = newItem.GetMachine();
|
||||||
if (machine == null)
|
if (machine == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@@ -457,7 +457,7 @@ namespace SabreTools.DatTools
|
|||||||
foreach (DatItem item in dupes)
|
foreach (DatItem item in dupes)
|
||||||
{
|
{
|
||||||
// If we don't have a proper machine
|
// If we don't have a proper machine
|
||||||
var machine = item.GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = item.GetMachine();
|
||||||
if (machine?.GetName() == null)
|
if (machine?.GetName() == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -575,14 +575,14 @@ namespace SabreTools.DatTools
|
|||||||
// Get the item from the current file
|
// Get the item from the current file
|
||||||
HashType[] hashes = [HashType.CRC32, HashType.MD5, HashType.SHA1];
|
HashType[] hashes = [HashType.CRC32, HashType.MD5, HashType.SHA1];
|
||||||
Rom item = FileTypeTool.GetInfo(stream, hashes).ConvertToRom();
|
Rom item = FileTypeTool.GetInfo(stream, hashes).ConvertToRom();
|
||||||
item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, Path.GetFileNameWithoutExtension(item.GetName()));
|
item.GetMachine()!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, Path.GetFileNameWithoutExtension(item.GetName()));
|
||||||
item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(Path.GetFileNameWithoutExtension(item.GetName()));
|
item.GetMachine()!.SetName(Path.GetFileNameWithoutExtension(item.GetName()));
|
||||||
|
|
||||||
// If we are coming from an archive, set the correct machine name
|
// If we are coming from an archive, set the correct machine name
|
||||||
if (machinename != null)
|
if (machinename != null)
|
||||||
{
|
{
|
||||||
item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, machinename);
|
item.GetMachine()!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, machinename);
|
||||||
item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(machinename);
|
item.GetMachine()!.SetName(machinename);
|
||||||
}
|
}
|
||||||
|
|
||||||
dupes.Add(item);
|
dupes.Add(item);
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ namespace SabreTools.DatTools
|
|||||||
for (int j = 0; j < items.Count; j++)
|
for (int j = 0; j < items.Count; j++)
|
||||||
{
|
{
|
||||||
// Handle machine removals
|
// Handle machine removals
|
||||||
var machine = items[j].GetFieldValue<Machine>(DatItem.MachineKey);
|
var machine = items[j].GetMachine();
|
||||||
RemoveFields(machine);
|
RemoveFields(machine);
|
||||||
|
|
||||||
// Handle item removals
|
// Handle item removals
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ namespace SabreTools.DatTools
|
|||||||
|
|
||||||
var list = datFile.GetItemsForBucket(key);
|
var list = datFile.GetItemsForBucket(key);
|
||||||
if (list.Count > 0)
|
if (list.Count > 0)
|
||||||
ReplaceFields(newDatItem.GetFieldValue<Machine>(DatItem.MachineKey)!, list[index: 0].GetFieldValue<Machine>(DatItem.MachineKey)!, machineFieldNames, onlySame);
|
ReplaceFields(newDatItem.GetMachine()!, list[index: 0].GetMachine()!, machineFieldNames, onlySame);
|
||||||
|
|
||||||
newDatItems.Add(newDatItem);
|
newDatItems.Add(newDatItem);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -172,8 +172,8 @@ namespace SabreTools.DatTools
|
|||||||
#region Common
|
#region Common
|
||||||
|
|
||||||
// Handle Machine fields
|
// Handle Machine fields
|
||||||
if (MachineFieldMappings.Count > 0 && datItem.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
if (MachineFieldMappings.Count > 0 && datItem.GetMachine() != null)
|
||||||
SetFields(datItem.GetFieldValue<Machine>(DatItem.MachineKey)!);
|
SetFields(datItem.GetMachine()!);
|
||||||
|
|
||||||
// If there are no field names, return
|
// If there are no field names, return
|
||||||
if (ItemFieldMappings == null || ItemFieldMappings.Count == 0)
|
if (ItemFieldMappings == null || ItemFieldMappings.Count == 0)
|
||||||
|
|||||||
@@ -526,8 +526,8 @@ namespace SabreTools.DatTools
|
|||||||
#else
|
#else
|
||||||
continue;
|
continue;
|
||||||
#endif
|
#endif
|
||||||
items.ForEach(item => item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetName(Path.GetFileName(item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetName())));
|
items.ForEach(item => item.GetMachine()!.SetName(Path.GetFileName(item.GetMachine()!.GetName())));
|
||||||
items.ForEach(item => item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, Path.GetFileName(item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey))));
|
items.ForEach(item => item.GetMachine()!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, Path.GetFileName(item.GetMachine()!.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey))));
|
||||||
|
|
||||||
// Now add the game to the output DAT
|
// Now add the game to the output DAT
|
||||||
items.ForEach(item => tempDat.AddItem(item, statsOnly: false));
|
items.ForEach(item => tempDat.AddItem(item, statsOnly: false));
|
||||||
|
|||||||
Reference in New Issue
Block a user