DatItems don't know about removing fields or ORPG

This commit is contained in:
Matt Nadareski
2020-12-13 23:09:24 -08:00
parent 8286fa6eb5
commit 8a354e9156
44 changed files with 1392 additions and 1924 deletions

View File

@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
@@ -795,136 +794,6 @@ namespace SabreTools.DatItems
#endregion
#region Filtering
/// <inheritdoc/>
public override void RemoveFields(
List<DatItemField> datItemFields,
List<MachineField> machineFields)
{
// Remove common fields first
base.RemoveFields(datItemFields, machineFields);
// Remove the fields
#region Common
if (datItemFields.Contains(DatItemField.Name))
Name = null;
if (datItemFields.Contains(DatItemField.Bios))
Bios = null;
if (datItemFields.Contains(DatItemField.Size))
Size = 0;
if (datItemFields.Contains(DatItemField.CRC))
CRC = null;
if (datItemFields.Contains(DatItemField.MD5))
MD5 = null;
#if NET_FRAMEWORK
if (datItemFields.Contains(DatItemField.RIPEMD160))
RIPEMD160 = null;
#endif
if (datItemFields.Contains(DatItemField.SHA1))
SHA1 = null;
if (datItemFields.Contains(DatItemField.SHA256))
SHA256 = null;
if (datItemFields.Contains(DatItemField.SHA384))
SHA384 = null;
if (datItemFields.Contains(DatItemField.SHA512))
SHA512 = null;
if (datItemFields.Contains(DatItemField.SpamSum))
SpamSum = null;
if (datItemFields.Contains(DatItemField.Merge))
MergeTag = null;
if (datItemFields.Contains(DatItemField.Region))
Region = null;
if (datItemFields.Contains(DatItemField.Offset))
Offset = null;
if (datItemFields.Contains(DatItemField.Date))
Date = null;
if (datItemFields.Contains(DatItemField.Status))
ItemStatus = ItemStatus.NULL;
if (datItemFields.Contains(DatItemField.Optional))
Optional = null;
if (datItemFields.Contains(DatItemField.Inverted))
Inverted = null;
#endregion
#region AttractMode
if (datItemFields.Contains(DatItemField.AltName))
AltName = null;
if (datItemFields.Contains(DatItemField.AltTitle))
AltTitle = null;
#endregion
#region OpenMSX
if (datItemFields.Contains(DatItemField.Original))
Original = null;
if (datItemFields.Contains(DatItemField.OpenMSXSubType))
OpenMSXSubType = OpenMSXSubType.NULL;
if (datItemFields.Contains(DatItemField.OpenMSXType))
OpenMSXType = null;
if (datItemFields.Contains(DatItemField.Remark))
Remark = null;
if (datItemFields.Contains(DatItemField.Boot))
Boot = null;
#endregion
#region SoftwareList
if (datItemFields.Contains(DatItemField.LoadFlag))
LoadFlag = LoadFlag.NULL;
if (datItemFields.Contains(DatItemField.Value))
Value = null;
if (DataAreaSpecified)
DataArea.RemoveFields(datItemFields, machineFields);
if (PartSpecified)
Part.RemoveFields(datItemFields, machineFields);
#endregion
}
/// <summary>
/// Set internal names to match One Rom Per Game (ORPG) logic
/// </summary>
public override void SetOneRomPerGame()
{
string[] splitname = Name.Split('.');
Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}";
Name = Path.GetFileName(Name);
}
#endregion
#region Sorting and Merging
/// <summary>