From 1dbbab3f63702341fc78bc5784745b6a0aaa677e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 18 Oct 2026 15:43:40 -0400 Subject: [PATCH] Offload mapped media types to the definition --- SabreTools.RedumpLib/Data/Extensions.cs | 31 ++------------ .../Data/PhysicalMediaType.cs | 41 ++++++++++++++----- 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/SabreTools.RedumpLib/Data/Extensions.cs b/SabreTools.RedumpLib/Data/Extensions.cs index 8a3da07..5769313 100644 --- a/SabreTools.RedumpLib/Data/Extensions.cs +++ b/SabreTools.RedumpLib/Data/Extensions.cs @@ -155,34 +155,11 @@ namespace SabreTools.RedumpLib.Data /// MediaType if possible, null on error public static PhysicalMediaType? ToPhysicalMediaType(this MediaType? discType) { - return discType switch - { - MediaType.NONE => null, - MediaType.BD25 - or MediaType.BD33 - or MediaType.BD50 - or MediaType.BD66 - or MediaType.BD100 - or MediaType.BD128 => PhysicalMediaType.BluRay, - MediaType.CD => PhysicalMediaType.CDROM, - MediaType.DVD5 - or MediaType.DVD9 => PhysicalMediaType.DVD, - MediaType.GDROM => PhysicalMediaType.GDROM, - MediaType.HDDVDSL - or MediaType.HDDVDDL => PhysicalMediaType.HDDVD, - MediaType.NintendoGameCubeGameDisc => PhysicalMediaType.NintendoGameCubeGameDisc, - MediaType.NintendoWiiOpticalDiscSL - or MediaType.NintendoWiiOpticalDiscDL => PhysicalMediaType.NintendoWiiOpticalDisc, - MediaType.NintendoWiiUOpticalDiscSL => PhysicalMediaType.NintendoWiiUOpticalDisc, - MediaType.UMDSL - or MediaType.UMDDL => PhysicalMediaType.UMD, - MediaType.XGD => PhysicalMediaType.XGD, + if (discType == MediaType.NONE) + return null; - // Invalid cases for conversion - MediaType.MILCD => null, - null => null, - _ => null, - }; + return Array.Find(PhysicalMediaType.AllMediaTypes, + m => Array.Exists(m.MappedMediaTypes, t => t == discType)); } #endregion diff --git a/SabreTools.RedumpLib/Data/PhysicalMediaType.cs b/SabreTools.RedumpLib/Data/PhysicalMediaType.cs index 673962b..49c0e40 100644 --- a/SabreTools.RedumpLib/Data/PhysicalMediaType.cs +++ b/SabreTools.RedumpLib/Data/PhysicalMediaType.cs @@ -25,8 +25,15 @@ namespace SabreTools.RedumpLib.Data /// /// Default media type mapping /// + /// This is used when converting from to public readonly MediaType? DefaultMediaType; + /// + /// Media types that map to this + /// + /// This is used when converting from to + public readonly MediaType[] MappedMediaTypes; + #endregion #region Constructors @@ -37,13 +44,15 @@ namespace SabreTools.RedumpLib.Data private PhysicalMediaType(string name, bool available = true, string? code = null, - MediaType? defaultMediaType = null) + MediaType? defaultMediaType = null, + MediaType[]? mappedMediaTypes = null) { Name = name; Available = available; Code = code; DefaultMediaType = defaultMediaType; + MappedMediaTypes = mappedMediaTypes ?? []; } #endregion @@ -98,15 +107,18 @@ namespace SabreTools.RedumpLib.Data public static readonly PhysicalMediaType BluRay = new("BD-ROM", code: "bdrom", - defaultMediaType: MediaType.BD50); + defaultMediaType: MediaType.BD50, + mappedMediaTypes: [MediaType.BD25, MediaType.BD33, MediaType.BD50, MediaType.BD66, MediaType.BD100, MediaType.BD128]); public static readonly PhysicalMediaType CDROM = new("CD-ROM", code: "cdrom", - defaultMediaType: MediaType.CD); + defaultMediaType: MediaType.CD, + mappedMediaTypes: [MediaType.CD]); public static readonly PhysicalMediaType DVD = new("DVD-ROM", code: "dvd", - defaultMediaType: MediaType.DVD9); + defaultMediaType: MediaType.DVD9, + mappedMediaTypes: [MediaType.DVD5, MediaType.DVD9]); public static readonly PhysicalMediaType FloppyDisk = new("Floppy Disk", code: "fd"); @@ -117,11 +129,13 @@ namespace SabreTools.RedumpLib.Data public static readonly PhysicalMediaType GDROM = new("GD-ROM", code: "gdrom", - defaultMediaType: MediaType.GDROM); + defaultMediaType: MediaType.GDROM, + mappedMediaTypes: [MediaType.GDROM]); public static readonly PhysicalMediaType HDDVD = new("HD-DVD-ROM", code: "hddvd", - defaultMediaType: MediaType.HDDVDSL); + defaultMediaType: MediaType.HDDVDSL, + mappedMediaTypes: [MediaType.HDDVDSL, MediaType.HDDVDDL]); public static readonly PhysicalMediaType HardDisk = new("Hard Disk", code: "hdd"); @@ -152,23 +166,28 @@ namespace SabreTools.RedumpLib.Data public static readonly PhysicalMediaType NintendoGameCubeGameDisc = new("GameCube Game Disc", code: "gc", - defaultMediaType: MediaType.NintendoGameCubeGameDisc); + defaultMediaType: MediaType.NintendoGameCubeGameDisc, + mappedMediaTypes: [MediaType.NintendoGameCubeGameDisc]); public static readonly PhysicalMediaType NintendoWiiOpticalDisc = new("Wii Optical Disc", code: "wii", - defaultMediaType: MediaType.NintendoWiiOpticalDiscDL); + defaultMediaType: MediaType.NintendoWiiOpticalDiscDL, + mappedMediaTypes: [MediaType.NintendoWiiOpticalDiscSL, MediaType.NintendoWiiOpticalDiscDL]); public static readonly PhysicalMediaType NintendoWiiUOpticalDisc = new("Wii U Optical Disc", code: "wiiu", - defaultMediaType: MediaType.NintendoWiiUOpticalDiscSL); + defaultMediaType: MediaType.NintendoWiiUOpticalDiscSL, + mappedMediaTypes: [MediaType.NintendoWiiUOpticalDiscSL]); public static readonly PhysicalMediaType UMD = new("UMD", code: "umd", - defaultMediaType: MediaType.UMDDL); + defaultMediaType: MediaType.UMDDL, + mappedMediaTypes: [MediaType.UMDSL, MediaType.UMDDL]); public static readonly PhysicalMediaType XGD = new("Xbox Game Disc", code: "xgd", - defaultMediaType: MediaType.XGD); + defaultMediaType: MediaType.XGD, + mappedMediaTypes: [MediaType.XGD]); #endregion