mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Make items XML serializable
This commit is contained in:
@@ -44,7 +44,7 @@ namespace SabreTools.Library.DatItems
|
||||
/// Name of the item
|
||||
/// </summary>
|
||||
[JsonProperty("name")]
|
||||
[XmlAttribute("name")]
|
||||
[XmlElement("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@@ -61,6 +61,9 @@ namespace SabreTools.Library.DatItems
|
||||
[XmlElement("size")]
|
||||
public long? Size { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool SizeSpecified { get { return Size != null; } }
|
||||
|
||||
/// <summary>
|
||||
/// File CRC32 hash
|
||||
/// </summary>
|
||||
@@ -187,6 +190,9 @@ namespace SabreTools.Library.DatItems
|
||||
[XmlElement("status")]
|
||||
public ItemStatus ItemStatus { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool ItemStatusSpecified { get { return ItemStatus != ItemStatus.NULL && ItemStatus != ItemStatus.None; } }
|
||||
|
||||
/// <summary>
|
||||
/// Determine if the rom is optional in the set
|
||||
/// </summary>
|
||||
@@ -194,6 +200,9 @@ namespace SabreTools.Library.DatItems
|
||||
[XmlElement("optional")]
|
||||
public bool? Optional { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool OptionalSpecified { get { return Optional != null; } }
|
||||
|
||||
/// <summary>
|
||||
/// Determine if the CRC32 hash is inverted
|
||||
/// </summary>
|
||||
@@ -201,6 +210,9 @@ namespace SabreTools.Library.DatItems
|
||||
[XmlElement("inverted")]
|
||||
public bool? Inverted { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool InvertedSpecified { get { return Inverted != null; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#region AttractMode
|
||||
@@ -230,6 +242,9 @@ namespace SabreTools.Library.DatItems
|
||||
[XmlElement("original")]
|
||||
public Original Original { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool OriginalSpecified { get { return Original != null && Original != default; } }
|
||||
|
||||
/// <summary>
|
||||
/// OpenMSX sub item type
|
||||
/// </summary>
|
||||
@@ -238,6 +253,9 @@ namespace SabreTools.Library.DatItems
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public OpenMSXSubType OpenMSXSubType { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool OpenMSXSubTypeSpecified { get { return OpenMSXSubType != OpenMSXSubType.NULL; } }
|
||||
|
||||
/// <summary>
|
||||
/// OpenMSX sub item type
|
||||
/// </summary>
|
||||
@@ -271,6 +289,19 @@ namespace SabreTools.Library.DatItems
|
||||
[XmlElement("dataarea")]
|
||||
public DataArea DataArea { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool DataAreaSpecified
|
||||
{
|
||||
get
|
||||
{
|
||||
return DataArea != null && DataArea != default
|
||||
&& ((DataArea.Name != null && DataArea.Name != default)
|
||||
|| (DataArea.Size != null && DataArea.Size != default)
|
||||
|| (DataArea.Width != null && DataArea.Width != default)
|
||||
|| (DataArea.Endianness != Endianness.NULL));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loading flag
|
||||
/// </summary>
|
||||
@@ -279,6 +310,9 @@ namespace SabreTools.Library.DatItems
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public LoadFlag LoadFlag { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool LoadFlagSpecified { get { return LoadFlag != LoadFlag.NULL; } }
|
||||
|
||||
/// <summary>
|
||||
/// Original hardware part associated with the item
|
||||
/// </summary>
|
||||
@@ -286,6 +320,17 @@ namespace SabreTools.Library.DatItems
|
||||
[XmlElement("part")]
|
||||
public Part Part { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool PartSpecified
|
||||
{
|
||||
get
|
||||
{
|
||||
return Part != null && Part != default
|
||||
&& ((Part.Name != null && Part.Name != default)
|
||||
|| (Part.Interface != null && Part.Interface != default));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SoftwareList value associated with the item
|
||||
/// </summary>
|
||||
@@ -295,49 +340,6 @@ namespace SabreTools.Library.DatItems
|
||||
|
||||
#endregion
|
||||
|
||||
#region XML Serialization Nullable Specifications
|
||||
|
||||
#region Common
|
||||
|
||||
[JsonIgnore]
|
||||
public bool SizeSpecified { get { return Size != null; } }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool ItemStatusSpecified { get { return ItemStatus != ItemStatus.NULL && ItemStatus != ItemStatus.None; } }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool OptionalSpecified { get { return Optional != null; } }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool InvertedSpecified { get { return Inverted != null; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#region OpenMSX
|
||||
|
||||
[JsonIgnore]
|
||||
public bool OriginalSpecified { get { return Original != null && Original != default; } }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool OpenMSXSubTypeSpecified { get { return OpenMSXSubType != OpenMSXSubType.NULL; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#region SoftwareList
|
||||
|
||||
[JsonIgnore]
|
||||
public bool DataAreaSpecified { get { return DataArea != null && DataArea != default; } }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool LoadFlagSpecified { get { return LoadFlag != LoadFlag.NULL; } }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool PartSpecified { get { return Part != null && Part != default; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion // XML Serialization Nullable Specifications
|
||||
|
||||
#endregion // Fields
|
||||
|
||||
#region Accessors
|
||||
|
||||
Reference in New Issue
Block a user