Machines don't know about field stuff

This commit is contained in:
Matt Nadareski
2020-12-13 22:06:47 -08:00
parent 3fcec263e0
commit 8286fa6eb5
5 changed files with 474 additions and 453 deletions

View File

@@ -1,10 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Serialization;
using SabreTools.Core;
using SabreTools.Core.Tools;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
@@ -311,153 +308,6 @@ namespace SabreTools.DatItems
#endregion // Fields
#region Accessors
/// <summary>
/// Set fields with given values
/// </summary>
/// <param name="mappings">Mappings dictionary</param>
public void SetFields(Dictionary<MachineField, string> mappings)
{
if (mappings == null)
return;
#region Common
if (mappings.Keys.Contains(MachineField.Name))
Name = mappings[MachineField.Name];
if (mappings.Keys.Contains(MachineField.Comment))
Comment = mappings[MachineField.Comment];
if (mappings.Keys.Contains(MachineField.Description))
Description = mappings[MachineField.Description];
if (mappings.Keys.Contains(MachineField.Year))
Year = mappings[MachineField.Year];
if (mappings.Keys.Contains(MachineField.Manufacturer))
Manufacturer = mappings[MachineField.Manufacturer];
if (mappings.Keys.Contains(MachineField.Publisher))
Publisher = mappings[MachineField.Publisher];
if (mappings.Keys.Contains(MachineField.Category))
Category = mappings[MachineField.Category];
if (mappings.Keys.Contains(MachineField.RomOf))
RomOf = mappings[MachineField.RomOf];
if (mappings.Keys.Contains(MachineField.CloneOf))
CloneOf = mappings[MachineField.CloneOf];
if (mappings.Keys.Contains(MachineField.SampleOf))
SampleOf = mappings[MachineField.SampleOf];
if (mappings.Keys.Contains(MachineField.Type))
MachineType = mappings[MachineField.Type].AsMachineType();
#endregion
#region AttractMode
if (mappings.Keys.Contains(MachineField.Players))
Players = mappings[MachineField.Players];
if (mappings.Keys.Contains(MachineField.Rotation))
Rotation = mappings[MachineField.Rotation];
if (mappings.Keys.Contains(MachineField.Control))
Control = mappings[MachineField.Control];
if (mappings.Keys.Contains(MachineField.Status))
Status = mappings[MachineField.Status];
if (mappings.Keys.Contains(MachineField.DisplayCount))
DisplayCount = mappings[MachineField.DisplayCount];
if (mappings.Keys.Contains(MachineField.DisplayType))
DisplayType = mappings[MachineField.DisplayType];
if (mappings.Keys.Contains(MachineField.Buttons))
Buttons = mappings[MachineField.Buttons];
#endregion
#region ListXML
if (mappings.Keys.Contains(MachineField.SourceFile))
SourceFile = mappings[MachineField.SourceFile];
if (mappings.Keys.Contains(MachineField.Runnable))
Runnable = mappings[MachineField.Runnable].AsRunnable();
#endregion
#region Logiqx
if (mappings.Keys.Contains(MachineField.Board))
Board = mappings[MachineField.Board];
if (mappings.Keys.Contains(MachineField.RebuildTo))
RebuildTo = mappings[MachineField.RebuildTo];
#endregion
#region Logiqx EmuArc
if (mappings.Keys.Contains(MachineField.TitleID))
TitleID = mappings[MachineField.TitleID];
if (mappings.Keys.Contains(MachineField.Developer))
Developer = mappings[MachineField.Developer];
if (mappings.Keys.Contains(MachineField.Genre))
Genre = mappings[MachineField.Genre];
if (mappings.Keys.Contains(MachineField.Subgenre))
Subgenre = mappings[MachineField.Subgenre];
if (mappings.Keys.Contains(MachineField.Ratings))
Ratings = mappings[MachineField.Ratings];
if (mappings.Keys.Contains(MachineField.Score))
Score = mappings[MachineField.Score];
if (mappings.Keys.Contains(MachineField.Enabled))
Enabled = mappings[MachineField.Enabled];
if (mappings.Keys.Contains(MachineField.CRC))
Crc = mappings[MachineField.CRC].AsYesNo();
if (mappings.Keys.Contains(MachineField.RelatedTo))
RelatedTo = mappings[MachineField.RelatedTo];
#endregion
#region OpenMSX
if (mappings.Keys.Contains(MachineField.GenMSXID))
GenMSXID = mappings[MachineField.GenMSXID];
if (mappings.Keys.Contains(MachineField.System))
System = mappings[MachineField.System];
if (mappings.Keys.Contains(MachineField.Country))
Country = mappings[MachineField.Country];
#endregion
#region SoftwareList
if (mappings.Keys.Contains(MachineField.Supported))
Supported = mappings[MachineField.Supported].AsSupported();
#endregion
}
#endregion
#region Constructors
/// <summary>
@@ -563,298 +413,5 @@ namespace SabreTools.DatItems
}
#endregion
#region Filtering
/// <summary>
/// Remove fields from the Machine
/// </summary>
/// <param name="fields">List of Fields to remove</param>
public void RemoveFields(List<MachineField> fields)
{
#region Common
if (fields.Contains(MachineField.Name))
Name = null;
if (fields.Contains(MachineField.Comment))
Comment = null;
if (fields.Contains(MachineField.Description))
Description = null;
if (fields.Contains(MachineField.Year))
Year = null;
if (fields.Contains(MachineField.Manufacturer))
Manufacturer = null;
if (fields.Contains(MachineField.Publisher))
Publisher = null;
if (fields.Contains(MachineField.Category))
Category = null;
if (fields.Contains(MachineField.RomOf))
RomOf = null;
if (fields.Contains(MachineField.CloneOf))
CloneOf = null;
if (fields.Contains(MachineField.SampleOf))
SampleOf = null;
if (fields.Contains(MachineField.Type))
MachineType = 0x0;
#endregion
#region AttractMode
if (fields.Contains(MachineField.Players))
Players = null;
if (fields.Contains(MachineField.Rotation))
Rotation = null;
if (fields.Contains(MachineField.Control))
Control = null;
if (fields.Contains(MachineField.Status))
Status = null;
if (fields.Contains(MachineField.DisplayCount))
DisplayCount = null;
if (fields.Contains(MachineField.DisplayType))
DisplayType = null;
if (fields.Contains(MachineField.Buttons))
Buttons = null;
#endregion
#region ListXML
if (fields.Contains(MachineField.SourceFile))
SourceFile = null;
if (fields.Contains(MachineField.Runnable))
Runnable = Runnable.NULL;
#endregion
#region Logiqx
if (fields.Contains(MachineField.Board))
Board = null;
if (fields.Contains(MachineField.RebuildTo))
RebuildTo = null;
#endregion
#region Logiqx EmuArc
if (fields.Contains(MachineField.TitleID))
TitleID = null;
if (fields.Contains(MachineField.Developer))
Developer = null;
if (fields.Contains(MachineField.Genre))
Genre = null;
if (fields.Contains(MachineField.Subgenre))
Subgenre = null;
if (fields.Contains(MachineField.Ratings))
Ratings = null;
if (fields.Contains(MachineField.Score))
Score = null;
if (fields.Contains(MachineField.Enabled))
Enabled = null;
if (fields.Contains(MachineField.CRC))
Crc = null;
if (fields.Contains(MachineField.RelatedTo))
RelatedTo = null;
#endregion
#region OpenMSX
if (fields.Contains(MachineField.GenMSXID))
GenMSXID = null;
if (fields.Contains(MachineField.System))
System = null;
if (fields.Contains(MachineField.Country))
Country = null;
#endregion
#region SoftwareList
if (fields.Contains(MachineField.Supported))
Supported = Supported.NULL;
#endregion
}
#endregion
#region Sorting and Merging
/// <summary>
/// Replace machine fields from another item
/// </summary>
/// <param name="item">DatItem to pull new information from</param>
/// <param name="fields">List of Fields representing what should be updated</param>
/// <param name="onlySame">True if descriptions should only be replaced if the game name is the same, false otherwise</param>
public void ReplaceFields(Machine machine, List<MachineField> fields, bool onlySame)
{
#region Common
if (fields.Contains(MachineField.Name))
Name = machine.Name;
if (fields.Contains(MachineField.Comment))
Comment = machine.Comment;
if (fields.Contains(MachineField.Description))
{
if (!onlySame || (onlySame && Name == Description))
Description = machine.Description;
}
if (fields.Contains(MachineField.Year))
Year = machine.Year;
if (fields.Contains(MachineField.Manufacturer))
Manufacturer = machine.Manufacturer;
if (fields.Contains(MachineField.Publisher))
Publisher = machine.Publisher;
if (fields.Contains(MachineField.Category))
Category = machine.Category;
if (fields.Contains(MachineField.RomOf))
RomOf = machine.RomOf;
if (fields.Contains(MachineField.CloneOf))
CloneOf = machine.CloneOf;
if (fields.Contains(MachineField.SampleOf))
SampleOf = machine.SampleOf;
if (fields.Contains(MachineField.Type))
MachineType = machine.MachineType;
#endregion
#region AttractMode
if (fields.Contains(MachineField.Players))
Players = machine.Players;
if (fields.Contains(MachineField.Rotation))
Rotation = machine.Rotation;
if (fields.Contains(MachineField.Control))
Control = machine.Control;
if (fields.Contains(MachineField.Status))
Status = machine.Status;
if (fields.Contains(MachineField.DisplayCount))
DisplayCount = machine.DisplayCount;
if (fields.Contains(MachineField.DisplayType))
DisplayType = machine.DisplayType;
if (fields.Contains(MachineField.Buttons))
Buttons = machine.Buttons;
#endregion
#region ListXML
if (fields.Contains(MachineField.SourceFile))
SourceFile = machine.SourceFile;
if (fields.Contains(MachineField.Runnable))
Runnable = machine.Runnable;
#endregion
#region Logiqx
if (fields.Contains(MachineField.Board))
Board = machine.Board;
if (fields.Contains(MachineField.RebuildTo))
RebuildTo = machine.RebuildTo;
#endregion
#region Logiqx EmuArc
if (fields.Contains(MachineField.TitleID))
TitleID = machine.TitleID;
if (fields.Contains(MachineField.Developer))
Developer = machine.Developer;
if (fields.Contains(MachineField.Genre))
Genre = machine.Genre;
if (fields.Contains(MachineField.Subgenre))
Subgenre = machine.Subgenre;
if (fields.Contains(MachineField.Ratings))
Ratings = machine.Ratings;
if (fields.Contains(MachineField.Score))
Score = machine.Score;
if (fields.Contains(MachineField.Enabled))
Enabled = machine.Enabled;
if (fields.Contains(MachineField.CRC))
Crc = machine.Crc;
if (fields.Contains(MachineField.RelatedTo))
RelatedTo = machine.RelatedTo;
#endregion
#region OpenMSX
if (fields.Contains(MachineField.GenMSXID))
GenMSXID = machine.GenMSXID;
if (fields.Contains(MachineField.System))
System = machine.System;
if (fields.Contains(MachineField.Country))
Country = machine.Country;
#endregion
#region SoftwareList
if (fields.Contains(MachineField.Supported))
Supported = machine.Supported;
#endregion
}
#endregion
}
}