mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Make GetDuplicateStatus easier to follow
This commit is contained in:
@@ -194,33 +194,39 @@ namespace SabreTools.DatItems
|
|||||||
if (!Equals(lastItem))
|
if (!Equals(lastItem))
|
||||||
return output;
|
return output;
|
||||||
|
|
||||||
// If the duplicate is external already or should be, set it
|
// Get the sources for comparison
|
||||||
|
var selfSource = GetFieldValue<Source?>(DatItem.SourceKey);
|
||||||
|
var lastSource = lastItem.GetFieldValue<Source?>(DatItem.SourceKey);
|
||||||
|
|
||||||
|
// Get the machines for comparison
|
||||||
|
var selfMachine = GetFieldValue<Machine>(DatItem.MachineKey);
|
||||||
|
string? selfMachineName = selfMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey);
|
||||||
|
var lastMachine = lastItem.GetFieldValue<Machine>(DatItem.MachineKey);
|
||||||
|
string? lastMachineName = lastMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey);
|
||||||
|
|
||||||
|
// 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>(DatItem.DupeTypeKey) & DupeType.External) != 0)
|
||||||
|| lastItem?.GetFieldValue<Source?>(DatItem.SourceKey)?.Index != GetFieldValue<Source?>(DatItem.SourceKey)?.Index)
|
|
||||||
#else
|
#else
|
||||||
if (lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.External)
|
if (lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.External))
|
||||||
|| lastItem?.GetFieldValue<Source?>(DatItem.SourceKey)?.Index != GetFieldValue<Source?>(DatItem.SourceKey)?.Index)
|
|
||||||
#endif
|
#endif
|
||||||
{
|
output |= DupeType.External;
|
||||||
var currentMachine = GetFieldValue<Machine>(DatItem.MachineKey);
|
|
||||||
var lastMachine = lastItem?.GetFieldValue<Machine>(DatItem.MachineKey);
|
// If the duplicate should be external
|
||||||
if (lastMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) == currentMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) && lastItem?.GetName() == GetName())
|
else if (lastSource?.Index != selfSource?.Index)
|
||||||
output = DupeType.External | DupeType.All;
|
output |= DupeType.External;
|
||||||
else
|
|
||||||
output = DupeType.External | DupeType.Hash;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Otherwise, it's considered an internal dupe
|
// Otherwise, it's considered an internal dupe
|
||||||
else
|
else
|
||||||
{
|
output |= DupeType.Internal;
|
||||||
var currentMachine = GetFieldValue<Machine>(DatItem.MachineKey);
|
|
||||||
var lastMachine = lastItem?.GetFieldValue<Machine>(DatItem.MachineKey);
|
// If the item and machine names match
|
||||||
if (lastMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) == currentMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) && lastItem?.GetName() == GetName())
|
if (lastMachineName == selfMachineName && lastItem.GetName() == GetName())
|
||||||
output = DupeType.Internal | DupeType.All;
|
output = DupeType.Internal | DupeType.All;
|
||||||
|
|
||||||
|
// Otherwise, hash match is assumed
|
||||||
else
|
else
|
||||||
output = DupeType.Internal | DupeType.Hash;
|
output = DupeType.Internal | DupeType.Hash;
|
||||||
}
|
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user