diff --git a/SabreTools.DatFiles/Formats/EverdriveSMDB.Writer.cs b/SabreTools.DatFiles/Formats/EverdriveSMDB.Writer.cs index 40697136..a46df856 100644 --- a/SabreTools.DatFiles/Formats/EverdriveSMDB.Writer.cs +++ b/SabreTools.DatFiles/Formats/EverdriveSMDB.Writer.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using SabreTools.Core; using SabreTools.DatItems; using SabreTools.DatItems.Formats; @@ -54,7 +53,11 @@ namespace SabreTools.DatFiles.Formats { logger.User($"Writing to '{outfile}'..."); - var metadataFile = CreateMetadataFile(ignoreblanks); + //var metadataFile = CreateMetadataFile(ignoreblanks); + + // Serialize the input file + var metadata = ConvertMetadata(ignoreblanks); + var metadataFile = new Serialization.CrossModel.EverdriveSMDB().Deserialize(metadata); if (!(new Serialization.Files.EverdriveSMDB().Serialize(metadataFile, outfile))) { logger.Warning($"File '{outfile}' could not be written! See the log for more details."); @@ -70,84 +73,5 @@ namespace SabreTools.DatFiles.Formats logger.User($"'{outfile}' written!{Environment.NewLine}"); return true; } - - #region Converters - - /// - /// Create a MetadataFile from the current internal information - /// - /// True if blank roms should be skipped on output, false otherwise - private Models.EverdriveSMDB.MetadataFile CreateMetadataFile(bool ignoreblanks) - { - var metadataFile = new Models.EverdriveSMDB.MetadataFile - { - Row = CreateRows(ignoreblanks) - }; - return metadataFile; - } - - /// - /// Create an array of Row from the current internal information - /// - /// True if blank roms should be skipped on output, false otherwise - private Models.EverdriveSMDB.Row[]? CreateRows(bool ignoreblanks) - { - // If we don't have items, we can't do anything - if (this.Items == null || !this.Items.Any()) - return null; - - // Create a list of hold the rows - var rows = new List(); - - // Loop through the sorted items and create games for them - foreach (string key in Items.SortedKeys) - { - var items = Items.FilteredItems(key); - if (items == null || !items.Any()) - continue; - - // Loop through and convert the items to respective lists - for (int index = 0; index < items.Count; index++) - { - // Get the item - var item = items[index]; - - // Check for a "null" item - item = ProcessNullifiedItem(item); - - // Skip if we're ignoring the item - if (ShouldIgnore(item, ignoreblanks)) - continue; - - switch (item) - { - case Rom rom: - rows.Add(CreateRow(rom)); - break; - } - } - } - - return [.. rows]; - } - - /// - /// Create a Row from the current Rom DatItem - /// - private static Models.EverdriveSMDB.Row CreateRow(Rom rom) - { - var row = new Models.EverdriveSMDB.Row - { - SHA256 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key), - Name = $"{rom.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty}/{rom.GetName()}", - SHA1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key), - MD5 = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key), - CRC32 = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey), - Size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString(), - }; - return row; - } - - #endregion } }