diff --git a/SabreTools.Core/Enums.cs b/SabreTools.Core/Enums.cs index 267417d1..b6f791e4 100644 --- a/SabreTools.Core/Enums.cs +++ b/SabreTools.Core/Enums.cs @@ -601,6 +601,10 @@ namespace SabreTools.Core Clone, RegParent, Languages, + DevStatus, + Physical, + Complete, + Categories, // BiosSet Description, diff --git a/SabreTools.Core/Tools/Converters.cs b/SabreTools.Core/Tools/Converters.cs index a844cc59..ec4a7dcc 100644 --- a/SabreTools.Core/Tools/Converters.cs +++ b/SabreTools.Core/Tools/Converters.cs @@ -549,6 +549,19 @@ namespace SabreTools.Core.Tools case "languages": return DatItemField.Languages; + case "devstatus": + case "dev_status": + return DatItemField.DevStatus; + + case "physical": + return DatItemField.Physical; + + case "complete": + return DatItemField.Complete; + + case "categories": + return DatItemField.Categories; + // BiosSet case "description": case "biosdescription": diff --git a/SabreTools.DatFiles/Setter.cs b/SabreTools.DatFiles/Setter.cs index 8b7042da..eb3c20e8 100644 --- a/SabreTools.DatFiles/Setter.cs +++ b/SabreTools.DatFiles/Setter.cs @@ -480,6 +480,18 @@ namespace SabreTools.DatFiles if (DatItemMappings.Keys.Contains(DatItemField.Languages)) archive.Languages = DatItemMappings[DatItemField.Languages]; + + if (DatItemMappings.Keys.Contains(DatItemField.DevStatus)) + archive.DevStatus = DatItemMappings[DatItemField.DevStatus]; + + if (DatItemMappings.Keys.Contains(DatItemField.Physical)) + archive.Physical = DatItemMappings[DatItemField.Physical]; + + if (DatItemMappings.Keys.Contains(DatItemField.Complete)) + archive.Complete = DatItemMappings[DatItemField.Complete]; + + if (DatItemMappings.Keys.Contains(DatItemField.Categories)) + archive.Categories = DatItemMappings[DatItemField.Categories]; } /// diff --git a/SabreTools.DatItems/Formats/Archive.cs b/SabreTools.DatItems/Formats/Archive.cs index 83bfece9..e48d64b5 100644 --- a/SabreTools.DatItems/Formats/Archive.cs +++ b/SabreTools.DatItems/Formats/Archive.cs @@ -26,33 +26,63 @@ namespace SabreTools.DatItems.Formats public string Number { get; set; } /// - /// Clone + /// Clone value /// /// No-Intro database export only [JsonProperty("clone"), XmlElement("clone")] public string CloneValue { get; set; } /// - /// Regional parent + /// Regional parent value /// /// No-Intro database export only [JsonProperty("regparent"), XmlElement("regparent")] public string RegParent { get; set; } /// - /// Region + /// Region value /// /// No-Intro database export only [JsonProperty("region"), XmlElement("region")] public string Region { get; set; } /// - /// Region + /// Languages value /// /// No-Intro database export only [JsonProperty("languages"), XmlElement("languages")] public string Languages { get; set; } + /// + /// Development status value + /// + /// No-Intro database export only + [JsonProperty("devstatus"), XmlElement("devstatus")] + public string DevStatus { get; set; } + + /// + /// Physical value + /// + /// No-Intro database export only + /// TODO: Is this numeric or a flag? + [JsonProperty("physical"), XmlElement("physical")] + public string Physical { get; set; } + + /// + /// Complete value + /// + /// No-Intro database export only + /// TODO: Is this numeric or a flag? + [JsonProperty("complete"), XmlElement("complete")] + public string Complete { get; set; } + + /// + /// Categories value + /// + /// No-Intro database export only + [JsonProperty("categories"), XmlElement("categories")] + public string Categories { get; set; } + #endregion #region Accessors @@ -97,6 +127,10 @@ namespace SabreTools.DatItems.Formats RegParent = this.RegParent, Region = this.Region, Languages = this.Languages, + DevStatus = this.DevStatus, + Physical = this.Physical, + Complete = this.Complete, + Categories = this.Categories, }; } @@ -120,7 +154,11 @@ namespace SabreTools.DatItems.Formats && CloneValue == newOther.CloneValue && RegParent == newOther.RegParent && Region == newOther.Region - && Languages == newOther.Languages); + && Languages == newOther.Languages + && DevStatus == newOther.DevStatus + && Physical == newOther.Physical + && Complete == newOther.Complete + && Categories == newOther.Categories); } #endregion diff --git a/SabreTools.Filtering/DatItemFilter.cs b/SabreTools.Filtering/DatItemFilter.cs index 63694f99..1d3ef687 100644 --- a/SabreTools.Filtering/DatItemFilter.cs +++ b/SabreTools.Filtering/DatItemFilter.cs @@ -88,6 +88,10 @@ namespace SabreTools.Filtering public FilterItem Clone { get; private set; } = new FilterItem(); public FilterItem RegParent { get; private set; } = new FilterItem(); public FilterItem Languages { get; private set; } = new FilterItem(); + public FilterItem DevStatus { get; private set; } = new FilterItem(); + public FilterItem Physical { get; private set; } = new FilterItem(); + public FilterItem Complete { get; private set; } = new FilterItem(); + public FilterItem Categories { get; private set; } = new FilterItem(); // BiosSet public FilterItem Description { get; private set; } = new FilterItem(); @@ -457,6 +461,22 @@ namespace SabreTools.Filtering SetStringFilter(Languages, value, negate); break; + case DatItemField.DevStatus: + SetStringFilter(DevStatus, value, negate); + break; + + case DatItemField.Physical: + SetStringFilter(Physical, value, negate); + break; + + case DatItemField.Complete: + SetStringFilter(Complete, value, negate); + break; + + case DatItemField.Categories: + SetStringFilter(Categories, value, negate); + break; + // BiosSet case DatItemField.Description: SetStringFilter(Description, value, negate); @@ -985,6 +1005,22 @@ namespace SabreTools.Filtering if (!PassStringFilter(Languages, archive.Languages)) return false; + // Filter on dev status + if (!PassStringFilter(DevStatus, archive.DevStatus)) + return false; + + // Filter on physical + if (!PassStringFilter(Physical, archive.Physical)) + return false; + + // Filter on complete + if (!PassStringFilter(Complete, archive.Complete)) + return false; + + // Filter on categories + if (!PassStringFilter(Categories, archive.Categories)) + return false; + return true; } diff --git a/SabreTools.Filtering/DatItemRemover.cs b/SabreTools.Filtering/DatItemRemover.cs index c2db08c4..0e7a1c60 100644 --- a/SabreTools.Filtering/DatItemRemover.cs +++ b/SabreTools.Filtering/DatItemRemover.cs @@ -321,6 +321,18 @@ namespace SabreTools.Filtering if (DatItemFields.Contains(DatItemField.Languages)) archive.Languages = null; + + if (DatItemFields.Contains(DatItemField.DevStatus)) + archive.DevStatus = null; + + if (DatItemFields.Contains(DatItemField.Physical)) + archive.Physical = null; + + if (DatItemFields.Contains(DatItemField.Complete)) + archive.Complete = null; + + if (DatItemFields.Contains(DatItemField.Categories)) + archive.Categories = null; } /// diff --git a/SabreTools.Filtering/Replacer.cs b/SabreTools.Filtering/Replacer.cs index 6b548e4e..104dc60b 100644 --- a/SabreTools.Filtering/Replacer.cs +++ b/SabreTools.Filtering/Replacer.cs @@ -277,6 +277,18 @@ namespace SabreTools.Filtering if (datItemFields.Contains(DatItemField.Languages)) archive.Languages = newItem.Languages; + + if (datItemFields.Contains(DatItemField.DevStatus)) + archive.DevStatus = newItem.DevStatus; + + if (datItemFields.Contains(DatItemField.Physical)) + archive.Physical = newItem.Physical; + + if (datItemFields.Contains(DatItemField.Complete)) + archive.Complete = newItem.Complete; + + if (datItemFields.Contains(DatItemField.Categories)) + archive.Categories = newItem.Categories; } ///