mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[DatFile, DatItem] Proper cloning of machines to avoid dupe issues
This commit is contained in:
@@ -28,7 +28,7 @@ namespace SabreTools.Library.Dats
|
|||||||
Type = this.Type,
|
Type = this.Type,
|
||||||
Dupe = this.Dupe,
|
Dupe = this.Dupe,
|
||||||
|
|
||||||
Machine = this.Machine,
|
Machine = (Machine)this.Machine.Clone(),
|
||||||
|
|
||||||
Supported = this.Supported,
|
Supported = this.Supported,
|
||||||
Publisher = this.Publisher,
|
Publisher = this.Publisher,
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace SabreTools.Library.Dats
|
|||||||
Type = this.Type,
|
Type = this.Type,
|
||||||
Dupe = this.Dupe,
|
Dupe = this.Dupe,
|
||||||
|
|
||||||
Machine = this.Machine,
|
Machine = (Machine)this.Machine.Clone(),
|
||||||
|
|
||||||
Supported = this.Supported,
|
Supported = this.Supported,
|
||||||
Publisher = this.Publisher,
|
Publisher = this.Publisher,
|
||||||
|
|||||||
@@ -609,7 +609,7 @@ namespace SabreTools.Library.Dats
|
|||||||
{
|
{
|
||||||
saveditem.SystemID = file.SystemID;
|
saveditem.SystemID = file.SystemID;
|
||||||
saveditem.System = file.System;
|
saveditem.System = file.System;
|
||||||
saveditem.Machine = file.Machine;
|
saveditem.Machine = (Machine)file.Machine.Clone();
|
||||||
saveditem.Name = file.Name;
|
saveditem.Name = file.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -618,7 +618,7 @@ namespace SabreTools.Library.Dats
|
|||||||
{
|
{
|
||||||
saveditem.SourceID = file.SourceID;
|
saveditem.SourceID = file.SourceID;
|
||||||
saveditem.Source = file.Source;
|
saveditem.Source = file.Source;
|
||||||
saveditem.Machine = file.Machine;
|
saveditem.Machine = (Machine)file.Machine.Clone();
|
||||||
saveditem.Name = file.Name;
|
saveditem.Name = file.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ namespace SabreTools.Library.Dats
|
|||||||
Type = this.Type,
|
Type = this.Type,
|
||||||
Dupe = this.Dupe,
|
Dupe = this.Dupe,
|
||||||
|
|
||||||
Machine = this.Machine,
|
Machine = (Machine)this.Machine.Clone(),
|
||||||
|
|
||||||
Supported = this.Supported,
|
Supported = this.Supported,
|
||||||
Publisher = this.Publisher,
|
Publisher = this.Publisher,
|
||||||
|
|||||||
@@ -546,7 +546,7 @@ namespace SabreTools.Library.Dats
|
|||||||
{
|
{
|
||||||
case ItemType.Archive:
|
case ItemType.Archive:
|
||||||
Archive archive = ((Archive)item).Clone() as Archive;
|
Archive archive = ((Archive)item).Clone() as Archive;
|
||||||
archive.Machine = currentMachine;
|
archive.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == archive.Name).Count() == 0 && !this[game].Contains(archive))
|
if (this[game].Where(i => i.Name == archive.Name).Count() == 0 && !this[game].Contains(archive))
|
||||||
{
|
{
|
||||||
Add(game, archive);
|
Add(game, archive);
|
||||||
@@ -555,7 +555,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.BiosSet:
|
case ItemType.BiosSet:
|
||||||
BiosSet biosSet = ((BiosSet)item).Clone() as BiosSet;
|
BiosSet biosSet = ((BiosSet)item).Clone() as BiosSet;
|
||||||
biosSet.Machine = currentMachine;
|
biosSet.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == biosSet.Name).Count() == 0 && !this[game].Contains(biosSet))
|
if (this[game].Where(i => i.Name == biosSet.Name).Count() == 0 && !this[game].Contains(biosSet))
|
||||||
{
|
{
|
||||||
Add(game, biosSet);
|
Add(game, biosSet);
|
||||||
@@ -564,7 +564,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Disk:
|
case ItemType.Disk:
|
||||||
Disk disk = ((Disk)item).Clone() as Disk;
|
Disk disk = ((Disk)item).Clone() as Disk;
|
||||||
disk.Machine = currentMachine;
|
disk.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == disk.Name).Count() == 0 && !this[game].Contains(disk))
|
if (this[game].Where(i => i.Name == disk.Name).Count() == 0 && !this[game].Contains(disk))
|
||||||
{
|
{
|
||||||
Add(game, disk);
|
Add(game, disk);
|
||||||
@@ -573,7 +573,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Release:
|
case ItemType.Release:
|
||||||
Release release = ((Release)item).Clone() as Release;
|
Release release = ((Release)item).Clone() as Release;
|
||||||
release.Machine = currentMachine;
|
release.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == release.Name).Count() == 0 && !this[game].Contains(release))
|
if (this[game].Where(i => i.Name == release.Name).Count() == 0 && !this[game].Contains(release))
|
||||||
{
|
{
|
||||||
Add(game, release);
|
Add(game, release);
|
||||||
@@ -582,7 +582,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
Rom rom = ((Rom)item).Clone() as Rom;
|
Rom rom = ((Rom)item).Clone() as Rom;
|
||||||
rom.Machine = currentMachine;
|
rom.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == rom.Name).Count() == 0 && !this[game].Contains(rom))
|
if (this[game].Where(i => i.Name == rom.Name).Count() == 0 && !this[game].Contains(rom))
|
||||||
{
|
{
|
||||||
Add(game, rom);
|
Add(game, rom);
|
||||||
@@ -591,7 +591,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Sample:
|
case ItemType.Sample:
|
||||||
Sample sample = ((Sample)item).Clone() as Sample;
|
Sample sample = ((Sample)item).Clone() as Sample;
|
||||||
sample.Machine = currentMachine;
|
sample.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == sample.Name).Count() == 0 && !this[game].Contains(sample))
|
if (this[game].Where(i => i.Name == sample.Name).Count() == 0 && !this[game].Contains(sample))
|
||||||
{
|
{
|
||||||
Add(game, sample);
|
Add(game, sample);
|
||||||
@@ -637,7 +637,7 @@ namespace SabreTools.Library.Dats
|
|||||||
{
|
{
|
||||||
case ItemType.Archive:
|
case ItemType.Archive:
|
||||||
Archive archive = ((Archive)item).Clone() as Archive;
|
Archive archive = ((Archive)item).Clone() as Archive;
|
||||||
archive.Machine = musheen;
|
archive.Machine = (Machine)musheen.Clone();
|
||||||
if (this[game].Where(i => i.Name == archive.Name).Count() == 0 && !this[game].Contains(archive))
|
if (this[game].Where(i => i.Name == archive.Name).Count() == 0 && !this[game].Contains(archive))
|
||||||
{
|
{
|
||||||
Add(game, archive);
|
Add(game, archive);
|
||||||
@@ -646,7 +646,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.BiosSet:
|
case ItemType.BiosSet:
|
||||||
BiosSet biosSet = ((BiosSet)item).Clone() as BiosSet;
|
BiosSet biosSet = ((BiosSet)item).Clone() as BiosSet;
|
||||||
biosSet.Machine = musheen;
|
biosSet.Machine = (Machine)musheen.Clone();
|
||||||
if (this[game].Where(i => i.Name == biosSet.Name).Count() == 0 && !this[game].Contains(biosSet))
|
if (this[game].Where(i => i.Name == biosSet.Name).Count() == 0 && !this[game].Contains(biosSet))
|
||||||
{
|
{
|
||||||
Add(game, biosSet);
|
Add(game, biosSet);
|
||||||
@@ -655,7 +655,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Disk:
|
case ItemType.Disk:
|
||||||
Disk disk = ((Disk)item).Clone() as Disk;
|
Disk disk = ((Disk)item).Clone() as Disk;
|
||||||
disk.Machine = musheen;
|
disk.Machine = (Machine)musheen.Clone();
|
||||||
if (this[game].Where(i => i.Name == disk.Name).Count() == 0 && !this[game].Contains(disk))
|
if (this[game].Where(i => i.Name == disk.Name).Count() == 0 && !this[game].Contains(disk))
|
||||||
{
|
{
|
||||||
Add(game, disk);
|
Add(game, disk);
|
||||||
@@ -664,7 +664,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Release:
|
case ItemType.Release:
|
||||||
Release release = ((Release)item).Clone() as Release;
|
Release release = ((Release)item).Clone() as Release;
|
||||||
release.Machine = musheen;
|
release.Machine = (Machine)musheen.Clone();
|
||||||
if (this[game].Where(i => i.Name == release.Name).Count() == 0 && !this[game].Contains(release))
|
if (this[game].Where(i => i.Name == release.Name).Count() == 0 && !this[game].Contains(release))
|
||||||
{
|
{
|
||||||
Add(game, release);
|
Add(game, release);
|
||||||
@@ -673,7 +673,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
Rom rom = ((Rom)item).Clone() as Rom;
|
Rom rom = ((Rom)item).Clone() as Rom;
|
||||||
rom.Machine = musheen;
|
rom.Machine = (Machine)musheen.Clone();
|
||||||
if (this[game].Where(i => i.Name == rom.Name).Count() == 0 && !this[game].Contains(rom))
|
if (this[game].Where(i => i.Name == rom.Name).Count() == 0 && !this[game].Contains(rom))
|
||||||
{
|
{
|
||||||
Add(game, rom);
|
Add(game, rom);
|
||||||
@@ -682,7 +682,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Sample:
|
case ItemType.Sample:
|
||||||
Sample sample = ((Sample)item).Clone() as Sample;
|
Sample sample = ((Sample)item).Clone() as Sample;
|
||||||
sample.Machine = musheen;
|
sample.Machine = (Machine)musheen.Clone();
|
||||||
if (this[game].Where(i => i.Name == sample.Name).Count() == 0 && !this[game].Contains(sample))
|
if (this[game].Where(i => i.Name == sample.Name).Count() == 0 && !this[game].Contains(sample))
|
||||||
{
|
{
|
||||||
Add(game, sample);
|
Add(game, sample);
|
||||||
@@ -738,7 +738,7 @@ namespace SabreTools.Library.Dats
|
|||||||
{
|
{
|
||||||
case ItemType.Archive:
|
case ItemType.Archive:
|
||||||
Archive archive = ((Archive)item).Clone() as Archive;
|
Archive archive = ((Archive)item).Clone() as Archive;
|
||||||
archive.Machine = currentMachine;
|
archive.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == archive.Name).Count() == 0 && !this[game].Contains(archive))
|
if (this[game].Where(i => i.Name == archive.Name).Count() == 0 && !this[game].Contains(archive))
|
||||||
{
|
{
|
||||||
Add(game, archive);
|
Add(game, archive);
|
||||||
@@ -747,7 +747,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.BiosSet:
|
case ItemType.BiosSet:
|
||||||
BiosSet biosSet = ((BiosSet)item).Clone() as BiosSet;
|
BiosSet biosSet = ((BiosSet)item).Clone() as BiosSet;
|
||||||
biosSet.Machine = currentMachine;
|
biosSet.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == biosSet.Name).Count() == 0 && !this[game].Contains(biosSet))
|
if (this[game].Where(i => i.Name == biosSet.Name).Count() == 0 && !this[game].Contains(biosSet))
|
||||||
{
|
{
|
||||||
Add(game, biosSet);
|
Add(game, biosSet);
|
||||||
@@ -756,7 +756,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Disk:
|
case ItemType.Disk:
|
||||||
Disk disk = ((Disk)item).Clone() as Disk;
|
Disk disk = ((Disk)item).Clone() as Disk;
|
||||||
disk.Machine = currentMachine;
|
disk.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == disk.Name).Count() == 0 && !this[game].Contains(disk))
|
if (this[game].Where(i => i.Name == disk.Name).Count() == 0 && !this[game].Contains(disk))
|
||||||
{
|
{
|
||||||
Add(game, disk);
|
Add(game, disk);
|
||||||
@@ -765,7 +765,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Release:
|
case ItemType.Release:
|
||||||
Release release = ((Release)item).Clone() as Release;
|
Release release = ((Release)item).Clone() as Release;
|
||||||
release.Machine = currentMachine;
|
release.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == release.Name).Count() == 0 && !this[game].Contains(release))
|
if (this[game].Where(i => i.Name == release.Name).Count() == 0 && !this[game].Contains(release))
|
||||||
{
|
{
|
||||||
Add(game, release);
|
Add(game, release);
|
||||||
@@ -774,7 +774,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
Rom rom = ((Rom)item).Clone() as Rom;
|
Rom rom = ((Rom)item).Clone() as Rom;
|
||||||
rom.Machine = currentMachine;
|
rom.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == rom.Name).Count() == 0 && !this[game].Contains(rom))
|
if (this[game].Where(i => i.Name == rom.Name).Count() == 0 && !this[game].Contains(rom))
|
||||||
{
|
{
|
||||||
Add(game, rom);
|
Add(game, rom);
|
||||||
@@ -783,7 +783,7 @@ namespace SabreTools.Library.Dats
|
|||||||
break;
|
break;
|
||||||
case ItemType.Sample:
|
case ItemType.Sample:
|
||||||
Sample sample = ((Sample)item).Clone() as Sample;
|
Sample sample = ((Sample)item).Clone() as Sample;
|
||||||
sample.Machine = currentMachine;
|
sample.Machine = (Machine)currentMachine.Clone();
|
||||||
if (this[game].Where(i => i.Name == sample.Name).Count() == 0 && !this[game].Contains(sample))
|
if (this[game].Where(i => i.Name == sample.Name).Count() == 0 && !this[game].Contains(sample))
|
||||||
{
|
{
|
||||||
Add(game, sample);
|
Add(game, sample);
|
||||||
@@ -832,7 +832,7 @@ namespace SabreTools.Library.Dats
|
|||||||
// If the disk doesn't have a valid merge tag OR the merged file doesn't exist in the parent, then add it
|
// If the disk doesn't have a valid merge tag OR the merged file doesn't exist in the parent, then add it
|
||||||
if (item.Type == ItemType.Disk && (item.MergeTag == null || !this[parent].Select(i => i.Name).Contains(item.MergeTag)))
|
if (item.Type == ItemType.Disk && (item.MergeTag == null || !this[parent].Select(i => i.Name).Contains(item.MergeTag)))
|
||||||
{
|
{
|
||||||
item.Machine = parentMachine;
|
item.Machine = (Machine)parentMachine.Clone();
|
||||||
Add(parent, item);
|
Add(parent, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -843,7 +843,7 @@ namespace SabreTools.Library.Dats
|
|||||||
item.Name = item.Machine.Name + "\\" + item.Name;
|
item.Name = item.Machine.Name + "\\" + item.Name;
|
||||||
|
|
||||||
// Update the machine to be the new parent
|
// Update the machine to be the new parent
|
||||||
item.Machine = parentMachine;
|
item.Machine = (Machine)parentMachine.Clone();
|
||||||
|
|
||||||
// Add the rom to the parent set
|
// Add the rom to the parent set
|
||||||
Add(parent, item);
|
Add(parent, item);
|
||||||
|
|||||||
@@ -2761,7 +2761,7 @@ namespace SabreTools.Library.Dats
|
|||||||
SHA512 = xtr.GetAttribute("sha512")?.ToLowerInvariant(),
|
SHA512 = xtr.GetAttribute("sha512")?.ToLowerInvariant(),
|
||||||
ItemStatus = its,
|
ItemStatus = its,
|
||||||
|
|
||||||
Machine = dir,
|
Machine = (Machine)dir.Clone(),
|
||||||
|
|
||||||
SystemID = sysid,
|
SystemID = sysid,
|
||||||
System = filename,
|
System = filename,
|
||||||
@@ -2783,7 +2783,7 @@ namespace SabreTools.Library.Dats
|
|||||||
ItemStatus = its,
|
ItemStatus = its,
|
||||||
Date = date,
|
Date = date,
|
||||||
|
|
||||||
Machine = dir,
|
Machine = (Machine)dir.Clone(),
|
||||||
|
|
||||||
SystemID = sysid,
|
SystemID = sysid,
|
||||||
System = filename,
|
System = filename,
|
||||||
|
|||||||
@@ -777,7 +777,7 @@ namespace SabreTools.Library.Dats
|
|||||||
foreach (Rom item in dupes)
|
foreach (Rom item in dupes)
|
||||||
{
|
{
|
||||||
// Create a headered item to use as well
|
// Create a headered item to use as well
|
||||||
rom.Machine = item.Machine;
|
rom.Machine = (Machine)item.Machine.Clone();
|
||||||
rom.Name += "_" + rom.CRC;
|
rom.Name += "_" + rom.CRC;
|
||||||
|
|
||||||
// If either copy succeeds, then we want to set rebuilt to true
|
// If either copy succeeds, then we want to set rebuilt to true
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace SabreTools.Library.Dats
|
|||||||
Type = this.Type,
|
Type = this.Type,
|
||||||
Dupe = this.Dupe,
|
Dupe = this.Dupe,
|
||||||
|
|
||||||
Machine = this.Machine,
|
Machine = (Machine)this.Machine.Clone(),
|
||||||
|
|
||||||
Supported = this.Supported,
|
Supported = this.Supported,
|
||||||
Publisher = this.Publisher,
|
Publisher = this.Publisher,
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ namespace SabreTools.Library.Dats
|
|||||||
Type = this.Type,
|
Type = this.Type,
|
||||||
Dupe = this.Dupe,
|
Dupe = this.Dupe,
|
||||||
|
|
||||||
Machine = this.Machine,
|
Machine = (Machine)this.Machine.Clone(),
|
||||||
|
|
||||||
Supported = this.Supported,
|
Supported = this.Supported,
|
||||||
Publisher = this.Publisher,
|
Publisher = this.Publisher,
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace SabreTools.Library.Dats
|
|||||||
Type = this.Type,
|
Type = this.Type,
|
||||||
Dupe = this.Dupe,
|
Dupe = this.Dupe,
|
||||||
|
|
||||||
Machine = this.Machine,
|
Machine = (Machine)this.Machine.Clone(),
|
||||||
|
|
||||||
Supported = this.Supported,
|
Supported = this.Supported,
|
||||||
Publisher = this.Publisher,
|
Publisher = this.Publisher,
|
||||||
|
|||||||
Reference in New Issue
Block a user