diff --git a/SabreTools.Core/Enums.cs b/SabreTools.Core/Enums.cs index 6d619839..587a9e7a 100644 --- a/SabreTools.Core/Enums.cs +++ b/SabreTools.Core/Enums.cs @@ -565,6 +565,9 @@ namespace SabreTools.Core AltName, AltTitle, + // Rom (Logiqx) + MIA, + // Rom (OpenMSX) Original, OpenMSXSubType, diff --git a/SabreTools.Core/Tools/Converters.cs b/SabreTools.Core/Tools/Converters.cs index 3d849507..653489d1 100644 --- a/SabreTools.Core/Tools/Converters.cs +++ b/SabreTools.Core/Tools/Converters.cs @@ -449,6 +449,10 @@ namespace SabreTools.Core.Tools case "alt-romtitle": return DatItemField.AltTitle; + // Rom (Logiqx) + case "mia": + return DatItemField.MIA; + // Rom (OpenMSX) case "original": return DatItemField.Original; diff --git a/SabreTools.DatFiles/Formats/Logiqx.cs b/SabreTools.DatFiles/Formats/Logiqx.cs index 47b51cd7..b94c1bbe 100644 --- a/SabreTools.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.DatFiles/Formats/Logiqx.cs @@ -606,6 +606,7 @@ namespace SabreTools.DatFiles.Formats ItemStatus = reader.GetAttribute("status").AsItemStatus(), Date = CleanDate(reader.GetAttribute("date")), Inverted = reader.GetAttribute("inverted").AsYesNo(), + MIA = reader.GetAttribute("mia").AsYesNo(), Source = new Source { @@ -1090,6 +1091,7 @@ namespace SabreTools.DatFiles.Formats xtw.WriteOptionalAttributeString("date", rom.Date); xtw.WriteOptionalAttributeString("status", rom.ItemStatus.FromItemStatus(false)); xtw.WriteOptionalAttributeString("inverted", rom.Inverted.FromYesNo()); + xtw.WriteOptionalAttributeString("mia", rom.MIA.FromYesNo()); xtw.WriteEndElement(); break; diff --git a/SabreTools.DatFiles/Setter.cs b/SabreTools.DatFiles/Setter.cs index a54e51dd..6f3e1e58 100644 --- a/SabreTools.DatFiles/Setter.cs +++ b/SabreTools.DatFiles/Setter.cs @@ -1123,6 +1123,9 @@ namespace SabreTools.DatFiles if (DatItemMappings.Keys.Contains(DatItemField.AltTitle)) rom.AltTitle = DatItemMappings[DatItemField.AltTitle]; + if (DatItemMappings.Keys.Contains(DatItemField.MIA)) + rom.MIA = DatItemMappings[DatItemField.MIA].AsYesNo(); + #endregion #region OpenMSX diff --git a/SabreTools.DatItems/Formats/Rom.cs b/SabreTools.DatItems/Formats/Rom.cs index 64464468..b3e6d7f9 100644 --- a/SabreTools.DatItems/Formats/Rom.cs +++ b/SabreTools.DatItems/Formats/Rom.cs @@ -230,6 +230,19 @@ namespace SabreTools.DatItems.Formats #endregion + #region Logiqx + + /// + /// Alternate title for the item + /// + [JsonProperty("mia", DefaultValueHandling = DefaultValueHandling.Ignore), XmlElement("mia")] + public bool? MIA { get; set; } = null; + + [JsonIgnore] + public bool MIASpecified { get { return MIA != null; } } + + #endregion + #region OpenMSX /// @@ -432,6 +445,8 @@ namespace SabreTools.DatItems.Formats AltName = this.AltName, AltTitle = this.AltTitle, + MIA = this.MIA, + Original = this.Original, OpenMSXSubType = this.OpenMSXSubType, OpenMSXType = this.OpenMSXType, diff --git a/SabreTools.Filtering/DatItemFilter.cs b/SabreTools.Filtering/DatItemFilter.cs index 3622a722..6ba26de1 100644 --- a/SabreTools.Filtering/DatItemFilter.cs +++ b/SabreTools.Filtering/DatItemFilter.cs @@ -51,11 +51,13 @@ namespace SabreTools.Filtering public FilterItem Rotation { get; private set; } = new FilterItem(); public FilterItem Summation { get; private set; } = new FilterItem(); - // Rom (AttractMode) public FilterItem AltName { get; private set; } = new FilterItem(); public FilterItem AltTitle { get; private set; } = new FilterItem(); + // Rom (Logiqx) + public FilterItem MIA { get; private set; } = new FilterItem(); + // Rom (OpenMSX) public FilterItem Original { get; private set; } = new FilterItem(); public FilterItem OpenMSXSubType { get; private set; } = new FilterItem() { Positive = Core.OpenMSXSubType.NULL, Negative = Core.OpenMSXSubType.NULL }; @@ -368,6 +370,11 @@ namespace SabreTools.Filtering SetStringFilter(AltTitle, value, negate); break; + // Rom (Logiqx) + case DatItemField.MIA: + SetBooleanFilter(MIA, value, negate); + break; + // Rom (OpenMSX) case DatItemField.Original: SetStringFilter(Original, value, negate); @@ -1855,6 +1862,14 @@ namespace SabreTools.Filtering #endregion + #region Logiqx + + // Filter on MIA> + if (!PassBoolFilter(MIA, rom.MIA)) + return false; + + #endregion + #region OpenMSX // Filter on original diff --git a/SabreTools.Filtering/DatItemRemover.cs b/SabreTools.Filtering/DatItemRemover.cs index fbeed346..aed05529 100644 --- a/SabreTools.Filtering/DatItemRemover.cs +++ b/SabreTools.Filtering/DatItemRemover.cs @@ -965,6 +965,13 @@ namespace SabreTools.Filtering #endregion + #region Logiqx + + if (DatItemFields.Contains(DatItemField.MIA)) + rom.MIA = null; + + #endregion + #region OpenMSX if (DatItemFields.Contains(DatItemField.Original)) diff --git a/SabreTools.Filtering/Replacer.cs b/SabreTools.Filtering/Replacer.cs index c7b41ae2..7331961b 100644 --- a/SabreTools.Filtering/Replacer.cs +++ b/SabreTools.Filtering/Replacer.cs @@ -954,6 +954,13 @@ namespace SabreTools.Filtering #endregion + #region Logiqx + + if (datItemFields.Contains(DatItemField.MIA)) + rom.MIA = newItem.MIA; + + #endregion + #region OpenMSX if (datItemFields.Contains(DatItemField.Original)) diff --git a/SabreTools.Test/TestData/test-logiqx.xml b/SabreTools.Test/TestData/test-logiqx.xml index 4bb21012..57d42740 100644 --- a/SabreTools.Test/TestData/test-logiqx.xml +++ b/SabreTools.Test/TestData/test-logiqx.xml @@ -44,8 +44,8 @@ game3 - - + +