diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs index 3e187393..771f818c 100644 --- a/SabreTools.Library/DatFiles/DatHeader.cs +++ b/SabreTools.Library/DatFiles/DatHeader.cs @@ -13,9 +13,9 @@ namespace SabreTools.Library.DatFiles /// public class DatHeader : ICloneable { - #region Publicly facing variables + #region Fields - #region Data common to most DAT types + #region Common Fields /// /// External name of the DAT @@ -178,6 +178,32 @@ namespace SabreTools.Library.DatFiles #endregion + #region ListXML Fields + + /// + /// Debug build flag + /// + [JsonProperty("debug")] + public bool? Debug { get; set; } = false; + + /// + /// MAME configuration name + /// + [JsonProperty("mameconfig")] + public string MameConfig { get; set; } + + #endregion + + #region Missfile Fields + + /// + /// Output the item name + /// + [JsonIgnore] + public bool UseRomName { get; set; } + + #endregion + #region Write pre-processing /// @@ -224,16 +250,6 @@ namespace SabreTools.Library.DatFiles #endregion - #region Data specific to the Miss DAT type - - /// - /// Output the item name - /// - [JsonIgnore] - public bool UseRomName { get; set; } - - #endregion - #region Depot Information /// diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs index b46d9c3f..f6c8fb80 100644 --- a/SabreTools.Library/DatFiles/Json.cs +++ b/SabreTools.Library/DatFiles/Json.cs @@ -120,6 +120,8 @@ namespace SabreTools.Library.DatFiles string content; switch (jtr.Value) { + #region Common + case "name": content = jtr.ReadAsString(); Header.Name = (Header.Name == null ? content : Header.Name); @@ -180,6 +182,11 @@ namespace SabreTools.Library.DatFiles Header.Comment = (Header.Comment == null ? content : Header.Comment); break; + case "header": + content = jtr.ReadAsString(); + Header.HeaderSkipper = (Header.HeaderSkipper == null ? content : Header.HeaderSkipper); + break; + case "type": // This is exclusive to TruRip XML content = jtr.ReadAsString(); Header.Type = (Header.Type == null ? content : Header.Type); @@ -192,23 +199,34 @@ namespace SabreTools.Library.DatFiles break; - case "forcepacking": - if (Header.ForcePacking == ForcePacking.None) - Header.ForcePacking = jtr.ReadAsString().AsForcePacking(); - - break; - case "forcenodump": if (Header.ForceNodump == ForceNodump.None) Header.ForceNodump = jtr.ReadAsString().AsForceNodump(); break; - case "header": - content = jtr.ReadAsString(); - Header.HeaderSkipper = (Header.HeaderSkipper == null ? content : Header.HeaderSkipper); + case "forcepacking": + if (Header.ForcePacking == ForcePacking.None) + Header.ForcePacking = jtr.ReadAsString().AsForcePacking(); + break; + #endregion + + #region ListXML + + case "debug": + content = jtr.ReadAsString(); + Header.Debug = (Header.Debug == null ? content.AsYesNo() : Header.Debug); + break; + + case "mameconfig": + content = jtr.ReadAsString(); + Header.MameConfig = (Header.MameConfig == null ? content : Header.MameConfig); + break; + + #endregion + default: break; } @@ -875,6 +893,8 @@ namespace SabreTools.Library.DatFiles jtw.WritePropertyName("header"); jtw.WriteStartObject(); + #region Common + jtw.WritePropertyName("name"); jtw.WriteValue(Header.Name); jtw.WritePropertyName("description"); @@ -977,6 +997,32 @@ namespace SabreTools.Library.DatFiles jtw.WriteValue(Header.HeaderSkipper); } + #endregion + + #region ListXML + + if (Header.Debug != null) + { + jtw.WritePropertyName("debug"); + switch (Header.Debug) + { + case true: + jtw.WriteValue("yes")); + break; + case false: + jtw.WriteValue("no"); + break; + } + } + + if (!string.IsNullOrWhiteSpace(Header.MameConfig)) + { + jtw.WritePropertyName("mameconfig"); + jtw.WriteValue(Header.MameConfig); + } + + #endregion + // End header jtw.WriteEndObject(); diff --git a/SabreTools.Library/DatFiles/Listxml.cs b/SabreTools.Library/DatFiles/Listxml.cs index 63f7041d..0ec6c255 100644 --- a/SabreTools.Library/DatFiles/Listxml.cs +++ b/SabreTools.Library/DatFiles/Listxml.cs @@ -66,8 +66,8 @@ namespace SabreTools.Library.DatFiles case "mame": Header.Name = (Header.Name == null ? xtr.GetAttribute("build") : Header.Name); Header.Description = (Header.Description == null ? Header.Name : Header.Description); - string mame_debug = xtr.GetAttribute("debug"); // (yes|no) "no" - string mame_mameconfig = xtr.GetAttribute("mameconfig"); // CDATA + Header.Debug = (Header.Debug == null ? xtr.GetAttribute("debug").AsYesNo() : Header.Debug); + Header.MameConfig = (Header.MameConfig == null ? xtr.GetAttribute("mameconfig") : Header.MameConfig); xtr.Read(); break; @@ -310,6 +310,9 @@ namespace SabreTools.Library.DatFiles reader.Read(); break; + // TODO: Should these be new DatItem types? + // TODO: Should any be additional Machine fields? + case "chip": // string chip_name = reader.GetAttribute("name"); // string chip_tag = reader.GetAttribute("tag"); @@ -665,8 +668,21 @@ namespace SabreTools.Library.DatFiles xtw.WriteStartElement("mame"); xtw.WriteAttributeString("build", Header.Name); - //xtw.WriteAttributeString("debug", Debug); - //xtw.WriteAttributeString("mameconfig", MameConfig); + if (Header.Debug != null) + { + switch (Header.Debug) + { + case true: + xtw.WriteAttributeString("debug", "yes"); + break; + case false: + xtw.WriteAttributeString("debug", "no"); + break; + } + } + + if (!string.IsNullOrEmpty(Header.MameConfig)) + xtw.WriteAttributeString("mameconfig", Header.MameConfig); xtw.Flush(); } diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs index 668d6fd1..de7642d3 100644 --- a/SabreTools.Library/DatFiles/SeparatedValue.cs +++ b/SabreTools.Library/DatFiles/SeparatedValue.cs @@ -116,6 +116,8 @@ namespace SabreTools.Library.DatFiles { #region DatFile + #region Common + case "DatFile.FileName": Header.FileName = (Header.FileName== null ? value : Header.FileName); break; @@ -186,6 +188,20 @@ namespace SabreTools.Library.DatFiles #endregion + #region ListXML + + case "DatFile.Debug": + Header.Debug = (Header.Debug == null ? value.AsYesNo() : Header.Debug); + break; + + case "DatFile.MameConfig": + Header.MameConfig = (Header.MameConfig == null ? value : Header.MameConfig); + break; + + #endregion + + #endregion // DatFile + #region Machine #region Common @@ -654,6 +670,8 @@ namespace SabreTools.Library.DatFiles { #region DatFile + #region Common + case "file": case "filename": case "file name": @@ -721,6 +739,20 @@ namespace SabreTools.Library.DatFiles #endregion + #region ListXML + + case "debug": + return "DatFile.Debug"; + + case "mameconfig": + case "mame config": + case "mame-config": + return "DatFile.MameConfig"; + + #endregion + + #endregion // DatFile + #region Machine #region Common