Migrate unoffical keys

This commit is contained in:
Matt Nadareski
2024-03-10 16:49:07 -04:00
parent 7d974d4464
commit e411d90822
91 changed files with 1045 additions and 1472 deletions

View File

@@ -42,10 +42,10 @@ namespace SabreTools.DatItems.Formats
public Adjuster()
{
_internal = new Models.Metadata.Adjuster();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Adjuster;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Adjuster);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -54,9 +54,9 @@ namespace SabreTools.DatItems.Formats
public Adjuster(Models.Metadata.Adjuster? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Adjuster;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Adjuster);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -68,13 +68,6 @@ namespace SabreTools.DatItems.Formats
{
return new Adjuster()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Adjuster ?? [],
};
}

View File

@@ -18,9 +18,9 @@ namespace SabreTools.DatItems.Formats
public Analog()
{
_internal = new Models.Metadata.Analog();
Machine = new Machine();
ItemType = ItemType.Analog;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Analog);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -29,9 +29,9 @@ namespace SabreTools.DatItems.Formats
public Analog(Models.Metadata.Analog? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Analog;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Analog);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -43,13 +43,6 @@ namespace SabreTools.DatItems.Formats
{
return new Analog()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Analog ?? [],
};
}

View File

@@ -97,10 +97,10 @@ namespace SabreTools.DatItems.Formats
public Archive()
{
_internal = new Models.Metadata.Archive();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Archive;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Archive);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -109,9 +109,9 @@ namespace SabreTools.DatItems.Formats
public Archive(Models.Metadata.Archive? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Archive;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Archive);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -123,13 +123,6 @@ namespace SabreTools.DatItems.Formats
{
return new Archive()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Archive ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public BiosSet()
{
_internal = new Models.Metadata.BiosSet();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.BiosSet;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.BiosSet);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public BiosSet(Models.Metadata.BiosSet? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.BiosSet;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.BiosSet);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new BiosSet()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.BiosSet ?? [],
};
}

View File

@@ -17,7 +17,7 @@ namespace SabreTools.DatItems.Formats
/// </summary>
public Blank()
{
ItemType = ItemType.Blank;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Blank);
}
#endregion
@@ -27,15 +27,13 @@ namespace SabreTools.DatItems.Formats
/// <inheritdoc/>
public override object Clone()
{
return new Blank()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
var blank = new Blank();
blank.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
blank.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
blank.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
blank.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
};
return blank;
}
#endregion
@@ -46,14 +44,14 @@ namespace SabreTools.DatItems.Formats
public override bool Equals(DatItem? other)
{
// If we don't have a blank, return false
if (ItemType != other?.ItemType)
if (GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey) != other?.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey))
return false;
// Otherwise, treat it as a Blank
Blank? newOther = other as Blank;
// If the archive information matches
return (Machine == newOther!.Machine);
return GetFieldValue<Machine>(DatItem.MachineKey) == newOther!.GetFieldValue<Machine>(DatItem.MachineKey);
}
#endregion

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public Chip()
{
_internal = new Models.Metadata.Chip();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Chip;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Chip);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public Chip(Models.Metadata.Chip? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Chip;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Chip);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new Chip()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Chip ?? [],
};
}

View File

@@ -18,9 +18,9 @@ namespace SabreTools.DatItems.Formats
public Condition()
{
_internal = new Models.Metadata.Condition();
Machine = new Machine();
ItemType = ItemType.Condition;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Condition);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -29,9 +29,9 @@ namespace SabreTools.DatItems.Formats
public Condition(Models.Metadata.Condition? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Condition;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Condition);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -43,13 +43,6 @@ namespace SabreTools.DatItems.Formats
{
return new Condition()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Condition ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public ConfLocation()
{
_internal = new Models.Metadata.ConfLocation();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.ConfLocation;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.ConfLocation);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public ConfLocation(Models.Metadata.ConfLocation? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.ConfLocation;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.ConfLocation);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new ConfLocation()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.ConfLocation ?? [],
};
}

View File

@@ -42,10 +42,10 @@ namespace SabreTools.DatItems.Formats
public ConfSetting()
{
_internal = new Models.Metadata.ConfSetting();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.ConfSetting;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.ConfSetting);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -54,9 +54,9 @@ namespace SabreTools.DatItems.Formats
public ConfSetting(Models.Metadata.ConfSetting? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.ConfSetting;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.ConfSetting);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -68,13 +68,6 @@ namespace SabreTools.DatItems.Formats
{
return new ConfSetting()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.ConfSetting ?? [],
};
}

View File

@@ -62,10 +62,10 @@ namespace SabreTools.DatItems.Formats
public Configuration()
{
_internal = new Models.Metadata.Configuration();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Configuration;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Configuration);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -74,9 +74,9 @@ namespace SabreTools.DatItems.Formats
public Configuration(Models.Metadata.Configuration? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Configuration;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Configuration);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -88,13 +88,6 @@ namespace SabreTools.DatItems.Formats
{
return new Configuration()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Configuration ?? [],
};
}

View File

@@ -18,9 +18,9 @@ namespace SabreTools.DatItems.Formats
public Control()
{
_internal = new Models.Metadata.Control();
Machine = new Machine();
ItemType = ItemType.Control;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Control);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -29,9 +29,9 @@ namespace SabreTools.DatItems.Formats
public Control(Models.Metadata.Control? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Control;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Control);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -43,13 +43,6 @@ namespace SabreTools.DatItems.Formats
{
return new Control()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Control ?? [],
};
}

View File

@@ -29,10 +29,10 @@ namespace SabreTools.DatItems.Formats
public DataArea()
{
_internal = new Models.Metadata.DataArea();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.DataArea;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DataArea);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -41,9 +41,9 @@ namespace SabreTools.DatItems.Formats
public DataArea(Models.Metadata.DataArea? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.DataArea;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DataArea);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -55,13 +55,6 @@ namespace SabreTools.DatItems.Formats
{
return new DataArea()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.DataArea ?? [],
};
}

View File

@@ -42,9 +42,9 @@ namespace SabreTools.DatItems.Formats
public Device()
{
_internal = new Models.Metadata.Device();
Machine = new Machine();
ItemType = ItemType.Device;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Device);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -53,9 +53,9 @@ namespace SabreTools.DatItems.Formats
public Device(Models.Metadata.Device? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Device;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Device);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -67,13 +67,6 @@ namespace SabreTools.DatItems.Formats
{
return new Device()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Device ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public DeviceReference()
{
_internal = new Models.Metadata.DeviceRef();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.DeviceReference;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DeviceReference);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public DeviceReference(Models.Metadata.DeviceRef? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.DeviceReference;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DeviceReference);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new DeviceReference()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.DeviceRef ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public DipLocation()
{
_internal = new Models.Metadata.DipLocation();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.DipLocation;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipLocation);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public DipLocation(Models.Metadata.DipLocation? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.DipLocation;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipLocation);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new DipLocation()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.DipLocation ?? [],
};
}

View File

@@ -10,6 +10,15 @@ namespace SabreTools.DatItems.Formats
[JsonObject("dipswitch"), XmlRoot("dipswitch")]
public class DipSwitch : DatItem
{
#region Constants
/// <summary>
/// Non-standard key for inverted logic
/// </summary>
public const string PartKey = "PART";
#endregion
#region Fields
[JsonIgnore]
@@ -47,7 +56,7 @@ namespace SabreTools.DatItems.Formats
{
get
{
var part = GetFieldValue<Part?>("PART");
var part = GetFieldValue<Part?>(DipSwitch.PartKey);
return part != null
&& (!string.IsNullOrEmpty(part.GetName())
|| !string.IsNullOrEmpty(part.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey)));
@@ -74,10 +83,10 @@ namespace SabreTools.DatItems.Formats
public DipSwitch()
{
_internal = new Models.Metadata.DipSwitch();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.DipSwitch;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipSwitch);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -86,9 +95,9 @@ namespace SabreTools.DatItems.Formats
public DipSwitch(Models.Metadata.DipSwitch? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.DipSwitch;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipSwitch);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -100,13 +109,6 @@ namespace SabreTools.DatItems.Formats
{
return new DipSwitch()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.DipSwitch ?? [],
};
}

View File

@@ -42,10 +42,10 @@ namespace SabreTools.DatItems.Formats
public DipValue()
{
_internal = new Models.Metadata.DipValue();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.DipValue;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipValue);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -54,9 +54,9 @@ namespace SabreTools.DatItems.Formats
public DipValue(Models.Metadata.DipValue? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.DipValue;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DipValue);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -68,13 +68,6 @@ namespace SabreTools.DatItems.Formats
{
return new DipValue()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.DipValue ?? [],
};
}

View File

@@ -12,6 +12,20 @@ namespace SabreTools.DatItems.Formats
[JsonObject("disk"), XmlRoot("disk")]
public class Disk : DatItem
{
#region Constants
/// <summary>
/// Non-standard key for inverted logic
/// </summary>
public const string DiskAreaKey = "DISKAREA";
/// <summary>
/// Non-standard key for inverted logic
/// </summary>
public const string PartKey = "PART";
#endregion
#region Fields
[JsonIgnore]
@@ -19,7 +33,7 @@ namespace SabreTools.DatItems.Formats
{
get
{
var diskArea = GetFieldValue<DiskArea?>("DISKAREA");
var diskArea = GetFieldValue<DiskArea?>(Disk.DiskAreaKey);
return diskArea != null && !string.IsNullOrEmpty(diskArea.GetName());
}
}
@@ -29,7 +43,7 @@ namespace SabreTools.DatItems.Formats
{
get
{
var part = GetFieldValue<Part?>("PART");
var part = GetFieldValue<Part?>(Disk.PartKey);
return part != null
&& (!string.IsNullOrEmpty(part.GetName())
|| !string.IsNullOrEmpty(part.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey)));
@@ -56,11 +70,11 @@ namespace SabreTools.DatItems.Formats
public Disk()
{
_internal = new Models.Metadata.Disk();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Disk;
DupeType = 0x00;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Disk);
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
SetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey, ItemStatus.None);
}
@@ -70,14 +84,14 @@ namespace SabreTools.DatItems.Formats
public Disk(BaseFile baseFile)
{
_internal = new Models.Metadata.Disk();
Machine = new Machine();
SetName(baseFile.Filename);
SetFieldValue<string?>(Models.Metadata.Disk.MD5Key, TextHelper.ByteArrayToString(baseFile.MD5));
SetFieldValue<string?>(Models.Metadata.Disk.SHA1Key, TextHelper.ByteArrayToString(baseFile.SHA1));
ItemType = ItemType.Disk;
DupeType = 0x00;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Disk);
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
SetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey, ItemStatus.None);
}
@@ -87,9 +101,9 @@ namespace SabreTools.DatItems.Formats
public Disk(Models.Metadata.Disk? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Disk;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Disk);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -101,13 +115,6 @@ namespace SabreTools.DatItems.Formats
{
return new Disk()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Disk ?? [],
};
}
@@ -120,7 +127,7 @@ namespace SabreTools.DatItems.Formats
return new BaseFile()
{
Filename = this.GetName(),
Parent = this.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
MD5 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Disk.MD5Key)),
SHA1 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)),
};
@@ -132,17 +139,12 @@ namespace SabreTools.DatItems.Formats
/// <returns></returns>
public Rom ConvertToRom()
{
var rom = new Rom(_internal.ConvertToRom())
{
ItemType = ItemType.Rom,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
};
rom.GetFieldValue<DataArea?>("DATAAREA")?.SetName(this.GetFieldValue<DiskArea?>("DISKAREA")?.GetName());
var rom = new Rom(_internal.ConvertToRom());
rom.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.SetName(this.GetFieldValue<DiskArea?>(Disk.DiskAreaKey)?.GetName());
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
rom.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
return rom;
}

View File

@@ -29,10 +29,10 @@ namespace SabreTools.DatItems.Formats
public DiskArea()
{
_internal = new Models.Metadata.DiskArea();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.DiskArea;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DiskArea);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -41,9 +41,9 @@ namespace SabreTools.DatItems.Formats
public DiskArea(Models.Metadata.DiskArea? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.DiskArea;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.DiskArea);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -55,13 +55,6 @@ namespace SabreTools.DatItems.Formats
{
return new DiskArea()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.DiskArea ?? [],
};
}

View File

@@ -18,9 +18,9 @@ namespace SabreTools.DatItems.Formats
public Display()
{
_internal = new Models.Metadata.Display();
Machine = new Machine();
ItemType = ItemType.Display;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Display);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -29,9 +29,9 @@ namespace SabreTools.DatItems.Formats
public Display(Models.Metadata.Display? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Display;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Display);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -41,9 +41,9 @@ namespace SabreTools.DatItems.Formats
{
// TODO: Determine what transformation is needed here
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Display;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Display);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -55,13 +55,6 @@ namespace SabreTools.DatItems.Formats
{
return new Display()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Display ?? [],
};
}

View File

@@ -21,9 +21,9 @@ namespace SabreTools.DatItems.Formats
public Driver()
{
_internal = new Models.Metadata.Driver();
Machine = new Machine();
ItemType = ItemType.Driver;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Driver);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -32,9 +32,9 @@ namespace SabreTools.DatItems.Formats
public Driver(Models.Metadata.Driver? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Driver;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Driver);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -46,13 +46,6 @@ namespace SabreTools.DatItems.Formats
{
return new Driver()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Driver ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public Extension()
{
_internal = new Models.Metadata.Extension();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Extension;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Extension);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public Extension(Models.Metadata.Extension? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Extension;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Extension);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new Extension()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Extension ?? [],
};
}

View File

@@ -18,9 +18,9 @@ namespace SabreTools.DatItems.Formats
public Feature()
{
_internal = new Models.Metadata.Feature();
Machine = new Machine();
ItemType = ItemType.Feature;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Feature);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -29,9 +29,9 @@ namespace SabreTools.DatItems.Formats
public Feature(Models.Metadata.Feature? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Feature;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Feature);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -43,13 +43,6 @@ namespace SabreTools.DatItems.Formats
{
return new Feature()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Feature ?? [],
};
}

View File

@@ -100,7 +100,7 @@ namespace SabreTools.DatItems.Formats
/// </summary>
public File()
{
ItemType = ItemType.File;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.File);
}
/// <summary>
@@ -114,8 +114,8 @@ namespace SabreTools.DatItems.Formats
_sha1 = baseFile.SHA1;
_sha256 = baseFile.SHA256;
ItemType = ItemType.File;
DupeType = 0x00;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.File);
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
}
#endregion
@@ -125,15 +125,8 @@ namespace SabreTools.DatItems.Formats
/// <inheritdoc/>
public override object Clone()
{
return new File()
var file = new File()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
Id = this.Id,
Extension = this.Extension,
Size = this.Size,
@@ -143,6 +136,12 @@ namespace SabreTools.DatItems.Formats
_sha256 = this._sha256,
Format = this.Format,
};
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<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
file.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
return file;
}
/// <summary>
@@ -152,7 +151,7 @@ namespace SabreTools.DatItems.Formats
{
return new BaseFile()
{
Parent = this.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
CRC = this._crc,
MD5 = this._md5,
SHA1 = this._sha1,
@@ -166,20 +165,16 @@ namespace SabreTools.DatItems.Formats
/// <returns></returns>
public Rom ConvertToRom()
{
var rom = new Rom()
{
ItemType = ItemType.Rom,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
};
var rom = new Rom();
rom.SetName($"{this.Id}.{this.Extension}");
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, CRC);
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, MD5);
rom.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, SHA1);
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, SHA256);
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
return rom;
}
@@ -194,7 +189,7 @@ namespace SabreTools.DatItems.Formats
bool dupefound = false;
// If we don't have a file, return false
if (ItemType != other?.ItemType)
if (GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey) != other?.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey))
return dupefound;
// Otherwise, treat it as a File

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public Info()
{
_internal = new Models.Metadata.Info();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Info;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Info);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public Info(Models.Metadata.Info? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Info;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Info);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new Info()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Info ?? [],
};
}

View File

@@ -32,9 +32,9 @@ namespace SabreTools.DatItems.Formats
public Input()
{
_internal = new Models.Metadata.Input();
Machine = new Machine();
ItemType = ItemType.Input;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Input);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -43,9 +43,9 @@ namespace SabreTools.DatItems.Formats
public Input(Models.Metadata.Input? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Input;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Input);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -57,13 +57,6 @@ namespace SabreTools.DatItems.Formats
{
return new Input()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Input ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public Instance()
{
_internal = new Models.Metadata.Instance();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Instance;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Instance);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public Instance(Models.Metadata.Instance? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Instance;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Instance);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new Instance()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Instance ?? [],
};
}

View File

@@ -30,11 +30,11 @@ namespace SabreTools.DatItems.Formats
public Media()
{
_internal = new Models.Metadata.Media();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Media;
DupeType = 0x00;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Media);
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -43,10 +43,10 @@ namespace SabreTools.DatItems.Formats
public Media(Models.Metadata.Media? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Media;
DupeType = 0x00;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Media);
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -56,7 +56,6 @@ namespace SabreTools.DatItems.Formats
public Media(BaseFile baseFile)
{
_internal = new Models.Metadata.Media();
Machine = new Machine();
SetName(baseFile.Filename);
SetFieldValue<string?>(Models.Metadata.Media.MD5Key, TextHelper.ByteArrayToString(baseFile.MD5));
@@ -64,8 +63,9 @@ namespace SabreTools.DatItems.Formats
SetFieldValue<string?>(Models.Metadata.Media.SHA256Key, TextHelper.ByteArrayToString(baseFile.SHA256));
SetFieldValue<string?>(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
ItemType = ItemType.Media;
DupeType = 0x00;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Media);
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -77,13 +77,6 @@ namespace SabreTools.DatItems.Formats
{
return new Media()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Media ?? [],
};
}
@@ -96,7 +89,7 @@ namespace SabreTools.DatItems.Formats
return new BaseFile()
{
Filename = this.GetName(),
Parent = this.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
MD5 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Media.MD5Key)),
SHA1 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Media.SHA1Key)),
SHA256 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Media.SHA256Key)),
@@ -110,15 +103,11 @@ namespace SabreTools.DatItems.Formats
/// <returns></returns>
public Rom ConvertToRom()
{
var rom = new Rom(_internal.ConvertToRom())
{
ItemType = ItemType.Rom,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
};
var rom = new Rom(_internal.ConvertToRom());
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
rom.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
return rom;
}

View File

@@ -43,10 +43,10 @@ namespace SabreTools.DatItems.Formats
public Part()
{
_internal = new Models.Metadata.Part();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Part;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Part);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -55,9 +55,9 @@ namespace SabreTools.DatItems.Formats
public Part(Models.Metadata.Part? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Part;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Part);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -69,13 +69,6 @@ namespace SabreTools.DatItems.Formats
{
return new Part()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Part ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public PartFeature()
{
_internal = new Models.Metadata.Feature();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.PartFeature;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.PartFeature);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public PartFeature(Models.Metadata.Feature? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.PartFeature;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.PartFeature);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new PartFeature()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Feature ?? [],
};
}

View File

@@ -32,9 +32,9 @@ namespace SabreTools.DatItems.Formats
public Port()
{
_internal = new Models.Metadata.Port();
Machine = new Machine();
ItemType = ItemType.Port;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Port);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -43,9 +43,9 @@ namespace SabreTools.DatItems.Formats
public Port(Models.Metadata.Port? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Port;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Port);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -57,13 +57,6 @@ namespace SabreTools.DatItems.Formats
{
return new Port()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Port ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public RamOption()
{
_internal = new Models.Metadata.RamOption();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.RamOption;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.RamOption);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public RamOption(Models.Metadata.RamOption? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.RamOption;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.RamOption);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new RamOption()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.RamOption ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public Release()
{
_internal = new Models.Metadata.Release();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Release;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Release);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public Release(Models.Metadata.Release? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Release;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Release);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new Release()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Release ?? [],
};
}

View File

@@ -113,7 +113,7 @@ namespace SabreTools.DatItems.Formats
/// </summary>
public ReleaseDetails()
{
ItemType = ItemType.ReleaseDetails;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.ReleaseDetails);
}
#endregion
@@ -123,15 +123,8 @@ namespace SabreTools.DatItems.Formats
/// <inheritdoc/>
public override object Clone()
{
return new ReleaseDetails()
var releaseDetails = new ReleaseDetails()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
Id = this.Id,
DirName = this.DirName,
RomInfo = this.RomInfo,
@@ -148,6 +141,13 @@ namespace SabreTools.DatItems.Formats
Region = this.Region,
Origin = this.Origin,
};
releaseDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
releaseDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
releaseDetails.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
releaseDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
releaseDetails.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
return releaseDetails;
}
#endregion
@@ -158,7 +158,7 @@ namespace SabreTools.DatItems.Formats
public override bool Equals(DatItem? other)
{
// If we don't have a Details, return false
if (ItemType != other?.ItemType)
if (GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey) != other?.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey))
return false;
// Otherwise, treat it as a Details

View File

@@ -1,10 +1,8 @@
using System.Reflection;
using System.Xml.Serialization;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
using SabreTools.FileTypes;
using SabreTools.Filter;
namespace SabreTools.DatItems.Formats
{
@@ -14,6 +12,20 @@ namespace SabreTools.DatItems.Formats
[JsonObject("rom"), XmlRoot("rom")]
public class Rom : DatItem
{
#region Constants
/// <summary>
/// Non-standard key for inverted logic
/// </summary>
public const string DataAreaKey = "DATAAREA";
/// <summary>
/// Non-standard key for inverted logic
/// </summary>
public const string PartKey = "PART";
#endregion
#region Fields
[JsonIgnore]
@@ -41,7 +53,7 @@ namespace SabreTools.DatItems.Formats
{
get
{
var dataArea = GetFieldValue<DataArea?>("DATAAREA");
var dataArea = GetFieldValue<DataArea?>(Rom.DataAreaKey);
return dataArea != null
&& (!string.IsNullOrEmpty(dataArea.GetName())
|| dataArea.GetFieldValue<long?>(Models.Metadata.DataArea.SizeKey) != null
@@ -55,7 +67,7 @@ namespace SabreTools.DatItems.Formats
{
get
{
var part = GetFieldValue<Part?>("PART");
var part = GetFieldValue<Part?>(Rom.PartKey);
return part != null
&& (!string.IsNullOrEmpty(part.GetName())
|| !string.IsNullOrEmpty(part.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey)));
@@ -82,11 +94,11 @@ namespace SabreTools.DatItems.Formats
public Rom()
{
_internal = new Models.Metadata.Rom();
Machine = new Machine();
SetName(null);
ItemType = ItemType.Rom;
DupeType = 0x00;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Rom);
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
}
@@ -100,13 +112,13 @@ namespace SabreTools.DatItems.Formats
{
_internal = new Models.Metadata.Rom();
SetName(name);
ItemType = ItemType.Rom;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Rom);
SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, null);
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
Machine = new Machine();
Machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, machineName);
Machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, machineName);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, machineName);
GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, machineName);
}
/// <summary>
@@ -116,7 +128,6 @@ namespace SabreTools.DatItems.Formats
public Rom(BaseFile baseFile)
{
_internal = new Models.Metadata.Rom();
Machine = new Machine();
SetName(baseFile.Filename);
SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, baseFile.Size);
@@ -128,8 +139,9 @@ namespace SabreTools.DatItems.Formats
SetFieldValue<string?>(Models.Metadata.Rom.SHA512Key, TextHelper.ByteArrayToString(baseFile.SHA512));
SetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
ItemType = ItemType.Rom;
DupeType = 0x00;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Rom);
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.None);
SetFieldValue<string?>(Models.Metadata.Rom.DateKey, baseFile.Date);
}
@@ -140,10 +152,9 @@ namespace SabreTools.DatItems.Formats
public Rom(Models.Metadata.Rom? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Rom;
DupeType = 0x00;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Rom);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -155,13 +166,6 @@ namespace SabreTools.DatItems.Formats
{
return new Rom()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Rom ?? [],
};
}
@@ -174,7 +178,7 @@ namespace SabreTools.DatItems.Formats
return new BaseFile()
{
Filename = GetName(),
Parent = this.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
Date = GetFieldValue<string?>(Models.Metadata.Rom.DateKey),
Size = GetFieldValue<long?>(Models.Metadata.Rom.SizeKey),
CRC = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)),

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public Sample()
{
_internal = new Models.Metadata.Sample();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Sample;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Sample);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public Sample(Models.Metadata.Sample? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Sample;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Sample);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new Sample()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Sample ?? [],
};
}

View File

@@ -106,7 +106,7 @@ namespace SabreTools.DatItems.Formats
/// </summary>
public Serials()
{
ItemType = ItemType.Serials;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Serials);
}
#endregion
@@ -116,15 +116,8 @@ namespace SabreTools.DatItems.Formats
/// <inheritdoc/>
public override object Clone()
{
return new Serials()
var serials = new Serials()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
DigitalSerial1 = this.DigitalSerial1,
DigitalSerial2 = this.DigitalSerial2,
MediaSerial1 = this.MediaSerial1,
@@ -140,6 +133,13 @@ namespace SabreTools.DatItems.Formats
MediaStamp = this.MediaStamp,
BoxBarcode = this.BoxBarcode,
};
serials.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
serials.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
serials.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
serials.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
serials.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
return serials;
}
#endregion
@@ -150,7 +150,7 @@ namespace SabreTools.DatItems.Formats
public override bool Equals(DatItem? other)
{
// If we don't have a Serials, return false
if (ItemType != other?.ItemType)
if (GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey) != other?.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey))
return false;
// Otherwise, treat it as a Serials

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public SharedFeature()
{
_internal = new Models.Metadata.SharedFeat();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.SharedFeature;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SharedFeature);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public SharedFeature(Models.Metadata.SharedFeat? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.SharedFeature;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SharedFeature);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new SharedFeature()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.SharedFeat ?? [],
};
}

View File

@@ -42,10 +42,10 @@ namespace SabreTools.DatItems.Formats
public Slot()
{
_internal = new Models.Metadata.Slot();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.Slot;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Slot);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -54,9 +54,9 @@ namespace SabreTools.DatItems.Formats
public Slot(Models.Metadata.Slot? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Slot;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Slot);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -68,13 +68,6 @@ namespace SabreTools.DatItems.Formats
{
return new Slot()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Slot ?? [],
};
}

View File

@@ -28,10 +28,10 @@ namespace SabreTools.DatItems.Formats
public SlotOption()
{
_internal = new Models.Metadata.SlotOption();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.SlotOption;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SlotOption);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -40,9 +40,9 @@ namespace SabreTools.DatItems.Formats
public SlotOption(Models.Metadata.SlotOption? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.SlotOption;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SlotOption);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -54,13 +54,6 @@ namespace SabreTools.DatItems.Formats
{
return new SlotOption()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.SlotOption ?? [],
};
}

View File

@@ -31,10 +31,10 @@ namespace SabreTools.DatItems.Formats
public SoftwareList()
{
_internal = new Models.Metadata.SoftwareList();
Machine = new Machine();
SetName(string.Empty);
ItemType = ItemType.SoftwareList;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SoftwareList);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -43,9 +43,9 @@ namespace SabreTools.DatItems.Formats
public SoftwareList(Models.Metadata.SoftwareList? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.SoftwareList;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SoftwareList);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -56,13 +56,6 @@ namespace SabreTools.DatItems.Formats
{
return new SoftwareList()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.SoftwareList ?? [],
};
}

View File

@@ -18,9 +18,9 @@ namespace SabreTools.DatItems.Formats
public Sound()
{
_internal = new Models.Metadata.Sound();
Machine = new Machine();
ItemType = ItemType.Sound;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Sound);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
/// <summary>
@@ -29,9 +29,9 @@ namespace SabreTools.DatItems.Formats
public Sound(Models.Metadata.Sound? item)
{
_internal = item ?? [];
Machine = new Machine();
ItemType = ItemType.Sound;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.Sound);
SetFieldValue<Machine>(DatItem.MachineKey, new Machine());
}
#endregion
@@ -43,13 +43,6 @@ namespace SabreTools.DatItems.Formats
{
return new Sound()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
_internal = this._internal?.Clone() as Models.Metadata.Sound ?? [],
};
}

View File

@@ -143,7 +143,7 @@ namespace SabreTools.DatItems.Formats
/// </summary>
public SourceDetails()
{
ItemType = ItemType.SourceDetails;
SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, ItemType.SourceDetails);
}
#endregion
@@ -153,15 +153,8 @@ namespace SabreTools.DatItems.Formats
/// <inheritdoc/>
public override object Clone()
{
return new SourceDetails()
var sourceDetails = new SourceDetails()
{
ItemType = this.ItemType,
DupeType = this.DupeType,
Machine = this.Machine.Clone() as Machine ?? new Machine(),
Source = this.Source?.Clone() as Source,
Remove = this.Remove,
Id = this.Id,
Section = this.Section,
RomInfo = this.RomInfo,
@@ -183,6 +176,13 @@ namespace SabreTools.DatItems.Formats
Link2 = this.Link2,
Link3 = this.Link3,
};
sourceDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
sourceDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
sourceDetails.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
sourceDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
sourceDetails.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
return sourceDetails;
}
#endregion
@@ -193,7 +193,7 @@ namespace SabreTools.DatItems.Formats
public override bool Equals(DatItem? other)
{
// If we don't have a SourceDetails, return false
if (ItemType != other?.ItemType)
if (GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey) != other?.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey))
return false;
// Otherwise, treat it as a SourceDetails