using System.Collections.Generic; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; namespace SabreTools.Metadata.DatFiles.Formats { /// /// Represents a MAME Listrom file /// public sealed class Listrom : SerializableDatFile { /// public override Data.Models.Metadata.ItemType[] SupportedTypes => [ Data.Models.Metadata.ItemType.Disk, Data.Models.Metadata.ItemType.Rom, ]; /// /// Constructor designed for casting a base DatFile /// /// Parent DatFile to copy from public Listrom(DatFile? datFile) : base(datFile) { Header.DatFormat = DatFormat.Listrom; } /// protected internal override List? GetMissingRequiredFields(DatItem datItem) { List missingFields = []; switch (datItem) { case Disk disk: if (string.IsNullOrEmpty(disk.Name)) missingFields.Add(nameof(Data.Models.Metadata.Disk.Name)); if (string.IsNullOrEmpty(disk.MD5) && string.IsNullOrEmpty(disk.SHA1)) { missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1)); } break; case Rom rom: if (string.IsNullOrEmpty(rom.Name)) missingFields.Add(nameof(Data.Models.Metadata.Rom.Name)); if (rom.Size is null || rom.Size < 0) missingFields.Add(nameof(Data.Models.Metadata.Rom.Size)); if (string.IsNullOrEmpty(rom.CRC32)) missingFields.Add(nameof(Data.Models.Metadata.Rom.CRC32)); if (string.IsNullOrEmpty(rom.SHA1)) missingFields.Add(nameof(Data.Models.Metadata.Rom.SHA1)); break; default: // Item type is not supported break; } return missingFields; } } }