From 958aeeae328546ddb3454bbde47b94e9dbfedf72 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 12 Jun 2018 11:39:10 -0700 Subject: [PATCH] Add constants, create formatted output --- Constants.cs | 42 ++++++++++ DICUI.csproj | 1 + Utilities.cs | 225 +++++++++++++++++++++++++++++++++++++++------------ 3 files changed, 215 insertions(+), 53 deletions(-) create mode 100644 Constants.cs diff --git a/Constants.cs b/Constants.cs new file mode 100644 index 00000000..b8c2ed60 --- /dev/null +++ b/Constants.cs @@ -0,0 +1,42 @@ +namespace DICUI +{ + public static class Constants + { + // Manual information + + public const string TitleField = "Title"; + public const string DiscNumberField = "Disc Number / Letter"; + public const string DiscTitleField = "Disc Title"; + public const string CategoryField = "Category"; + public const string RegionField = "Region"; + public const string LanguagesField = "Languages"; + public const string DiscSerialField = "Disc Serial"; + public const string BarcodeField = "Barcode"; + public const string ISBNField = "ISBN"; + public const string CommentsField = "Comments"; + public const string ContentsField = "Contents"; + public const string VersionField = "Version"; + public const string EditionField = "Edition/Release"; + public const string CopyProtectionField = "Copy Protection"; + public const string MasteringRingField = "Mastering Ring"; + public const string MasteringSIDField = "Mastering SID Code"; + public const string MouldSIDField = "Mould SID Code"; + public const string AdditionalMouldField = "Additional Mould"; + public const string ToolstampField = "Toolstamp or Mastering Code"; + + // Automatic Information + + public const string PVDField = "Primary Volume Descriptor (PVD)"; + public const string DATField = "DAT"; + public const string ErrorCountField = "Error Count"; + public const string CuesheetField = "Cuesheet"; + public const string WriteOffsetField = "WriteOffset"; + public const string LayerbreakField = "Layerbreak"; + public const string PlaystationEXEDateField = "EXE Date"; // TODO: Not automatic yet + public const string PlayStationEDCField = "EDC"; // TODO: Not automatic yet + public const string PlayStationAntiModchipField = "Anti-modchip"; // TODO: Not automatic yet + public const string PlayStationLibCryptField = "LibCrypt"; // TODO: Not automatic yet + public const string SaturnHeaderField = "Header"; // TODO: Not automatic yet + public const string SaturnBuildDateField = "Build Date"; // TODO: Not automatic yet + } +} diff --git a/DICUI.csproj b/DICUI.csproj index 0b377803..8a110a0b 100644 --- a/DICUI.csproj +++ b/DICUI.csproj @@ -87,6 +87,7 @@ MSBuild:Compile Designer + MSBuild:Compile diff --git a/Utilities.cs b/Utilities.cs index 37015c59..210351fb 100644 --- a/Utilities.cs +++ b/Utilities.cs @@ -744,22 +744,23 @@ namespace DICUI string combinedBase = Path.Combine(outputDirectory, outputFilename); Dictionary mappings = new Dictionary { - { "Title", "(REQUIRED)" }, - { "Disc Number / Letter", "(OPTIONAL)" }, - { "Disc Title", "(OPTIONAL)" }, - { "Category", "Games" }, - { "Region", "World (CHANGE THIS)" }, - { "Languages", "Klingon (CHANGE THIS)" }, - { "Disc Serial", "(OPTIONAL)" }, - { "Barcode", "" }, - { "ISBN", "" }, - { "Comments", "(OPTIONAL)" }, - { "Contents", "(OPTIONAL)" }, - { "Version", "" }, - { "Edition/Release", "Original (VERIFY THIS)" }, - { "Primary Volume Descriptor (PVD)", GetPVD(combinedBase + "_mainInfo.txt") }, - { "Copy Protection", "(REQUIRED, IF EXISTS)" }, - { "DAT", GetDatfile(combinedBase + ".dat") }, + { Constants.TitleField, "(REQUIRED)" }, + { Constants.DiscNumberField, "(OPTIONAL)" }, + { Constants.DiscTitleField, "(OPTIONAL)" }, + { Constants.CategoryField, "Games" }, + { Constants.RegionField, "World (CHANGE THIS)" }, + { Constants.LanguagesField, "Klingon (CHANGE THIS)" }, + { Constants.DiscSerialField, "(OPTIONAL)" }, + { Constants.MouldSIDField, "" }, + { Constants.AdditionalMouldField, "" }, + { Constants.BarcodeField, "" }, + { Constants.ISBNField, "" }, + { Constants.CommentsField, "(OPTIONAL)" }, + { Constants.ContentsField, "(OPTIONAL)" }, + { Constants.VersionField, "" }, + { Constants.EditionField, "Original (VERIFY THIS)" }, + { Constants.PVDField, GetPVD(combinedBase + "_mainInfo.txt") }, + { Constants.DATField, GetDatfile(combinedBase + ".dat") }, }; // Now we want to do a check by DiscType and extract all required info @@ -767,32 +768,34 @@ namespace DICUI { case DiscType.CD: // TODO: Add SecuROM data, but only if found case DiscType.GDROM: // TODO: Verify GD-ROM outputs this - mappings["Mastering Ring"] = ""; - mappings["Mastering SID Code"] = ""; - mappings["Mould SID Code"] = ""; - mappings["Additional Mould"] = ""; - mappings["Toolstamp or Mastering Code"] = ""; - mappings["Error Count"] = GetErrorCount(combinedBase + ".img_EdcEcc.txt", + mappings[Constants.MasteringRingField] = ""; + mappings[Constants.MasteringSIDField] = ""; + mappings[Constants.ToolstampField] = ""; + mappings[Constants.ErrorCountField] = GetErrorCount(combinedBase + ".img_EdcEcc.txt", combinedBase + "_c2Error.txt", combinedBase + "_mainError.txt").ToString(); - mappings["Cuesheet"] = GetCuesheet(combinedBase + ".cue"); - mappings["Write Offset"] = GetWriteOffset(combinedBase + "_disc.txt"); + mappings[Constants.CuesheetField] = GetCuesheet(combinedBase + ".cue"); + mappings[Constants.WriteOffsetField] = GetWriteOffset(combinedBase + "_disc.txt"); // System-specific options switch (sys) { + case KnownSystem.AppleMacintosh: + case KnownSystem.IBMPCCompatible: + mappings[Constants.CopyProtectionField] = "(REQUIRED, IF EXISTS)"; + break; case KnownSystem.SegaSaturn: - mappings["Header"] = ""; // GetSaturnHeader(GetFirstTrack(outputDirectory, outputFilename)); - mappings["Build Date"] = ""; //GetSaturnBuildDate(GetFirstTrack(outputDirectory, outputFilename)); + mappings[Constants.SaturnHeaderField] = ""; // GetSaturnHeader(GetFirstTrack(outputDirectory, outputFilename)); + mappings[Constants.SaturnBuildDateField] = ""; //GetSaturnBuildDate(GetFirstTrack(outputDirectory, outputFilename)); break; case KnownSystem.SonyPlayStation: - mappings["EXE Date"] = ""; // GetPlaysStationEXEDate(combinedBase + "_mainInfo.txt"); - mappings["EDC"] = "Yes/No"; - mappings["Anti-modchip"] = "Yes/No"; - mappings["LibCrypt"] = "Yes/No"; + mappings[Constants.PlaystationEXEDateField] = ""; // GetPlaysStationEXEDate(combinedBase + "_mainInfo.txt"); + mappings[Constants.PlayStationEDCField] = "Yes/No"; + mappings[Constants.PlayStationAntiModchipField] = "Yes/No"; + mappings[Constants.PlayStationLibCryptField] = "Yes/No"; break; case KnownSystem.SonyPlayStation2: - mappings["EXE Date"] = ""; // GetPlaysStationEXEDate(combinedBase + "_mainInfo.txt"); + mappings[Constants.PlaystationEXEDateField] = ""; // GetPlaysStationEXEDate(combinedBase + "_mainInfo.txt"); break; } @@ -800,47 +803,45 @@ namespace DICUI case DiscType.DVD5: case DiscType.HDDVD: case DiscType.BD25: - mappings["Mastering Ring"] = ""; - mappings["Mastering SID Code"] = ""; - mappings["Mould SID Code"] = ""; - mappings["Additional Mould"] = ""; - mappings["Toolstamp or Mastering Code"] = ""; + mappings[Constants.MasteringRingField] = ""; + mappings[Constants.MasteringSIDField] = ""; + mappings[Constants.ToolstampField] = ""; // System-specific options switch (sys) { + case KnownSystem.AppleMacintosh: + case KnownSystem.IBMPCCompatible: + mappings[Constants.CopyProtectionField] = "(REQUIRED, IF EXISTS)"; + break; case KnownSystem.SonyPlayStation2: - mappings["EXE Date"] = ""; // GetPlaysStationEXEDate(combinedBase + "_mainInfo.txt"); + mappings[Constants.PlaystationEXEDateField] = ""; // GetPlaysStationEXEDate(combinedBase + "_mainInfo.txt"); break; } break; case DiscType.DVD9: case DiscType.BD50: - mappings["Outer Mastering Ring"] = ""; - mappings["Inner Mastering Ring"] = ""; - mappings["Outer Mastering SID Code"] = ""; - mappings["Inner Mastering SID Code"] = ""; - mappings["Mould SID Code"] = ""; - mappings["Additional Mould"] = ""; - mappings["Outer Toolstamp or Mastering Code"] = ""; - mappings["Inner Toolstamp or Mastering Code"] = ""; - mappings["Layerbreak"] = GetLayerbreak(combinedBase + "_disc.txt"); + mappings["Outer " + Constants.MasteringRingField] = ""; + mappings["Inner " + Constants.MasteringRingField] = ""; + mappings["Outer " + Constants.MasteringSIDField] = ""; + mappings["Inner " + Constants.MasteringSIDField] = ""; + mappings["Outer " + Constants.ToolstampField] = ""; + mappings["Inner " + Constants.ToolstampField] = ""; + mappings[Constants.LayerbreakField] = GetLayerbreak(combinedBase + "_disc.txt"); // System-specific options switch (sys) { + case KnownSystem.AppleMacintosh: + case KnownSystem.IBMPCCompatible: + mappings[Constants.CopyProtectionField] = "(REQUIRED, IF EXISTS)"; + break; case KnownSystem.SonyPlayStation2: - mappings["EXE Date"] = ""; // GetPlaysStationEXEDate(combinedBase + "_mainInfo.txt"); + mappings[Constants.PlaystationEXEDateField] = ""; // GetPlaysStationEXEDate(combinedBase + "_mainInfo.txt"); break; } - break; - case DiscType.GameCubeGameDisc: - case DiscType.UMD: - case DiscType.Floppy: - default: - // No-op break; } @@ -1094,5 +1095,123 @@ namespace DICUI } } } + + /// + /// Format the output data in a human readable way, separating each printed line into a new item in the list + /// + /// Information dictionary that should contain normalized values + /// KnownSystem value to check + /// DiscType value to check + /// List of strings representing each line of an output file, null on error + /// TODO: Get full list of customizable stuff for other systems + public static List FormatOutputData(Dictionary info, KnownSystem? sys, DiscType? type) + { + // Check to see if the inputs are valid + if (info == null) + { + return null; + } + + try + { + List output = new List(); + + output.Add(Constants.TitleField + ": " + info[Constants.TitleField]); + output.Add(Constants.DiscNumberField + ": " + info[Constants.DiscNumberField]); + output.Add(Constants.DiscTitleField + ": " + info[Constants.DiscTitleField]); + output.Add(Constants.CategoryField + ": " + info[Constants.CategoryField]); + output.Add(Constants.RegionField + ": " + info[Constants.RegionField]); + output.Add(Constants.LanguagesField + ": " + info[Constants.LanguagesField]); + output.Add(Constants.DiscSerialField + ": " + info[Constants.DiscSerialField]); + switch(sys) + { + case KnownSystem.SegaSaturn: + output.Add(Constants.SaturnBuildDateField + ": " + info[Constants.SaturnBuildDateField]); + break; + case KnownSystem.SonyPlayStation: + case KnownSystem.SonyPlayStation2: + output.Add(Constants.PlaystationEXEDateField + ": " + info[Constants.PlaystationEXEDateField]); + break; + } + switch (type) + { + case DiscType.CD: + case DiscType.GDROM: + case DiscType.DVD5: + case DiscType.HDDVD: + case DiscType.BD25: + output.Add(Constants.MasteringRingField + ": " + info[Constants.MasteringRingField]); + output.Add(Constants.MasteringSIDField + ": " + info[Constants.MasteringSIDField]); + output.Add(Constants.MouldSIDField + ": " + info[Constants.MouldSIDField]); + output.Add(Constants.AdditionalMouldField + ": " + info[Constants.AdditionalMouldField]); + output.Add(Constants.ToolstampField + ": " + info[Constants.ToolstampField]); + break; + case DiscType.DVD9: + case DiscType.BD50: + output.Add("Outer " + Constants.MasteringRingField + ": " + info["Outer " + Constants.MasteringRingField]); + output.Add("Inner " + Constants.MasteringRingField + ": " + info["Inner " + Constants.MasteringRingField]); + output.Add("Outer " + Constants.MasteringSIDField + ": " + info["Outer " + Constants.MasteringSIDField]); + output.Add("Inner " + Constants.MasteringSIDField + ": " + info["Inner " + Constants.MasteringSIDField]); + output.Add(Constants.MouldSIDField + ": " + info[Constants.MouldSIDField]); + output.Add(Constants.AdditionalMouldField + ": " + info[Constants.AdditionalMouldField]); + output.Add("Outer " + Constants.ToolstampField + ": " + info["Outer " + Constants.ToolstampField]); + output.Add("Inner " + Constants.ToolstampField + ": " + info["Inner " + Constants.ToolstampField]); + break; + } + output.Add(info[Constants.BarcodeField]); + output.Add(info[Constants.ISBNField]); + switch (type) + { + case DiscType.CD: + case DiscType.GDROM: + output.Add(Constants.ErrorCountField + ": " + info[Constants.ErrorCountField]); + break; + } + output.Add(Constants.CommentsField + ": " + info[Constants.CommentsField]); + output.Add(Constants.ContentsField + ": " + info[Constants.ContentsField]); + output.Add(Constants.VersionField + ": " + info[Constants.VersionField]); + output.Add(Constants.EditionField + ": " + info[Constants.EditionField]); + switch (sys) + { + case KnownSystem.SegaSaturn: + output.Add(Constants.SaturnHeaderField + ":"); output.Add(""); + output.AddRange(info[Constants.SaturnHeaderField].Split('\n')); output.Add(""); + break; + case KnownSystem.SonyPlayStation: + output.Add(Constants.PlayStationEDCField + ": " + info[Constants.PlayStationEDCField]); + output.Add(Constants.PlayStationAntiModchipField + ": " + info[Constants.PlayStationAntiModchipField]); + output.Add(Constants.PlayStationLibCryptField + ": " + info[Constants.PlayStationLibCryptField]); + break; + } + output.Add(Constants.PVDField + ":"); output.Add(""); + output.AddRange(info[Constants.PVDField].Split('\n')); output.Add(""); + switch (sys) + { + case KnownSystem.AppleMacintosh: + case KnownSystem.IBMPCCompatible: + output.Add(Constants.CopyProtectionField + ": " + info[Constants.CopyProtectionField]); output.Add(""); + break; + } + // TODO: Add SecuROM data here for relevant things + switch (type) + { + case DiscType.CD: + case DiscType.GDROM: + output.Add(Constants.CuesheetField + ":"); output.Add(""); + output.AddRange(info[Constants.CuesheetField].Split('\n')); output.Add(""); + output.Add(Constants.WriteOffsetField + ": " + info[Constants.WriteOffsetField]); output.Add(""); + break; + } + output.Add(Constants.DATField + ":"); output.Add(""); + output.AddRange(info[Constants.DATField].Split('\n')); output.Add(""); + + return output; + } + catch + { + // We don't care what the error is + return null; + } + } } }