mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Fix issues found during testing
This commit is contained in:
@@ -102,7 +102,7 @@ namespace SabreTools.DatItems
|
||||
/// </summary>
|
||||
/// <remarks>Hack on top of internal model</remarks>
|
||||
[JsonIgnore, XmlIgnore]
|
||||
public Machine? Machine
|
||||
public Machine Machine
|
||||
{
|
||||
get => _internal.Read<Machine>("MACHINE") ?? new Machine();
|
||||
set => _internal["MACHINE"] = value;
|
||||
@@ -180,6 +180,8 @@ namespace SabreTools.DatItems
|
||||
public DatItem()
|
||||
{
|
||||
_internal = new Models.Internal.Blank();
|
||||
Machine = new Machine();
|
||||
|
||||
logger = new Logger(this);
|
||||
}
|
||||
|
||||
@@ -277,7 +279,9 @@ namespace SabreTools.DatItems
|
||||
if (item?.Machine == null)
|
||||
return;
|
||||
|
||||
Machine = item.Machine.Clone() as Machine;
|
||||
var cloned = item.Machine.Clone() as Machine;
|
||||
if (cloned != null)
|
||||
Machine = cloned;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -289,7 +293,9 @@ namespace SabreTools.DatItems
|
||||
if (machine == null)
|
||||
return;
|
||||
|
||||
Machine = machine.Clone() as Machine;
|
||||
var cloned = machine.Clone() as Machine;
|
||||
if (cloned != null)
|
||||
Machine = cloned;
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -343,7 +349,7 @@ namespace SabreTools.DatItems
|
||||
// If the duplicate is external already or should be, set it
|
||||
if (lastItem.DupeType.HasFlag(DupeType.External) || lastItem?.Source?.Index != Source?.Index)
|
||||
{
|
||||
if (lastItem?.Machine?.Name == Machine?.Name && lastItem?.GetName() == GetName())
|
||||
if (lastItem?.Machine.Name == Machine?.Name && lastItem?.GetName() == GetName())
|
||||
output = DupeType.External | DupeType.All;
|
||||
else
|
||||
output = DupeType.External | DupeType.Hash;
|
||||
@@ -352,7 +358,7 @@ namespace SabreTools.DatItems
|
||||
// Otherwise, it's considered an internal dupe
|
||||
else
|
||||
{
|
||||
if (lastItem?.Machine?.Name == Machine?.Name && lastItem?.GetName() == GetName())
|
||||
if (lastItem?.Machine.Name == Machine?.Name && lastItem?.GetName() == GetName())
|
||||
output = DupeType.Internal | DupeType.All;
|
||||
else
|
||||
output = DupeType.Internal | DupeType.Hash;
|
||||
@@ -526,7 +532,7 @@ namespace SabreTools.DatItems
|
||||
}
|
||||
|
||||
// If the current machine is a child of the new machine, use the new machine instead
|
||||
if (saveditem.Machine?.CloneOf == file.Machine?.Name || saveditem.Machine?.RomOf == file.Machine?.Name)
|
||||
if (saveditem.Machine.CloneOf == file.Machine.Name || saveditem.Machine.RomOf == file.Machine.Name)
|
||||
{
|
||||
saveditem.CopyMachineInformation(file);
|
||||
saveditem.SetName(file.GetName());
|
||||
@@ -673,7 +679,7 @@ namespace SabreTools.DatItems
|
||||
NaturalComparer nc = new();
|
||||
|
||||
// If machine names match, more refinement is needed
|
||||
if (x.Machine?.Name == y.Machine?.Name)
|
||||
if (x.Machine.Name == y.Machine.Name)
|
||||
{
|
||||
// If item types match, more refinement is needed
|
||||
if (x.ItemType == y.ItemType)
|
||||
@@ -689,7 +695,7 @@ namespace SabreTools.DatItems
|
||||
|
||||
// If item names match, then compare on machine or source, depending on the flag
|
||||
if (xName == yName)
|
||||
return (norename ? nc.Compare(x.Machine?.Name, y.Machine?.Name) : (x.Source?.Index - y.Source?.Index) ?? 0);
|
||||
return (norename ? nc.Compare(x.Machine.Name, y.Machine.Name) : (x.Source?.Index - y.Source?.Index) ?? 0);
|
||||
|
||||
// Otherwise, just sort based on item names
|
||||
return nc.Compare(xName, yName);
|
||||
@@ -704,7 +710,7 @@ namespace SabreTools.DatItems
|
||||
}
|
||||
|
||||
// Otherwise, just sort based on machine name
|
||||
return nc.Compare(x.Machine?.Name, y.Machine?.Name);
|
||||
return nc.Compare(x.Machine.Name, y.Machine.Name);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user