mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Wire up skeleton formats to DatItem
This commit is contained in:
@@ -169,6 +169,7 @@ namespace SabreTools.DatItems
|
||||
ItemType.Chip => new Chip(),
|
||||
ItemType.Condition => new Condition(),
|
||||
ItemType.Configuration => new Configuration(),
|
||||
ItemType.Details => new Details(),
|
||||
ItemType.Device => new Device(),
|
||||
ItemType.DeviceReference => new DeviceReference(),
|
||||
ItemType.DipSwitch => new DipSwitch(),
|
||||
@@ -177,6 +178,7 @@ namespace SabreTools.DatItems
|
||||
ItemType.Driver => new Driver(),
|
||||
ItemType.Extension => new Extension(),
|
||||
ItemType.Feature => new Feature(),
|
||||
ItemType.File => new Formats.File(),
|
||||
ItemType.Info => new Info(),
|
||||
ItemType.Instance => new Instance(),
|
||||
ItemType.Location => new Location(),
|
||||
@@ -187,6 +189,7 @@ namespace SabreTools.DatItems
|
||||
ItemType.Release => new Release(),
|
||||
ItemType.Rom => new Rom(),
|
||||
ItemType.Sample => new Sample(),
|
||||
ItemType.Serials => new Serials(),
|
||||
ItemType.SharedFeature => new SharedFeature(),
|
||||
ItemType.Slot => new Slot(),
|
||||
ItemType.SlotOption => new SlotOption(),
|
||||
@@ -548,9 +551,12 @@ namespace SabreTools.DatItems
|
||||
if (file == null)
|
||||
continue;
|
||||
|
||||
// If we don't have a Disk, Media, or Rom, we skip checking for duplicates
|
||||
if (file.ItemType != ItemType.Disk && file.ItemType != ItemType.Media && file.ItemType != ItemType.Rom)
|
||||
// If we don't have a Disk, File, Media, or Rom, we skip checking for duplicates
|
||||
if (file.ItemType != ItemType.Disk && file.ItemType != ItemType.File
|
||||
&& file.ItemType != ItemType.Media && file.ItemType != ItemType.Rom)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// If it's a nodump, add and skip
|
||||
if (file.ItemType == ItemType.Rom && (file as Rom).ItemStatus == ItemStatus.Nodump)
|
||||
@@ -592,6 +598,8 @@ namespace SabreTools.DatItems
|
||||
// Disks, Media, and Roms have more information to fill
|
||||
if (file.ItemType == ItemType.Disk)
|
||||
(saveditem as Disk).FillMissingInformation(file as Disk);
|
||||
else if (file.ItemType == ItemType.File)
|
||||
(saveditem as Formats.File).FillMissingInformation(file as Formats.File);
|
||||
else if (file.ItemType == ItemType.Media)
|
||||
(saveditem as Media).FillMissingInformation(file as Media);
|
||||
else if (file.ItemType == ItemType.Rom)
|
||||
@@ -682,7 +690,8 @@ namespace SabreTools.DatItems
|
||||
{
|
||||
staticLogger.Verbose($"Name duplicate found for '{datItemName}'");
|
||||
|
||||
if (datItem.ItemType == ItemType.Disk || datItem.ItemType == ItemType.Media || datItem.ItemType == ItemType.Rom)
|
||||
if (datItem.ItemType == ItemType.Disk || datItem.ItemType == ItemType.File
|
||||
|| datItem.ItemType == ItemType.Media || datItem.ItemType == ItemType.Rom)
|
||||
{
|
||||
datItemName += GetDuplicateSuffix(datItem);
|
||||
lastrenamed ??= datItemName;
|
||||
@@ -731,6 +740,8 @@ namespace SabreTools.DatItems
|
||||
{
|
||||
if (datItem.ItemType == ItemType.Disk)
|
||||
return (datItem as Disk).GetDuplicateSuffix();
|
||||
else if (datItem.ItemType == ItemType.File)
|
||||
return (datItem as Formats.File).GetDuplicateSuffix();
|
||||
else if (datItem.ItemType == ItemType.Media)
|
||||
return (datItem as Media).GetDuplicateSuffix();
|
||||
else if (datItem.ItemType == ItemType.Rom)
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Core;
|
||||
using SabreTools.Core.Tools;
|
||||
using SabreTools.FileTypes;
|
||||
|
||||
// TODO: Add item mappings for all fields
|
||||
namespace SabreTools.DatItems.Formats
|
||||
@@ -104,6 +105,21 @@ namespace SabreTools.DatItems.Formats
|
||||
ItemType = ItemType.File;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a File object from a BaseFile
|
||||
/// </summary>
|
||||
/// <param name="baseFile"></param>
|
||||
public File(BaseFile baseFile)
|
||||
{
|
||||
_crc = baseFile.CRC;
|
||||
_md5 = baseFile.MD5;
|
||||
_sha1 = baseFile.SHA1;
|
||||
_sha256 = baseFile.SHA256;
|
||||
|
||||
ItemType = ItemType.File;
|
||||
DupeType = 0x00;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Cloning Methods
|
||||
@@ -131,6 +147,46 @@ namespace SabreTools.DatItems.Formats
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert Disk object to a BaseFile
|
||||
/// </summary>
|
||||
public BaseFile ConvertToBaseFile()
|
||||
{
|
||||
return new BaseFile()
|
||||
{
|
||||
Parent = this.Machine?.Name,
|
||||
CRC = this._crc,
|
||||
MD5 = this._md5,
|
||||
SHA1 = this._sha1,
|
||||
SHA256 = this._sha256,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert a disk to the closest Rom approximation
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public Rom ConvertToRom()
|
||||
{
|
||||
var rom = new Rom()
|
||||
{
|
||||
Name = $"{this.Id}.{this.Extension}",
|
||||
ItemType = ItemType.Rom,
|
||||
DupeType = this.DupeType,
|
||||
|
||||
Machine = this.Machine.Clone() as Machine,
|
||||
Source = this.Source.Clone() as Source,
|
||||
Remove = this.Remove,
|
||||
|
||||
CRC = this.CRC,
|
||||
MD5 = this.MD5,
|
||||
SHA1 = this.SHA1,
|
||||
SHA256 = this.SHA256,
|
||||
};
|
||||
|
||||
return rom;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Comparision Methods
|
||||
|
||||
Reference in New Issue
Block a user