From 95456af34d43173ccede225055eea233790e9845 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 11 Mar 2024 21:37:59 -0400 Subject: [PATCH] Convert DosCenter writer to serializer --- .../Formats/DosCenter.Writer.cs | 123 ------------------ 1 file changed, 123 deletions(-) diff --git a/SabreTools.DatFiles/Formats/DosCenter.Writer.cs b/SabreTools.DatFiles/Formats/DosCenter.Writer.cs index 9b3366e2..f91a3812 100644 --- a/SabreTools.DatFiles/Formats/DosCenter.Writer.cs +++ b/SabreTools.DatFiles/Formats/DosCenter.Writer.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; -using System.Linq; using SabreTools.Core; -using SabreTools.Core.Tools; using SabreTools.DatItems; using SabreTools.DatItems.Formats; @@ -53,8 +51,6 @@ namespace SabreTools.DatFiles.Formats { logger.User($"Writing to '{outfile}'..."); - //var metadataFile = CreateMetadataFile(ignoreblanks); - // Serialize the input file var metadata = ConvertMetadata(ignoreblanks); var metadataFile = new Serialization.CrossModel.DosCenter().Deserialize(metadata); @@ -73,124 +69,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.DosCenter.MetadataFile CreateMetadataFile(bool ignoreblanks) - { - var metadataFile = new Models.DosCenter.MetadataFile - { - DosCenter = CreateDosCenter(), - Game = CreateGames(ignoreblanks) - }; - return metadataFile; - } - - /// - /// Create a DosCenter from the current internal information - /// - private Models.DosCenter.DosCenter? CreateDosCenter() - { - // If we don't have a header, we can't do anything - if (this.Header == null) - return null; - - var clrMamePro = new Models.DosCenter.DosCenter - { - Name = Header.GetStringFieldValue(Models.Metadata.Header.NameKey), - Description = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey), - Version = Header.GetStringFieldValue(Models.Metadata.Header.VersionKey), - Date = Header.GetStringFieldValue(Models.Metadata.Header.DateKey), - Author = Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey), - Homepage = Header.GetStringFieldValue(Models.Metadata.Header.HomepageKey), - Comment = Header.GetStringFieldValue(Models.Metadata.Header.CommentKey), - }; - - return clrMamePro; - } - - /// - /// Create an array of GameBase from the current internal information - /// - /// True if blank roms should be skipped on output, false otherwise - private Models.DosCenter.Game[]? CreateGames(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 games - var games = 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; - - // Get the first item for game information - var machine = items[0].GetFieldValue(DatItem.MachineKey); - - // We re-add the missing parts of the game name - var game = new Models.DosCenter.Game - { - Name = $"\"{machine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty}.zip\"" - }; - - // Create holders for all item types - var files = new List(); - - // 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: - files.Add(CreateFile(rom)); - break; - } - } - - // Assign the values to the game - game.File = [.. files]; - - // Add the game to the list - games.Add(game); - } - - return [.. games]; - } - - /// - /// Create a File from the current Rom DatItem - /// - private static Models.DosCenter.File CreateFile(Rom item) - { - var rom = new Models.DosCenter.File - { - Name = item.GetName(), - Size = item.GetStringFieldValue(Models.Metadata.Rom.SizeKey), - CRC = item.GetStringFieldValue(Models.Metadata.Rom.CRCKey), - Date = item.GetStringFieldValue(Models.Metadata.Rom.DateKey), - }; - return rom; - } - - #endregion } }