Remove unnecessary Field exclusion

This commit is contained in:
Matt Nadareski
2020-08-23 22:23:55 -07:00
parent a1d81a8e5f
commit f8fae70231
27 changed files with 618 additions and 958 deletions

View File

@@ -1,8 +1,11 @@
namespace SabreTools.Library.DatItems
using Newtonsoft.Json;
namespace SabreTools.Library.DatItems
{
/// <summary>
/// Represents generic archive files to be included in a set
/// </summary>
[JsonObject("archive")]
public class Archive : DatItem
{
#region Constructors

View File

@@ -1,15 +1,16 @@
using System.Collections.Generic;
using System.Linq;
using SabreTools.Library.Filtering;
using Newtonsoft.Json;
using System.Linq;
using SabreTools.Library.Tools;
using Newtonsoft.Json;
namespace SabreTools.Library.DatItems
{
/// <summary>
/// Represents which BIOS(es) is associated with a set
/// </summary>
[JsonObject("biosset")]
public class BiosSet : DatItem
{
#region Fields
@@ -30,38 +31,6 @@ namespace SabreTools.Library.DatItems
#region Accessors
/// <summary>
/// Get the value of that field as a string, if possible
/// </summary>
public override string GetField(Field field, List<Field> excludeFields)
{
// If the field is to be excluded, return empty string
if (excludeFields.Contains(field))
return string.Empty;
// Handle BiosSet-specific fields
string fieldValue;
switch (field)
{
case Field.Default:
fieldValue = Default?.ToString();
break;
case Field.BiosDescription:
fieldValue = Description;
break;
// For everything else, use the base method
default:
return base.GetField(field, excludeFields);
}
// Make sure we don't return null
if (string.IsNullOrEmpty(fieldValue))
fieldValue = string.Empty;
return fieldValue;
}
/// <summary>
/// Set fields with given values
/// </summary>

View File

@@ -1,8 +1,11 @@
namespace SabreTools.Library.DatItems
using Newtonsoft.Json;
namespace SabreTools.Library.DatItems
{
/// <summary>
/// Represents a blank set from an input DAT
/// </summary>
[JsonObject("blank")]
public class Blank : DatItem
{
#region Constructors

View File

@@ -5,18 +5,19 @@ using System.Linq;
using System.Net;
using SabreTools.Library.Data;
using SabreTools.Library.DatFiles;
using SabreTools.Library.FileTypes;
using SabreTools.Library.Filtering;
using SabreTools.Library.Tools;
using NaturalSort;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace SabreTools.Library.DatItems
{
/// <summary>
/// Base class for all items included in a set
/// </summary>
[JsonObject("datitem")]
public abstract class DatItem : IEquatable<DatItem>, IComparable<DatItem>, ICloneable
{
// TODO: Should any of these be specific to certain types?
@@ -34,7 +35,8 @@ namespace SabreTools.Library.DatItems
/// <summary>
/// Item type for outputting
/// </summary>
[JsonIgnore]
[JsonProperty("type")]
[JsonConverter(typeof(StringEnumConverter))]
public ItemType ItemType { get; set; }
/// <summary>
@@ -83,6 +85,7 @@ namespace SabreTools.Library.DatItems
/// OpenMSX sub item type
/// </summary>
[JsonProperty("openmsx_subtype")]
[JsonConverter(typeof(StringEnumConverter))]
public OpenMSXSubType OpenMSXSubType { get; set; }
/// <summary>
@@ -314,105 +317,6 @@ namespace SabreTools.Library.DatItems
#region Accessors
/// <summary>
/// Get the value of that field as a string, if possible
/// </summary>
public virtual string GetField(Field field, List<Field> excludeFields)
{
// If the field is to be excluded, return empty string
if (excludeFields.Contains(field))
return string.Empty;
// Try to get the machine field first
string fieldValue = Machine.GetField(field, excludeFields);
if (fieldValue != null)
return fieldValue;
switch (field)
{
#region Common
case Field.Name:
fieldValue = Name;
break;
#endregion
#region AttractMode
case Field.AltName:
fieldValue = AltName;
break;
case Field.AltTitle:
fieldValue = AltTitle;
break;
#endregion
#region OpenMSX
case Field.Original:
fieldValue = Original.Content;
break;
case Field.OpenMSXSubType:
fieldValue = OpenMSXSubType.ToString();
break;
case Field.OpenMSXType:
fieldValue = OpenMSXType;
break;
case Field.Remark:
fieldValue = Remark;
break;
case Field.Boot:
fieldValue = Boot;
break;
#endregion
#region SoftwareList
case Field.PartName:
fieldValue = PartName;
break;
case Field.PartInterface:
fieldValue = PartInterface;
break;
case Field.Features:
fieldValue = string.Join(";", (Features ?? new List<SoftwareListFeature>()).Select(f => $"{f.Name}={f.Value}"));
break;
case Field.AreaName:
fieldValue = AreaName;
break;
case Field.AreaSize:
fieldValue = AreaSize?.ToString();
break;
case Field.AreaWidth:
fieldValue = AreaWidth;
break;
case Field.AreaEndianness:
fieldValue = AreaEndianness;
break;
case Field.Value:
fieldValue = Value;
break;
case Field.LoadFlag:
fieldValue = LoadFlag;
break;
#endregion
case Field.NULL:
default:
return string.Empty;
}
// Make sure we don't return null
if (string.IsNullOrEmpty(fieldValue))
fieldValue = string.Empty;
return fieldValue;
}
/// <summary>
/// Set fields with given values
/// </summary>

View File

@@ -1,17 +1,18 @@
using System.Collections.Generic;
using System.Linq;
using SabreTools.Library.DatFiles;
using SabreTools.Library.FileTypes;
using SabreTools.Library.Filtering;
using SabreTools.Library.Tools;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace SabreTools.Library.DatItems
{
/// <summary>
/// Represents Compressed Hunks of Data (CHD) formatted disks which use internal hashes
/// </summary>
[JsonObject("disk")]
public class Disk : DatItem
{
#region Private instance variables
@@ -119,6 +120,7 @@ namespace SabreTools.Library.DatItems
/// Disk dump status
/// </summary>
[JsonProperty("status")]
[JsonConverter(typeof(StringEnumConverter))]
public ItemStatus ItemStatus { get; set; }
/// <summary>
@@ -131,70 +133,6 @@ namespace SabreTools.Library.DatItems
#region Accessors
/// <summary>
/// Get the value of that field as a string, if possible
/// </summary>
public override string GetField(Field field, List<Field> excludeFields)
{
// If the field is to be excluded, return empty string
if (excludeFields.Contains(field))
return string.Empty;
// Handle Disk-specific fields
string fieldValue;
switch (field)
{
case Field.MD5:
fieldValue = MD5;
break;
#if NET_FRAMEWORK
case Field.RIPEMD160:
fieldValue = RIPEMD160;
break;
#endif
case Field.SHA1:
fieldValue = SHA1;
break;
case Field.SHA256:
fieldValue = SHA256;
break;
case Field.SHA384:
fieldValue = SHA384;
break;
case Field.SHA512:
fieldValue = SHA512;
break;
case Field.Merge:
fieldValue = MergeTag;
break;
case Field.Region:
fieldValue = Region;
break;
case Field.Index:
fieldValue = Index;
break;
case Field.Writable:
fieldValue = Writable?.ToString();
break;
case Field.Optional:
fieldValue = Optional?.ToString();
break;
case Field.Status:
fieldValue = ItemStatus.ToString();
break;
// For everything else, use the base method
default:
return base.GetField(field, excludeFields);
}
// Make sure we don't return null
if (string.IsNullOrEmpty(fieldValue))
fieldValue = string.Empty;
return fieldValue;
}
/// <summary>
/// Set fields with given values
/// </summary>

View File

@@ -1,5 +1,7 @@
using System;
using Newtonsoft.Json;
namespace SabreTools.Library.DatItems
{
/// <summary>

View File

@@ -11,6 +11,7 @@ namespace SabreTools.Library.DatItems
/// <summary>
/// Represents the information specific to a set/game/machine
/// </summary>
[JsonObject("machine")]
public class Machine : ICloneable
{
#region Fields
@@ -330,185 +331,6 @@ namespace SabreTools.Library.DatItems
#region Accessors
/// <summary>
/// Get the value of that field as a string, if possible
/// </summary>
public string GetField(Field field, List<Field> excludeFields)
{
// If the field is to be excluded, return empty string
if (excludeFields.Contains(field))
return string.Empty;
string fieldValue = null;
switch (field)
{
#region Common
case Field.MachineName:
fieldValue = Name;
break;
case Field.Comment:
fieldValue = Comment;
break;
case Field.Description:
fieldValue = Description;
break;
case Field.Year:
fieldValue = Year;
break;
case Field.Manufacturer:
fieldValue = Manufacturer;
break;
case Field.Publisher:
fieldValue = Publisher;
break;
case Field.Category:
fieldValue = Category;
break;
case Field.RomOf:
fieldValue = RomOf;
break;
case Field.CloneOf:
fieldValue = CloneOf;
break;
case Field.SampleOf:
fieldValue = SampleOf;
break;
case Field.MachineType:
fieldValue = MachineType.ToString();
break;
#endregion
#region AttractMode
case Field.Players:
fieldValue = Players;
break;
case Field.Rotation:
fieldValue = Rotation;
break;
case Field.Control:
fieldValue = Control;
break;
case Field.SupportStatus:
fieldValue = Status;
break;
case Field.DisplayCount:
fieldValue = DisplayCount;
break;
case Field.DisplayType:
fieldValue = DisplayType;
break;
case Field.Buttons:
fieldValue = Buttons;
break;
#endregion
#region ListXML
case Field.SourceFile:
fieldValue = SourceFile;
break;
case Field.Runnable:
fieldValue = Runnable.ToString();
break;
case Field.DeviceReferences:
fieldValue = string.Join(";", DeviceReferences ?? new List<ListXmlDeviceReference>());
break;
case Field.Slots:
fieldValue = string.Join(";", Slots ?? new List<ListXmlSlot>());
break;
case Field.Infos:
fieldValue = string.Join(";", (Infos ?? new List<ListXmlInfo>()).Select(i => $"{i.Name}={i.Value}"));
break;
#endregion
#region Logiqx
case Field.Board:
fieldValue = Board;
break;
case Field.RebuildTo:
fieldValue = RebuildTo;
break;
#endregion
#region Logiqx EmuArc
case Field.TitleID:
fieldValue = TitleID;
break;
case Field.Developer:
fieldValue = Developer;
break;
case Field.Genre:
fieldValue = Genre;
break;
case Field.Subgenre:
fieldValue = Subgenre;
break;
case Field.Ratings:
fieldValue = Ratings;
break;
case Field.Score:
fieldValue = Score;
break;
case Field.Enabled:
fieldValue = Enabled;
break;
case Field.HasCrc:
fieldValue = HasCrc.ToString();
break;
case Field.RelatedTo:
fieldValue = RelatedTo;
break;
#endregion
#region OpenMSX
case Field.GenMSXID:
fieldValue = GenMSXID;
break;
case Field.System:
fieldValue = System;
break;
case Field.Country:
fieldValue = Country;
break;
#endregion
#region SoftwareList
case Field.Supported:
fieldValue = Supported.ToString();
break;
case Field.SharedFeatures:
fieldValue = string.Join(";", (SharedFeatures ?? new List<SoftwareListSharedFeature>()).Select(i => $"{i.Name}={i.Value}"));
break;
case Field.DipSwitches:
// TODO: There is no possible way this will work... use placeholder for now
fieldValue = "dipswitches";
break;
#endregion
default:
return null;
}
// Make sure we don't return null
if (string.IsNullOrEmpty(fieldValue))
fieldValue = string.Empty;
return fieldValue;
}
/// <summary>
/// Set fields with given values
/// </summary>

View File

@@ -10,6 +10,7 @@ namespace SabreTools.Library.DatItems
/// <summary>
/// Represents release information about a set
/// </summary>
[JsonObject("release")]
public class Release : DatItem
{
#region Fields
@@ -42,44 +43,6 @@ namespace SabreTools.Library.DatItems
#region Accessors
/// <summary>
/// Get the value of that field as a string, if possible
/// </summary>
public override string GetField(Field field, List<Field> excludeFields)
{
// If the field is to be excluded, return empty string
if (excludeFields.Contains(field))
return string.Empty;
// Handle Release-specific fields
string fieldValue;
switch (field)
{
case Field.Region:
fieldValue = Region;
break;
case Field.Language:
fieldValue = Language;
break;
case Field.Date:
fieldValue = Date;
break;
case Field.Default:
fieldValue = Default?.ToString();
break;
// For everything else, use the base method
default:
return base.GetField(field, excludeFields);
}
// Make sure we don't return null
if (string.IsNullOrEmpty(fieldValue))
fieldValue = string.Empty;
return fieldValue;
}
/// <summary>
/// Set fields with given values
/// </summary>

View File

@@ -3,17 +3,18 @@ using System.Collections.Generic;
using System.Linq;
using SabreTools.Library.Data;
using SabreTools.Library.DatFiles;
using SabreTools.Library.FileTypes;
using SabreTools.Library.Filtering;
using SabreTools.Library.Tools;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace SabreTools.Library.DatItems
{
/// <summary>
/// Represents a generic file within a set
/// </summary>
[JsonObject("rom")]
public class Rom : DatItem
{
#region Private instance variables
@@ -144,6 +145,7 @@ namespace SabreTools.Library.DatItems
/// Rom dump status
/// </summary>
[JsonProperty("status")]
[JsonConverter(typeof(StringEnumConverter))]
public ItemStatus ItemStatus { get; set; }
/// <summary>
@@ -162,82 +164,6 @@ namespace SabreTools.Library.DatItems
#region Accessors
/// <summary>
/// Get the value of that field as a string, if possible
/// </summary>
public override string GetField(Field field, List<Field> excludeFields)
{
// If the field is to be excluded, return empty string
if (excludeFields.Contains(field))
return string.Empty;
// Handle Rom-specific fields
string fieldValue;
switch (field)
{
case Field.Bios:
fieldValue = Bios;
break;
case Field.Size:
fieldValue = Size.ToString();
break;
case Field.CRC:
fieldValue = CRC;
break;
case Field.MD5:
fieldValue = MD5;
break;
#if NET_FRAMEWORK
case Field.RIPEMD160:
fieldValue = RIPEMD160;
break;
#endif
case Field.SHA1:
fieldValue = SHA1;
break;
case Field.SHA256:
fieldValue = SHA256;
break;
case Field.SHA384:
fieldValue = SHA384;
break;
case Field.SHA512:
fieldValue = SHA512;
break;
case Field.Merge:
fieldValue = MergeTag;
break;
case Field.Region:
fieldValue = Region;
break;
case Field.Offset:
fieldValue = Offset;
break;
case Field.Date:
fieldValue = Date;
break;
case Field.Status:
fieldValue = ItemStatus.ToString();
break;
case Field.Optional:
fieldValue = Optional?.ToString();
break;
case Field.Inverted:
fieldValue = Inverted?.ToString();
break;
// For everything else, use the base method
default:
return base.GetField(field, excludeFields);
}
// Make sure we don't return null
if (string.IsNullOrEmpty(fieldValue))
fieldValue = string.Empty;
return fieldValue;
}
/// <summary>
/// Set fields with given values
/// </summary>

View File

@@ -1,8 +1,11 @@
namespace SabreTools.Library.DatItems
using Newtonsoft.Json;
namespace SabreTools.Library.DatItems
{
/// <summary>
/// Represents a (usually WAV-formatted) sample to be included for use in the set
/// </summary>
[JsonObject("sample")]
public class Sample : DatItem
{
#region Constructors