Wire up infos for OfflineList

This commit is contained in:
Matt Nadareski
2020-08-20 16:20:22 -07:00
parent 3c5931fce8
commit 0b782557b9
4 changed files with 112 additions and 180 deletions

View File

@@ -236,6 +236,11 @@ namespace SabreTools.Library.DatFiles
[JsonProperty("screenshotsheight")] [JsonProperty("screenshotsheight")]
public string ScreenshotsHeight { get; set; } public string ScreenshotsHeight { get; set; }
/// <summary>
/// OfflineList info list
/// </summary>
public List<Tuple<string, bool?, bool?, bool?>> Infos { get; set; }
/// <summary> /// <summary>
/// Rom title /// Rom title
/// </summary> /// </summary>

View File

@@ -253,6 +253,64 @@ namespace SabreTools.Library.DatFiles
Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? content : Header.ScreenshotsHeight); Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? content : Header.ScreenshotsHeight);
break; break;
case "infos":
Header.Infos = new List<Tuple<string, bool?, bool?, bool?>>();
jtr.Read(); // Start Array
while (!sr.EndOfStream)
{
jtr.Read(); // Start object (or end array)
if (jtr.TokenType == JsonToken.EndArray)
break;
// Get default values
string nameValue = string.Empty;
bool? visibleValue = null;
bool? inNamingOptionValue = null;
bool? defaultValue = null;
jtr.Read();
while (!sr.EndOfStream)
{
// If we hit the end of the machine, return
if (jtr.TokenType == JsonToken.EndObject)
return;
// We don't care about anything except properties
if (jtr.TokenType != JsonToken.PropertyName)
{
jtr.Read();
continue;
}
switch (jtr.Value)
{
case "name":
nameValue = jtr.ReadAsString();
break;
case "visible":
visibleValue = jtr.ReadAsString().AsYesNo();
break;
case "inNamingOption":
inNamingOptionValue = jtr.ReadAsString().AsYesNo();
break;
case "default":
defaultValue = jtr.ReadAsString().AsYesNo();
break;
}
jtr.Read(); // End object
}
// Add the new info tuple
Header.Infos.Add(new Tuple<string, bool?, bool?, bool?>(
nameValue,
visibleValue,
inNamingOptionValue,
defaultValue));
}
break;
case "romtitle": case "romtitle":
content = jtr.ReadAsString(); content = jtr.ReadAsString();
Header.RomTitle = (Header.MameConfig == null ? content : Header.RomTitle); Header.RomTitle = (Header.MameConfig == null ? content : Header.RomTitle);
@@ -1086,6 +1144,27 @@ namespace SabreTools.Library.DatFiles
jtw.WriteValue(Header.ScreenshotsHeight); jtw.WriteValue(Header.ScreenshotsHeight);
} }
if (Header.Infos != null)
{
jtw.WritePropertyName("infos");
jtw.WriteStartArray();
foreach (var info in Header.Infos)
{
jtw.WriteStartObject();
jtw.WritePropertyName("name");
jtw.WriteValue(info.Item1);
jtw.WritePropertyName("visible");
jtw.WriteValue(info.Item2.ToString());
jtw.WritePropertyName("inNamingOption");
jtw.WriteValue(info.Item3.ToString());
jtw.WritePropertyName("default");
jtw.WriteValue(info.Item4.ToString());
jtw.WriteEndObject();
}
jtw.WriteEndArray();
}
if (!string.IsNullOrWhiteSpace(Header.RomTitle)) if (!string.IsNullOrWhiteSpace(Header.RomTitle))
{ {
jtw.WritePropertyName("romtitle"); jtw.WritePropertyName("romtitle");

View File

@@ -7,6 +7,7 @@ using System.Xml;
using SabreTools.Library.Data; using SabreTools.Library.Data;
using SabreTools.Library.DatItems; using SabreTools.Library.DatItems;
using SabreTools.Library.IO; using SabreTools.Library.IO;
using SabreTools.Library.Tools;
namespace SabreTools.Library.DatFiles namespace SabreTools.Library.DatFiles
{ {
@@ -154,7 +155,6 @@ namespace SabreTools.Library.DatFiles
Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? content : Header.ScreenshotsHeight); Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? content : Header.ScreenshotsHeight);
break; break;
// TODO: Use header values
case "infos": case "infos":
ReadInfos(reader.ReadSubtree()); ReadInfos(reader.ReadSubtree());
@@ -208,6 +208,9 @@ namespace SabreTools.Library.DatFiles
if (reader == null) if (reader == null)
return; return;
// Setup the infos object
Header.Infos = new List<Tuple<string, bool?, bool?, bool?>>();
// Otherwise, add what is possible // Otherwise, add what is possible
reader.MoveToContent(); reader.MoveToContent();
@@ -221,104 +224,13 @@ namespace SabreTools.Library.DatFiles
continue; continue;
} }
// Get all infos items // Add all tuples to the info list
switch (reader.Name.ToLowerInvariant()) Header.Infos.Add(new Tuple<string, bool?, bool?, bool?>(
{ reader.Name.ToLowerInvariant(),
case "title": reader.GetAttribute("visible").AsYesNo(),
reader.GetAttribute("visible"); // (true|false) reader.GetAttribute("inNamingOption").AsYesNo(),
reader.GetAttribute("inNamingOption"); // (true|false) reader.GetAttribute("default").AsYesNo()));
reader.GetAttribute("default"); // (true|false)
reader.Read(); reader.Read();
break;
case "location":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "publisher":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "sourcerom":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "savetype":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "romsize":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "releasenumber":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "languagenumber":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "comment":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "romcrc":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "im1crc":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "im2crc":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
case "languages":
reader.GetAttribute("visible"); // (true|false)
reader.GetAttribute("inNamingOption"); // (true|false)
reader.GetAttribute("default"); // (true|false)
reader.Read();
break;
default:
reader.Read();
break;
}
} }
} }
@@ -854,88 +766,22 @@ namespace SabreTools.Library.DatFiles
xtw.WriteElementString("screenshotsWidth", Header.ScreenshotsWidth ?? string.Empty); xtw.WriteElementString("screenshotsWidth", Header.ScreenshotsWidth ?? string.Empty);
xtw.WriteElementString("screenshotsHeight", Header.ScreenshotsHeight ?? string.Empty); xtw.WriteElementString("screenshotsHeight", Header.ScreenshotsHeight ?? string.Empty);
if (Header.Infos != null)
{
xtw.WriteStartElement("infos"); xtw.WriteStartElement("infos");
xtw.WriteStartElement("title"); foreach (var info in Header.Infos)
xtw.WriteAttributeString("visible", "false"); {
xtw.WriteAttributeString("inNamingOption", "true"); xtw.WriteStartElement(info.Item1);
xtw.WriteAttributeString("default", "false"); xtw.WriteAttributeString("visible", info.Item2.ToString());
xtw.WriteEndElement(); xtw.WriteAttributeString("inNamingOption", info.Item3.ToString());
xtw.WriteAttributeString("default", info.Item4.ToString());
xtw.WriteStartElement("location");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "true");
xtw.WriteEndElement();
xtw.WriteStartElement("publisher");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "true");
xtw.WriteEndElement();
xtw.WriteStartElement("sourceRom");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "true");
xtw.WriteEndElement();
xtw.WriteStartElement("saveType");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "true");
xtw.WriteEndElement();
xtw.WriteStartElement("romSize");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "true");
xtw.WriteEndElement();
xtw.WriteStartElement("releaseNumber");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "false");
xtw.WriteEndElement();
xtw.WriteStartElement("languageNumber");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "false");
xtw.WriteEndElement();
xtw.WriteStartElement("comment");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "false");
xtw.WriteEndElement();
xtw.WriteStartElement("romCRC");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "false");
xtw.WriteEndElement();
xtw.WriteStartElement("im1CRC");
xtw.WriteAttributeString("visible", "false");
xtw.WriteAttributeString("inNamingOption", "false");
xtw.WriteAttributeString("default", "false");
xtw.WriteEndElement();
xtw.WriteStartElement("im2CRC");
xtw.WriteAttributeString("visible", "false");
xtw.WriteAttributeString("inNamingOption", "false");
xtw.WriteAttributeString("default", "false");
xtw.WriteEndElement();
xtw.WriteStartElement("languages");
xtw.WriteAttributeString("visible", "true");
xtw.WriteAttributeString("inNamingOption", "true");
xtw.WriteAttributeString("default", "true");
xtw.WriteEndElement(); xtw.WriteEndElement();
}
// End infos // End infos
xtw.WriteEndElement(); xtw.WriteEndElement();
}
xtw.WriteStartElement("canOpen"); xtw.WriteStartElement("canOpen");
xtw.WriteElementString("extension", ".bin"); xtw.WriteElementString("extension", ".bin");

View File

@@ -222,6 +222,8 @@ namespace SabreTools.Library.DatFiles
Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? value : Header.ScreenshotsHeight); Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? value : Header.ScreenshotsHeight);
break; break;
// TODO: Figure out how Header.Infos could be read in
case "DatFile.RomTitle": case "DatFile.RomTitle":
Header.RomTitle = (Header.RomTitle == null ? value : Header.RomTitle); Header.RomTitle = (Header.RomTitle == null ? value : Header.RomTitle);
break; break;