Promote Port

This commit is contained in:
Matt Nadareski
2020-09-02 17:22:31 -07:00
parent 007510cc0f
commit 08303b81de
12 changed files with 301 additions and 131 deletions

View File

@@ -161,6 +161,12 @@ namespace SabreTools.Library.DatFiles
[JsonIgnore]
public long MediaCount { get; private set; } = 0;
/// <summary>
/// Number of Port items
/// </summary>
[JsonIgnore]
public long PortCount { get; private set; } = 0;
/// <summary>
/// Number of RamOption items
/// </summary>
@@ -584,6 +590,9 @@ namespace SabreTools.Library.DatFiles
SHA1Count += (string.IsNullOrWhiteSpace((item as Media).SHA1) ? 0 : 1);
SHA256Count += (string.IsNullOrWhiteSpace((item as Media).SHA256) ? 0 : 1);
break;
case ItemType.Port:
PortCount++;
break;
case ItemType.RamOption:
RamOptionCount++;
break;
@@ -752,6 +761,9 @@ namespace SabreTools.Library.DatFiles
SHA1Count -= (string.IsNullOrWhiteSpace((item as Media).SHA1) ? 0 : 1);
SHA256Count -= (string.IsNullOrWhiteSpace((item as Media).SHA256) ? 0 : 1);
break;
case ItemType.Port:
PortCount--;
break;
case ItemType.RamOption:
RamOptionCount--;
break;

View File

@@ -259,6 +259,9 @@ namespace SabreTools.Library.DatFiles
case ItemType.Media:
datItem = datItemObj.ToObject<Media>();
break;
case ItemType.Port:
datItem = datItemObj.ToObject<Port>();
break;
case ItemType.RamOption:
datItem = datItemObj.ToObject<RamOption>();
break;

View File

@@ -391,6 +391,27 @@ namespace SabreTools.Library.DatFiles
reader.Read();
break;
case "port":
var port = new Port
{
Tag = reader.GetAttribute("tag"),
Source = new Source
{
Index = indexId,
Name = filename,
},
};
// Now read the internal tags
ReadPort(reader.ReadSubtree(), port);
datItems.Add(port);
// Skip the port now that we've processed it
reader.Skip();
break;
case "rom":
datItems.Add(new Rom
{
@@ -546,23 +567,6 @@ namespace SabreTools.Library.DatFiles
reader.Skip();
break;
case "port":
var port = new Port();
port.Tag = reader.GetAttribute("tag");
// Now read the internal tags
ReadPort(reader.ReadSubtree(), port);
// Ensure the list exists
if (machine.Ports == null)
machine.Ports = new List<Port>();
machine.Ports.Add(port);
// Skip the port now that we've processed it
reader.Skip();
break;
default:
reader.Read();
break;
@@ -1303,24 +1307,6 @@ namespace SabreTools.Library.DatFiles
xtw.WriteEndElement();
}
}
if (datItem.Machine.Ports != null)
{
foreach (var port in datItem.Machine.Ports)
{
xtw.WriteStartElement("port");
xtw.WriteOptionalAttributeString("tag", port.Tag);
if (port.Analogs != null)
{
foreach (var analog in port.Analogs)
{
xtw.WriteStartElement("analog");
xtw.WriteOptionalAttributeString("mask", analog.Mask);
xtw.WriteEndElement();
}
}
xtw.WriteEndElement();
}
}
xtw.Flush();
}
@@ -1590,6 +1576,22 @@ namespace SabreTools.Library.DatFiles
xtw.WriteEndElement();
break;
case ItemType.Port:
var port = datItem as Port;
xtw.WriteStartElement("port");
xtw.WriteOptionalAttributeString("tag", port.Tag);
if (port.Analogs != null)
{
foreach (var analog in port.Analogs)
{
xtw.WriteStartElement("analog");
xtw.WriteOptionalAttributeString("mask", analog.Mask);
xtw.WriteEndElement();
}
}
xtw.WriteEndElement();
break;
case ItemType.RamOption:
var ramOption = datItem as RamOption;
xtw.WriteStartElement("ramoption");

View File

@@ -1229,14 +1229,6 @@ namespace SabreTools.Library.DatFiles
xtw.WriteEndElement();
break;
case ItemType.Analog:
var analog = datItem as Analog;
xtw.WriteStartElement("file");
xtw.WriteAttributeString("type", "analog");
xtw.WriteOptionalAttributeString("mask", analog.Mask);
xtw.WriteEndElement();
break;
case ItemType.Archive:
var archive = datItem as Archive;
xtw.WriteStartElement("file");
@@ -1471,6 +1463,23 @@ namespace SabreTools.Library.DatFiles
xtw.WriteEndElement();
break;
case ItemType.Port:
var port = datItem as Port;
xtw.WriteStartElement("file");
xtw.WriteAttributeString("type", "port");
xtw.WriteOptionalAttributeString("tag", port.Tag);
if (port.Analogs != null)
{
foreach (var analog in port.Analogs)
{
xtw.WriteStartElement("analog");
xtw.WriteOptionalAttributeString("mask", analog.Mask);
xtw.WriteEndElement();
}
}
xtw.WriteEndElement();
break;
case ItemType.RamOption:
var ramOption = datItem as RamOption;
xtw.WriteStartElement("file");