diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs index 0cd12f12..bdb3368c 100644 --- a/SabreTools.Library/DatFiles/DatHeader.cs +++ b/SabreTools.Library/DatFiles/DatHeader.cs @@ -203,14 +203,41 @@ namespace SabreTools.Library.DatFiles [JsonProperty("build")] public string Build { get; set; } - // TODO: Implement the following header values: - // - romcenter.plugin - // - romcenter.rommode (merged|split|unmerged) "split" - // - romcenter.biosmode (merged|split|unmerged) "split" - // - romcenter.samplemode (merged|unmerged) "merged" - // - romcenter.lockrommode (yes|no) "no" - // - romcenter.lockbiosmode (yes|no) "no" - // - romcenter.locksamplemode (yes|no) "no" + /// + /// RomCenter rom mode + /// + [JsonProperty("rommode")] + public string RomMode { get; set; } // (merged|split|unmerged) "split" + + /// + /// RomCenter bios mode + /// + [JsonProperty("biosmode")] + public string BiosMode { get; set; } // (merged|split|unmerged) "split" + + /// + /// RomCenter sample mode + /// + [JsonProperty("samplemode")] + public string SampleMode { get; set; } // (merged|unmerged) "merged" + + /// + /// RomCenter lock rom mode + /// + [JsonProperty("lockrommode")] + public bool? LockRomMode { get; set; } // (yes|no) "no" + + /// + /// RomCenter lock bios mode + /// + [JsonProperty("lockbiosmode")] + public bool? LockBiosMode { get; set; } // (yes|no) "no" + + /// + /// RomCenter lock sample mode + /// + [JsonProperty("locksamplemode")] + public bool? LockSampleMode { get; set; } // (yes|no) "no" #endregion @@ -229,7 +256,7 @@ namespace SabreTools.Library.DatFiles /// /// System /// - /// Known as "plugin" in RomCenter + /// Known as "plugin" in Logiqx and RomCenter [JsonProperty("system")] public string System { get; set; } @@ -260,7 +287,7 @@ namespace SabreTools.Library.DatFiles // TODO: Implement the following header values: // - newdat.datversionurl (currently reads and writes to Header.Url, not strictly correct) // - newdat.daturl (currently writes to Header.Url, not strictly correct) - // - newdat.daturl[fileName] (currently writes to Header.FileName, not strictly correct) + // - newdat.daturl[fileName] (currently writes to Header.FileName + ".zip", not strictly correct) // - newdat.imurl (currently writes to Header.Url, not strictly correct) // - search[...].to.find[operation, value (Int32?)] // - search[...].to[value, default (true|false), auto (true, false)] diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs index 0c240066..b97f0b90 100644 --- a/SabreTools.Library/DatFiles/Json.cs +++ b/SabreTools.Library/DatFiles/Json.cs @@ -234,6 +234,36 @@ namespace SabreTools.Library.DatFiles Header.Build = (Header.Build == null ? content : Header.Build); break; + case "rommode": + content = jtr.ReadAsString(); + Header.RomMode = (Header.RomMode == null ? content : Header.RomMode); + break; + + case "biosmode": + content = jtr.ReadAsString(); + Header.BiosMode = (Header.BiosMode == null ? content : Header.BiosMode); + break; + + case "samplemode": + content = jtr.ReadAsString(); + Header.Build = (Header.SampleMode == null ? content : Header.SampleMode); + break; + + case "lockrommode": + content = jtr.ReadAsString(); + Header.LockRomMode = (Header.LockRomMode == null ? content.AsYesNo() : Header.LockRomMode); + break; + + case "lockbiosmode": + content = jtr.ReadAsString(); + Header.LockBiosMode = (Header.LockBiosMode == null ? content.AsYesNo() : Header.LockBiosMode); + break; + + case "locksamplemode": + content = jtr.ReadAsString(); + Header.LockSampleMode = (Header.LockSampleMode == null ? content.AsYesNo() : Header.LockSampleMode); + break; + #endregion #region OfflineList @@ -1141,6 +1171,69 @@ namespace SabreTools.Library.DatFiles jtw.WriteValue(Header.Build); } + if (!string.IsNullOrWhiteSpace(Header.RomMode)) + { + jtw.WritePropertyName("rommode"); + jtw.WriteValue(Header.RomMode); + } + + if (!string.IsNullOrWhiteSpace(Header.BiosMode)) + { + jtw.WritePropertyName("biosmode"); + jtw.WriteValue(Header.BiosMode); + } + + if (!string.IsNullOrWhiteSpace(Header.SampleMode)) + { + jtw.WritePropertyName("samplemode"); + jtw.WriteValue(Header.SampleMode); + } + + if (Header.LockRomMode != null) + { + switch (Header.LockRomMode) + { + case true: + jtw.WritePropertyName("lockrommode"); + jtw.WriteValue("yes"); + break; + case false: + jtw.WritePropertyName("lockrommode"); + jtw.WriteValue("no"); + break; + } + } + + if (Header.LockBiosMode != null) + { + switch (Header.LockBiosMode) + { + case true: + jtw.WritePropertyName("lockbiosmode"); + jtw.WriteValue("yes"); + break; + case false: + jtw.WritePropertyName("lockbiosmode"); + jtw.WriteValue("no"); + break; + } + } + + if (Header.LockSampleMode != null) + { + switch (Header.LockSampleMode) + { + case true: + jtw.WritePropertyName("locksamplemode"); + jtw.WriteValue("yes"); + break; + case false: + jtw.WritePropertyName("locksamplemode"); + jtw.WriteValue("no"); + break; + } + } + #endregion #region OfflineList diff --git a/SabreTools.Library/DatFiles/Logiqx.cs b/SabreTools.Library/DatFiles/Logiqx.cs index b09c1cca..4679d024 100644 --- a/SabreTools.Library/DatFiles/Logiqx.cs +++ b/SabreTools.Library/DatFiles/Logiqx.cs @@ -237,35 +237,23 @@ namespace SabreTools.Library.DatFiles if (Header.System == null) Header.System = reader.GetAttribute("plugin"); - if (reader.GetAttribute("rommode") != null) - { - // (merged|split|unmerged) "split" - } + if (Header.RomMode == null) + Header.RomMode = reader.GetAttribute("rommode"); - if (reader.GetAttribute("biosmode") != null) - { - // (merged|split|unmerged) "split" - } + if (Header.BiosMode == null) + Header.BiosMode = reader.GetAttribute("biosmode"); - if (reader.GetAttribute("samplemode") != null) - { - // (merged|unmerged) "merged" - } + if (Header.SampleMode == null) + Header.SampleMode = reader.GetAttribute("samplemode"); - if (reader.GetAttribute("lockrommode") != null) - { - // (yes|no) "no" - } + if (Header.LockRomMode == null) + Header.LockRomMode = reader.GetAttribute("lockrommode").AsYesNo(); - if (reader.GetAttribute("lockbiosmode") != null) - { - // (yes|no) "no" - } + if (Header.LockBiosMode == null) + Header.LockBiosMode = reader.GetAttribute("lockbiosmode").AsYesNo(); - if (reader.GetAttribute("locksamplemode") != null) - { - // (yes|no) "no" - } + if (Header.LockSampleMode == null) + Header.LockSampleMode = reader.GetAttribute("locksamplemode").AsYesNo(); reader.Read(); break; @@ -863,6 +851,68 @@ namespace SabreTools.Library.DatFiles xtw.WriteEndElement(); } + if (Header.System != null + || Header.RomMode != null || Header.LockRomMode != null + || Header.BiosMode != null || Header.LockBiosMode != null + || Header.SampleMode != null || Header.LockSampleMode != null) + { + xtw.WriteStartElement("romcenter"); + + if (!string.IsNullOrWhiteSpace(Header.System)) + xtw.WriteAttributeString("plugin", Header.System); + + if (!string.IsNullOrWhiteSpace(Header.RomMode)) + xtw.WriteAttributeString("rommode", Header.RomMode); + + if (!string.IsNullOrWhiteSpace(Header.BiosMode)) + xtw.WriteAttributeString("biosmode", Header.BiosMode); + + if (!string.IsNullOrWhiteSpace(Header.SampleMode)) + xtw.WriteAttributeString("samplemode", Header.SampleMode); + + if (Header.LockRomMode != null) + { + switch (Header.LockRomMode) + { + case true: + xtw.WriteAttributeString("lockrommode", "yes"); + break; + case false: + xtw.WriteAttributeString("lockrommode", "no"); + break; + } + } + + if (Header.LockBiosMode != null) + { + switch (Header.LockBiosMode) + { + case true: + xtw.WriteAttributeString("lockbiosmode", "yes"); + break; + case false: + xtw.WriteAttributeString("lockbiosmode", "no"); + break; + } + } + + if (Header.LockSampleMode != null) + { + switch (Header.LockSampleMode) + { + case true: + xtw.WriteAttributeString("locksamplemode", "yes"); + break; + case false: + xtw.WriteAttributeString("locksamplemode", "no"); + break; + } + } + + // End romcenter + xtw.WriteEndElement(); + } + // End header xtw.WriteEndElement(); diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs index 86611b5d..20d27c3c 100644 --- a/SabreTools.Library/DatFiles/SeparatedValue.cs +++ b/SabreTools.Library/DatFiles/SeparatedValue.cs @@ -206,6 +206,30 @@ namespace SabreTools.Library.DatFiles Header.Build = (Header.Build == null ? value : Header.Build); break; + case "DatFile.RomMode": + Header.RomMode = (Header.RomMode == null ? value : Header.RomMode); + break; + + case "DatFile.BiosMode": + Header.BiosMode = (Header.BiosMode == null ? value : Header.BiosMode); + break; + + case "DatFile.SampleMode": + Header.SampleMode = (Header.SampleMode == null ? value : Header.SampleMode); + break; + + case "DatFile.LockRomMode": + Header.LockRomMode = (Header.LockRomMode == null ? value.AsYesNo() : Header.LockRomMode); + break; + + case "DatFile.LockBiosMode": + Header.LockBiosMode = (Header.LockBiosMode == null ? value.AsYesNo() : Header.LockBiosMode); + break; + + case "DatFile.LockSampleMode": + Header.LockSampleMode = (Header.LockSampleMode == null ? value.AsYesNo() : Header.LockSampleMode); + break; + #endregion #region OfflineList @@ -810,6 +834,36 @@ namespace SabreTools.Library.DatFiles case "build": return "DatFile.Build"; + case "rommode": + case "rom mode": + case "rom-mode": + return "DatFile.RomMode"; + + case "biosmode": + case "bios mode": + case "bios-mode": + return "DatFile.BiosMode"; + + case "samplemode": + case "sample mode": + case "sample-mode": + return "DatFile.SampleMode"; + + case "lockrommode": + case "lock rom mode": + case "lock-rom-mode": + return "DatFile.LockRomMode"; + + case "lockbiosmode": + case "lock bios mode": + case "lock-bios-mode": + return "DatFile.LockBiosMode"; + + case "locksamplemode": + case "lock sample mode": + case "lock-sample-mode": + return "DatFile.LockSampleMode"; + #endregion #region OfflineList