diff --git a/SabreTools.DatFiles/Formats/Logiqx.Writer.cs b/SabreTools.DatFiles/Formats/Logiqx.Writer.cs index 7c7969e7..6af8f6cc 100644 --- a/SabreTools.DatFiles/Formats/Logiqx.Writer.cs +++ b/SabreTools.DatFiles/Formats/Logiqx.Writer.cs @@ -34,8 +34,99 @@ namespace SabreTools.DatFiles.Formats /// protected override List GetMissingRequiredFields(DatItem datItem) { - // TODO: Check required fields - return null; + var missingFields = new List(); + switch (datItem) + { + case Release release: + if (string.IsNullOrWhiteSpace(release.Name)) + missingFields.Add(DatItemField.Name); + if (string.IsNullOrWhiteSpace(release.Region)) + missingFields.Add(DatItemField.Region); + break; + + case BiosSet biosset: + if (string.IsNullOrWhiteSpace(biosset.Name)) + missingFields.Add(DatItemField.Name); + if (string.IsNullOrWhiteSpace(biosset.Description)) + missingFields.Add(DatItemField.Description); + break; + + case Rom rom: + if (string.IsNullOrWhiteSpace(rom.Name)) + missingFields.Add(DatItemField.Name); + if (rom.Size == null || rom.Size < 0) + missingFields.Add(DatItemField.Size); + if (string.IsNullOrWhiteSpace(rom.CRC) + && string.IsNullOrWhiteSpace(rom.MD5) + && string.IsNullOrWhiteSpace(rom.SHA1) + && string.IsNullOrWhiteSpace(rom.SHA256) + && string.IsNullOrWhiteSpace(rom.SHA384) + && string.IsNullOrWhiteSpace(rom.SHA512) + && string.IsNullOrWhiteSpace(rom.SpamSum)) + { + missingFields.Add(DatItemField.SHA1); + } + break; + + case Disk disk: + if (string.IsNullOrWhiteSpace(disk.Name)) + missingFields.Add(DatItemField.Name); + if (string.IsNullOrWhiteSpace(disk.MD5) + && string.IsNullOrWhiteSpace(disk.SHA1)) + { + missingFields.Add(DatItemField.SHA1); + } + break; + + case Media media: + if (string.IsNullOrWhiteSpace(media.Name)) + missingFields.Add(DatItemField.Name); + if (string.IsNullOrWhiteSpace(media.MD5) + && string.IsNullOrWhiteSpace(media.SHA1) + && string.IsNullOrWhiteSpace(media.SHA256) + && string.IsNullOrWhiteSpace(media.SpamSum)) + { + missingFields.Add(DatItemField.SHA1); + } + break; + + case DeviceReference deviceref: + if (string.IsNullOrWhiteSpace(deviceref.Name)) + missingFields.Add(DatItemField.Name); + break; + + case Sample sample: + if (string.IsNullOrWhiteSpace(sample.Name)) + missingFields.Add(DatItemField.Name); + break; + + case Archive archive: + if (string.IsNullOrWhiteSpace(archive.Name)) + missingFields.Add(DatItemField.Name); + break; + + case Driver driver: + if (!driver.StatusSpecified) + missingFields.Add(DatItemField.SupportStatus); + if (!driver.EmulationSpecified) + missingFields.Add(DatItemField.EmulationStatus); + if (!driver.CocktailSpecified) + missingFields.Add(DatItemField.CocktailStatus); + if (!driver.SaveStateSpecified) + missingFields.Add(DatItemField.SaveStateStatus); + break; + + case DatItems.Formats.SoftwareList softwarelist: + if (string.IsNullOrWhiteSpace(softwarelist.Tag)) + missingFields.Add(DatItemField.Tag); + if (string.IsNullOrWhiteSpace(softwarelist.Name)) + missingFields.Add(DatItemField.Name); + if (!softwarelist.StatusSpecified) + missingFields.Add(DatItemField.SoftwareListStatus); + break; + } + + return missingFields; } ///