mirror of
https://github.com/SabreTools/MPF.git
synced 2026-07-02 17:24:48 +00:00
Increase JSON accuracy for disc types (fixes #381)
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
- Refine copy protection section showing
|
||||
- Update Nuget packages
|
||||
- Normalize newlines in comments and contents
|
||||
- Increase JSON accuracy for disc types
|
||||
|
||||
### 2.3 (2022-02-05)
|
||||
- Start overhauling Redump information pulling, again
|
||||
|
||||
@@ -406,6 +406,9 @@ namespace MPF.Library
|
||||
if (string.IsNullOrEmpty(info.CommonDiscInfo.Contents))
|
||||
info.CommonDiscInfo.Contents = options.AddPlaceholders ? Template.OptionalValue : string.Empty;
|
||||
|
||||
// Normalize the disc type with all current information
|
||||
NormalizeDiscType(info);
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
@@ -836,7 +839,7 @@ namespace MPF.Library
|
||||
/// <param name="size">Size of the current media</param>
|
||||
/// <param name="layerbreak">First layerbreak value, as applicable</param>
|
||||
/// <param name="layerbreak2">Second layerbreak value, as applicable</param>
|
||||
/// <param name="layerbreak3">Third ayerbreak value, as applicable</param>
|
||||
/// <param name="layerbreak3">Third layerbreak value, as applicable</param>
|
||||
/// <returns>String representation of the media, including layer specification</returns>
|
||||
public static string GetFixedMediaType(MediaType? mediaType, long size, long layerbreak, long layerbreak2, long layerbreak3)
|
||||
{
|
||||
@@ -1068,6 +1071,69 @@ namespace MPF.Library
|
||||
|
||||
#region Normalization
|
||||
|
||||
/// <summary>
|
||||
/// Adjust the disc type based on size and layerbreak information
|
||||
/// </summary>
|
||||
/// <param name="info">Existing SubmissionInfo object to fill</param>
|
||||
/// <returns>Corrected disc type, if possible</returns>
|
||||
public static void NormalizeDiscType(SubmissionInfo info)
|
||||
{
|
||||
// If we have nothing valid, do nothing
|
||||
if (info?.CommonDiscInfo?.Media == null)
|
||||
return;
|
||||
|
||||
switch (info.CommonDiscInfo.Media)
|
||||
{
|
||||
case DiscType.BD25:
|
||||
case DiscType.BD33:
|
||||
case DiscType.BD50:
|
||||
case DiscType.BD66:
|
||||
case DiscType.BD100:
|
||||
case DiscType.BD128:
|
||||
if (info.SizeAndChecksums.Layerbreak3 != default)
|
||||
info.CommonDiscInfo.Media = DiscType.BD128;
|
||||
else if (info.SizeAndChecksums.Layerbreak2 != default)
|
||||
info.CommonDiscInfo.Media = DiscType.BD100;
|
||||
else if (info.SizeAndChecksums.Layerbreak != default && info.SizeAndChecksums.Size > 53_687_063_712)
|
||||
info.CommonDiscInfo.Media = DiscType.BD66;
|
||||
else if (info.SizeAndChecksums.Layerbreak != default)
|
||||
info.CommonDiscInfo.Media = DiscType.BD50;
|
||||
else if (info.SizeAndChecksums.Size > 26_843_531_856)
|
||||
info.CommonDiscInfo.Media = DiscType.BD33;
|
||||
else
|
||||
info.CommonDiscInfo.Media = DiscType.BD25;
|
||||
break;
|
||||
|
||||
case DiscType.DVD5:
|
||||
case DiscType.DVD9:
|
||||
if (info.SizeAndChecksums.Layerbreak != default)
|
||||
info.CommonDiscInfo.Media = DiscType.DVD9;
|
||||
else
|
||||
info.CommonDiscInfo.Media = DiscType.DVD5;
|
||||
break;
|
||||
|
||||
case DiscType.HDDVDSL:
|
||||
case DiscType.HDDVDDL:
|
||||
if (info.SizeAndChecksums.Layerbreak != default)
|
||||
info.CommonDiscInfo.Media = DiscType.HDDVDDL;
|
||||
else
|
||||
info.CommonDiscInfo.Media = DiscType.HDDVDSL;
|
||||
break;
|
||||
|
||||
case DiscType.UMDSL:
|
||||
case DiscType.UMDDL:
|
||||
if (info.SizeAndChecksums.Layerbreak != default)
|
||||
info.CommonDiscInfo.Media = DiscType.UMDDL;
|
||||
else
|
||||
info.CommonDiscInfo.Media = DiscType.UMDSL;
|
||||
break;
|
||||
|
||||
// All other disc types are not processed
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Normalize a split set of paths
|
||||
/// </summary>
|
||||
|
||||
@@ -18,12 +18,17 @@ namespace MPF.Test.RedumpLib
|
||||
private static readonly DiscType?[] _mappableDiscTypes = new DiscType?[]
|
||||
{
|
||||
DiscType.BD25,
|
||||
DiscType.BD33,
|
||||
DiscType.BD50,
|
||||
DiscType.BD66,
|
||||
DiscType.BD100,
|
||||
DiscType.BD128,
|
||||
DiscType.CD,
|
||||
DiscType.DVD5,
|
||||
DiscType.DVD9,
|
||||
DiscType.GDROM,
|
||||
DiscType.HDDVDSL,
|
||||
DiscType.HDDVDDL,
|
||||
DiscType.NintendoGameCubeGameDisc,
|
||||
DiscType.NintendoWiiOpticalDiscSL,
|
||||
DiscType.NintendoWiiOpticalDiscDL,
|
||||
|
||||
@@ -133,7 +133,7 @@ namespace MPF.Test.RedumpLib
|
||||
|
||||
DumpersAndStatus = new DumpersAndStatusSection()
|
||||
{
|
||||
Status = DumpStatus.TwoOrMoHumanReadablesGreen,
|
||||
Status = DumpStatus.TwoOrMoreGreen,
|
||||
Dumpers = new string[] { "Dumper1", "Dumper2" },
|
||||
OtherDumpers = "Dumper3",
|
||||
},
|
||||
|
||||
@@ -638,8 +638,13 @@ namespace MPF.GUI.ViewModels
|
||||
case DiscType.DVD5:
|
||||
case DiscType.DVD9:
|
||||
case DiscType.HDDVDSL:
|
||||
case DiscType.HDDVDDL:
|
||||
case DiscType.BD25:
|
||||
case DiscType.BD33:
|
||||
case DiscType.BD50:
|
||||
case DiscType.BD66:
|
||||
case DiscType.BD100:
|
||||
case DiscType.BD128:
|
||||
case DiscType.NintendoGameCubeGameDisc:
|
||||
case DiscType.NintendoWiiOpticalDiscSL:
|
||||
case DiscType.NintendoWiiOpticalDiscDL:
|
||||
|
||||
@@ -290,7 +290,7 @@ namespace MPF.GUI.ViewModels
|
||||
CommonDiscInfo = new CommonDiscInfoSection()
|
||||
{
|
||||
System = RedumpSystem.IBMPCcompatible,
|
||||
Media = DiscType.BD50,
|
||||
Media = DiscType.BD128,
|
||||
Title = "Game Title",
|
||||
ForeignTitleNonLatin = "Foreign Game Title",
|
||||
DiscNumberLetter = "1",
|
||||
@@ -373,7 +373,7 @@ namespace MPF.GUI.ViewModels
|
||||
|
||||
DumpersAndStatus = new DumpersAndStatusSection()
|
||||
{
|
||||
Status = DumpStatus.TwoOrMoHumanReadablesGreen,
|
||||
Status = DumpStatus.TwoOrMoreGreen,
|
||||
Dumpers = new string[] { "Dumper1", "Dumper2" },
|
||||
OtherDumpers = "Dumper3",
|
||||
},
|
||||
|
||||
@@ -44,6 +44,11 @@ namespace RedumpLib.Data
|
||||
/// <summary>
|
||||
/// List of all disc types
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// All names here match Redump names for the types, not official
|
||||
/// naming. Some names had to be extrapolated due to no current support
|
||||
/// in the Redump site.
|
||||
/// </remarks>
|
||||
public enum DiscType
|
||||
{
|
||||
NONE = 0,
|
||||
@@ -51,9 +56,21 @@ namespace RedumpLib.Data
|
||||
[HumanReadable(LongName = "BD-25")]
|
||||
BD25,
|
||||
|
||||
[HumanReadable(LongName = "BD-33")]
|
||||
BD33,
|
||||
|
||||
[HumanReadable(LongName = "BD-50")]
|
||||
BD50,
|
||||
|
||||
[HumanReadable(LongName = "BD-66")]
|
||||
BD66,
|
||||
|
||||
[HumanReadable(LongName = "BD-100")]
|
||||
BD100,
|
||||
|
||||
[HumanReadable(LongName = "BD-128")]
|
||||
BD128,
|
||||
|
||||
[HumanReadable(LongName = "CD")]
|
||||
CD,
|
||||
|
||||
@@ -68,7 +85,10 @@ namespace RedumpLib.Data
|
||||
|
||||
[HumanReadable(LongName = "HD-DVD SL")]
|
||||
HDDVDSL,
|
||||
|
||||
|
||||
[HumanReadable(LongName = "HD-DVD DL")]
|
||||
HDDVDDL,
|
||||
|
||||
[HumanReadable(LongName = "MIL-CD")]
|
||||
MILCD,
|
||||
|
||||
@@ -99,7 +119,7 @@ namespace RedumpLib.Data
|
||||
BadDumpRed = 2,
|
||||
PossibleBadDumpYellow = 3,
|
||||
OriginalMediaBlue = 4,
|
||||
TwoOrMoHumanReadablesGreen = 5,
|
||||
TwoOrMoreGreen = 5,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -747,7 +747,11 @@ namespace RedumpLib.Data
|
||||
switch (discType)
|
||||
{
|
||||
case DiscType.BD25:
|
||||
case DiscType.BD33:
|
||||
case DiscType.BD50:
|
||||
case DiscType.BD66:
|
||||
case DiscType.BD100:
|
||||
case DiscType.BD128:
|
||||
return MediaType.BluRay;
|
||||
case DiscType.CD:
|
||||
return MediaType.CDROM;
|
||||
@@ -757,6 +761,7 @@ namespace RedumpLib.Data
|
||||
case DiscType.GDROM:
|
||||
return MediaType.GDROM;
|
||||
case DiscType.HDDVDSL:
|
||||
case DiscType.HDDVDDL:
|
||||
return MediaType.HDDVD;
|
||||
// case DiscType.MILCD: // TODO: Support this?
|
||||
// return MediaType.MILCD;
|
||||
@@ -847,9 +852,21 @@ namespace RedumpLib.Data
|
||||
case "bd25":
|
||||
case "bd-25":
|
||||
return DiscType.BD25;
|
||||
case "bd33":
|
||||
case "bd-33":
|
||||
return DiscType.BD33;
|
||||
case "bd50":
|
||||
case "bd-50":
|
||||
return DiscType.BD50;
|
||||
case "bd66":
|
||||
case "bd-66":
|
||||
return DiscType.BD66;
|
||||
case "bd100":
|
||||
case "bd-100":
|
||||
return DiscType.BD100;
|
||||
case "bd128":
|
||||
case "bd-128":
|
||||
return DiscType.BD128;
|
||||
case "cd":
|
||||
case "cdrom":
|
||||
case "cd-rom":
|
||||
@@ -868,6 +885,9 @@ namespace RedumpLib.Data
|
||||
case "hddvdsl":
|
||||
case "hd-dvd sl":
|
||||
return DiscType.HDDVDSL;
|
||||
case "hddvddl":
|
||||
case "hd-dvd dl":
|
||||
return DiscType.HDDVDDL;
|
||||
case "milcd":
|
||||
case "mil-cd":
|
||||
return DiscType.MILCD;
|
||||
|
||||
Reference in New Issue
Block a user