diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs index 99d57f29..17f1670f 100644 --- a/SabreTools.Library/DatFiles/DatHeader.cs +++ b/SabreTools.Library/DatFiles/DatHeader.cs @@ -215,6 +215,34 @@ namespace SabreTools.Library.DatFiles #endregion + #region OfflineList Fields + + /// + /// System + /// + [JsonProperty("system")] + public string System { get; set; } + + /// + /// Screenshots width + /// + [JsonProperty("screenshotswidth")] + public string ScreenshotsWidth { get; set; } + + /// + /// Screenshots height + /// + [JsonProperty("screenshotsheight")] + public string ScreenshotsHeight { get; set; } + + /// + /// Rom title + /// + [JsonProperty("romtitle")] + public string RomTitle { get; set; } + + #endregion + #region Write pre-processing /// diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs index c0746eb6..1e5676ae 100644 --- a/SabreTools.Library/DatFiles/Json.cs +++ b/SabreTools.Library/DatFiles/Json.cs @@ -236,6 +236,30 @@ namespace SabreTools.Library.DatFiles #endregion + #region OfflineList + + case "system": + content = jtr.ReadAsString(); + Header.System = (Header.System == null ? content : Header.System); + break; + + case "screenshotswidth": + content = jtr.ReadAsString(); + Header.ScreenshotsWidth = (Header.ScreenshotsWidth == null ? content : Header.ScreenshotsWidth); + break; + + case "screenshotsheight": + content = jtr.ReadAsString(); + Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? content : Header.ScreenshotsHeight); + break; + + case "romtitle": + content = jtr.ReadAsString(); + Header.RomTitle = (Header.MameConfig == null ? content : Header.RomTitle); + break; + + #endregion + default: break; } @@ -1042,6 +1066,34 @@ namespace SabreTools.Library.DatFiles #endregion + #region OfflineList + + if (!string.IsNullOrWhiteSpace(Header.System)) + { + jtw.WritePropertyName("system"); + jtw.WriteValue(Header.System); + } + + if (!string.IsNullOrWhiteSpace(Header.ScreenshotsWidth)) + { + jtw.WritePropertyName("screenshotswidth"); + jtw.WriteValue(Header.ScreenshotsWidth); + } + + if (!string.IsNullOrWhiteSpace(Header.ScreenshotsHeight)) + { + jtw.WritePropertyName("screenshotsheight"); + jtw.WriteValue(Header.ScreenshotsHeight); + } + + if (!string.IsNullOrWhiteSpace(Header.RomTitle)) + { + jtw.WritePropertyName("romtitle"); + jtw.WriteValue(Header.RomTitle); + } + + #endregion + // End header jtw.WriteEndObject(); diff --git a/SabreTools.Library/DatFiles/OfflineList.cs b/SabreTools.Library/DatFiles/OfflineList.cs index 60e87a17..c316a639 100644 --- a/SabreTools.Library/DatFiles/OfflineList.cs +++ b/SabreTools.Library/DatFiles/OfflineList.cs @@ -138,17 +138,23 @@ namespace SabreTools.Library.DatFiles break; case "system": - reader.ReadElementContentAsString(); + content = reader.ReadElementContentAsString(); + Header.System = (Header.System == null ? content : Header.System); break; + // TODO: Int32? case "screenshotswidth": - reader.ReadElementContentAsString(); // Int32? + content = reader.ReadElementContentAsString(); + Header.ScreenshotsWidth = (Header.ScreenshotsWidth == null ? content : Header.ScreenshotsWidth); break; + // TODO: Int32? case "screenshotsheight": - reader.ReadElementContentAsString(); // Int32? + content = reader.ReadElementContentAsString(); + Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? content : Header.ScreenshotsHeight); break; + // TODO: Use header values case "infos": ReadInfos(reader.ReadSubtree()); @@ -156,6 +162,7 @@ namespace SabreTools.Library.DatFiles reader.Skip(); break; + // TODO: Use header values case "canopen": ReadCanOpen(reader.ReadSubtree()); @@ -163,6 +170,7 @@ namespace SabreTools.Library.DatFiles reader.Skip(); break; + // TODO: Use header values case "newdat": ReadNewDat(reader.ReadSubtree()); @@ -170,6 +178,7 @@ namespace SabreTools.Library.DatFiles reader.Skip(); break; + // TODO: Use header values case "search": ReadSearch(reader.ReadSubtree()); @@ -178,7 +187,8 @@ namespace SabreTools.Library.DatFiles break; case "romtitle": - reader.ReadElementContentAsString(); + content = reader.ReadElementContentAsString(); + Header.RomTitle = (Header.RomTitle == null ? content : Header.RomTitle); break; default: @@ -840,9 +850,9 @@ namespace SabreTools.Library.DatFiles xtw.WriteStartElement("configuration"); xtw.WriteElementString("datName", Header.Name); xtw.WriteElementString("datVersion", Items.TotalCount.ToString()); - xtw.WriteElementString("system", "none"); - xtw.WriteElementString("screenshotsWidth", "240"); - xtw.WriteElementString("screenshotsHeight", "160"); + xtw.WriteElementString("system", Header.System ?? string.Empty); + xtw.WriteElementString("screenshotsWidth", Header.ScreenshotsWidth ?? string.Empty); + xtw.WriteElementString("screenshotsHeight", Header.ScreenshotsHeight ?? string.Empty); xtw.WriteStartElement("infos"); @@ -985,7 +995,7 @@ namespace SabreTools.Library.DatFiles // End search xtw.WriteEndElement(); - xtw.WriteElementString("romTitle", "%u - %n"); + xtw.WriteElementString("romTitle", Header.RomTitle ?? "%u - %n"); // End configuration xtw.WriteEndElement(); diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs index 8d55e357..603dcf32 100644 --- a/SabreTools.Library/DatFiles/SeparatedValue.cs +++ b/SabreTools.Library/DatFiles/SeparatedValue.cs @@ -208,6 +208,26 @@ namespace SabreTools.Library.DatFiles #endregion + #region OfflineList + + case "DatFile.System": + Header.System = (Header.System == null ? value : Header.System); + break; + + case "DatFile.ScreenshotsWidth": + Header.ScreenshotsWidth = (Header.ScreenshotsWidth == null ? value : Header.ScreenshotsWidth); + break; + + case "DatFile.ScreenshotsHeight": + Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? value : Header.ScreenshotsHeight); + break; + + case "DatFile.RomTitle": + Header.RomTitle = (Header.RomTitle == null ? value : Header.RomTitle); + break; + + #endregion + #endregion // DatFile #region Machine @@ -766,6 +786,34 @@ namespace SabreTools.Library.DatFiles #endregion + #region OfflineList + + case "system": + return "DatFile.System"; + + case "screenshotwidth": + case "screenshotswidth": + case "screenshot width": + case "screenshot-width": + case "screenshots width": + case "screenshots-width": + return "DatFile.ScreenshotsWidth"; + + case "screenshotheight": + case "screenshotsheight": + case "screenshot height": + case "screenshot-height": + case "screenshots height": + case "screenshots-height": + return "DatFile.ScreenshotsHeight"; + + case "romtitle": + case "rom title": + case "rom-title": + return "DatFile.RomTitle"; + + #endregion + #endregion // DatFile #region Machine