Consolidate removal code

This commit is contained in:
Matt Nadareski
2024-03-05 16:37:52 -05:00
parent fa99e6aefb
commit d43a275f8c
52 changed files with 424 additions and 1266 deletions

View File

@@ -552,75 +552,10 @@ namespace SabreTools.DatItems
/// <summary>
/// Remove a field from the Machine
/// </summary>
/// <param name="machineField">Machine field to remove</param>
/// <param name="fieldName">Field to remove</param>
/// <returns>True if the removal was successful, false otherwise</returns>
public bool RemoveField(MachineField machineField)
{
// Get the correct internal field name
string? fieldName = machineField switch
{
MachineField.Board => Models.Metadata.Machine.BoardKey,
MachineField.Buttons => Models.Metadata.Machine.ButtonsKey,
MachineField.Category => Models.Metadata.Machine.CategoryKey,
MachineField.CloneOf => Models.Metadata.Machine.CloneOfKey,
MachineField.CloneOfID => Models.Metadata.Machine.CloneOfIdKey,
MachineField.Comment => Models.Metadata.Machine.CommentKey,
MachineField.Control => Models.Metadata.Machine.ControlKey,
MachineField.Country => Models.Metadata.Machine.CountryKey,
//MachineField.CRC => Models.Metadata.Machine.CRCKey,
MachineField.Description => Models.Metadata.Machine.DescriptionKey,
//MachineField.Developer => Models.Metadata.Machine.DeveloperKey,
MachineField.DisplayCount => Models.Metadata.Machine.DisplayCountKey,
MachineField.DisplayType => Models.Metadata.Machine.DisplayTypeKey,
//MachineField.Enabled => Models.Metadata.Machine.EnabledKey,
MachineField.GenMSXID => Models.Metadata.Machine.GenMSXIDKey,
//MachineField.Genre => Models.Metadata.Machine.GenreKey,
MachineField.History => Models.Metadata.Machine.HistoryKey,
MachineField.ID => Models.Metadata.Machine.IdKey,
MachineField.Manufacturer => Models.Metadata.Machine.ManufacturerKey,
MachineField.Name => Models.Metadata.Machine.NameKey,
MachineField.Players => Models.Metadata.Machine.PlayersKey,
MachineField.Publisher => Models.Metadata.Machine.PublisherKey,
//MachineField.Ratings => Models.Metadata.Machine.RatingsKey,
MachineField.RebuildTo => Models.Metadata.Machine.RebuildToKey,
//MachineField.RelatedTo => Models.Metadata.Machine.RelatedToKey,
MachineField.RomOf => Models.Metadata.Machine.RomOfKey,
MachineField.Rotation => Models.Metadata.Machine.RotationKey,
MachineField.Runnable => Models.Metadata.Machine.RunnableKey,
MachineField.SampleOf => Models.Metadata.Machine.SampleOfKey,
//MachineField.Score => Models.Metadata.Machine.ScoreKey,
MachineField.SourceFile => Models.Metadata.Machine.SourceFileKey,
MachineField.Status => Models.Metadata.Machine.StatusKey,
//MachineField.Subgenre => Models.Metadata.Machine.SubgenreKey,
MachineField.Supported => Models.Metadata.Machine.SupportedKey,
MachineField.System => Models.Metadata.Machine.SystemKey,
//MachineField.TitleID => Models.Metadata.Machine.TitleIDKey,
//MachineField.Type => Models.Metadata.Machine.TypeKey,
MachineField.Year => Models.Metadata.Machine.YearKey,
_ => null,
};
// A null value means special handling is needed
if (fieldName == null)
{
switch (machineField)
{
case MachineField.CRC: Crc = null; return true;
case MachineField.Developer: Developer = null; return true;
case MachineField.Enabled: Enabled = null; return true;
case MachineField.Genre: Genre = null; return true;
case MachineField.Ratings: Ratings = null; return true;
case MachineField.RelatedTo: RelatedTo = null; return true;
case MachineField.Score: Score = null; return true;
case MachineField.Subgenre: Subgenre = null; return true;
case MachineField.TitleID: TitleID = null; return true;
case MachineField.Type: MachineType = MachineType.None; return true;
}
}
// Remove the field and return
return FieldManipulator.RemoveField(_machine, fieldName);
}
public bool RemoveField(string? fieldName)
=> FieldManipulator.RemoveField(_machine, fieldName);
/// <summary>
/// Set a field in the Machine from a mapping string