From 7facc8e89b1535596257e4e17b89cbcb675be72b Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 15 May 2016 20:42:15 -0700 Subject: [PATCH] Pre-emptively add RomCenter output --- SabreHelper/Output.cs | 150 +++++++++++++++++++++++++++++------------- 1 file changed, 103 insertions(+), 47 deletions(-) diff --git a/SabreHelper/Output.cs b/SabreHelper/Output.cs index ef532a11..f1d6727d 100644 --- a/SabreHelper/Output.cs +++ b/SabreHelper/Output.cs @@ -206,33 +206,54 @@ namespace SabreTools.Helper FileStream fs = File.Create(outDir + datdata.Description + (datdata.OutputFormat == OutputFormat.Xml ? ".xml" : ".dat")); StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); - string header_old = "clrmamepro (\n" + - "\tname \"" + HttpUtility.HtmlEncode(datdata.Name) + "\"\n" + - "\tdescription \"" + HttpUtility.HtmlEncode(datdata.Description) + "\"\n" + - "\tcategory \"" + HttpUtility.HtmlEncode(datdata.Category) + "\"\n" + - "\tversion \"" + HttpUtility.HtmlEncode(datdata.Version) + "\"\n" + - "\tdate \"" + HttpUtility.HtmlEncode(datdata.Date) + "\"\n" + - "\tauthor \"" + HttpUtility.HtmlEncode(datdata.Author) + "\"\n" + - "\tcomment \"" + HttpUtility.HtmlEncode(datdata.Comment) + "\"\n" + - (datdata.ForcePacking == ForcePacking.Unzip ? "\tforcezipping no\n" : "") + - ")\n"; - - string header = "\n" + - "\n\n" + - "\n" + - "\t
\n" + - "\t\t" + HttpUtility.HtmlEncode(datdata.Name) + "\n" + - "\t\t" + HttpUtility.HtmlEncode(datdata.Description) + "\n" + - "\t\t" + HttpUtility.HtmlEncode(datdata.Category) + "\n" + - "\t\t" + HttpUtility.HtmlEncode(datdata.Version) + "\n" + - "\t\t" + HttpUtility.HtmlEncode(datdata.Date) + "\n" + - "\t\t" + HttpUtility.HtmlEncode(datdata.Author) + "\n" + - "\t\t" + HttpUtility.HtmlEncode(datdata.Comment) + "\n" + - (datdata.ForcePacking == ForcePacking.Unzip ? "\t\t\n" : "") + - "\t
\n"; + string header = ""; + switch (datdata.OutputFormat) + { + case OutputFormat.ClrMamePro: + header = "clrmamepro (\n" + + "\tname \"" + HttpUtility.HtmlEncode(datdata.Name) + "\"\n" + + "\tdescription \"" + HttpUtility.HtmlEncode(datdata.Description) + "\"\n" + + "\tcategory \"" + HttpUtility.HtmlEncode(datdata.Category) + "\"\n" + + "\tversion \"" + HttpUtility.HtmlEncode(datdata.Version) + "\"\n" + + "\tdate \"" + HttpUtility.HtmlEncode(datdata.Date) + "\"\n" + + "\tauthor \"" + HttpUtility.HtmlEncode(datdata.Author) + "\"\n" + + "\tcomment \"" + HttpUtility.HtmlEncode(datdata.Comment) + "\"\n" + + (datdata.ForcePacking == ForcePacking.Unzip ? "\tforcezipping no\n" : "") + + ")\n"; + break; + case OutputFormat.RomCenter: + header = "[CREDITS]\n" + + "author=" + HttpUtility.HtmlEncode(datdata.Author) + "\n" + + "version=" + HttpUtility.HtmlEncode(datdata.Version) + "\n" + + "comment=" + HttpUtility.HtmlEncode(datdata.Comment) + "\n" + + "[DAT]\n" + + "version=2.50\n" + + "split=" + (datdata.ForceMerging == ForceMerging.Split ? "1" : "0") + "\n" + + "merge=" + (datdata.ForceMerging == ForceMerging.Full ? "1" : "0") + "\n" + + "[EMULATOR]\n" + + "refname=" + HttpUtility.HtmlEncode(datdata.Name) + "\n" + + "version=" + HttpUtility.HtmlEncode(datdata.Description) + "\n" + + "[GAMES]\n"; + break; + case OutputFormat.Xml: + header = "\n" + + "\n\n" + + "\n" + + "\t
\n" + + "\t\t" + HttpUtility.HtmlEncode(datdata.Name) + "\n" + + "\t\t" + HttpUtility.HtmlEncode(datdata.Description) + "\n" + + "\t\t" + HttpUtility.HtmlEncode(datdata.Category) + "\n" + + "\t\t" + HttpUtility.HtmlEncode(datdata.Version) + "\n" + + "\t\t" + HttpUtility.HtmlEncode(datdata.Date) + "\n" + + "\t\t" + HttpUtility.HtmlEncode(datdata.Author) + "\n" + + "\t\t" + HttpUtility.HtmlEncode(datdata.Comment) + "\n" + + (datdata.ForcePacking == ForcePacking.Unzip ? "\t\t\n" : "") + + "\t
\n"; + break; + } // Write the header out - sw.Write((datdata.OutputFormat == OutputFormat.ClrMamePro ? header_old : header)); + sw.Write(header); // Write out each of the machines and roms string lastgame = null; @@ -243,34 +264,58 @@ namespace SabreTools.Helper string state = ""; if (lastgame != null && lastgame.ToLowerInvariant() != rom.Game.ToLowerInvariant()) { - state += (datdata.OutputFormat == OutputFormat.ClrMamePro ? ")\n" : "\t\n"); + switch (datdata.OutputFormat) + { + case OutputFormat.ClrMamePro: + state += ")\n"; + break; + case OutputFormat.Xml: + state += "\t \n"; + break; + } } if (lastgame == null || lastgame.ToLowerInvariant() != rom.Game.ToLowerInvariant()) { - state += (datdata.OutputFormat == OutputFormat.ClrMamePro ? "game (\n\tname \"" + rom.Game + "\"\n" + - "\tdescription \"" + rom.Game + "\"\n" : - "\t\n" + - "\t\t" + HttpUtility.HtmlEncode(rom.Game) + "\n"); + switch (datdata.OutputFormat) + { + case OutputFormat.ClrMamePro: + state += "game (\n\tname \"" + rom.Game + "\"\n" + + "\tdescription \"" + rom.Game + "\"\n"; + break; + case OutputFormat.Xml: + state += "\t\n" + + "\t\t" + HttpUtility.HtmlEncode(rom.Game) + "\n"; + break; + } } - if (datdata.OutputFormat == OutputFormat.ClrMamePro) + // Now output the rom data + switch (datdata.OutputFormat) { - state += "\t" + rom.Type + " ( name \"" + rom.Name + "\"" + - (rom.Size != 0 ? " size " + rom.Size : "") + - (rom.CRC != "" ? " crc " + rom.CRC.ToLowerInvariant() : "") + - (rom.MD5 != "" ? " md5 " + rom.MD5.ToLowerInvariant() : "") + - (rom.SHA1 != "" ? " sha1 " + rom.SHA1.ToLowerInvariant() : "") + - " )\n"; - } - else if (datdata.OutputFormat == OutputFormat.Xml) - { - state += "\t\t<" + rom.Type + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" + - (rom.Size != -1 ? " size=\"" + rom.Size + "\"" : "") + - (rom.CRC != "" ? " crc=\"" + rom.CRC.ToLowerInvariant() + "\"" : "") + - (rom.MD5 != "" ? " md5=\"" + rom.MD5.ToLowerInvariant() + "\"" : "") + - (rom.SHA1 != "" ? " sha1=\"" + rom.SHA1.ToLowerInvariant() + "\"" : "") + - "/>\n"; + case OutputFormat.ClrMamePro: + state += "\t" + rom.Type + " ( name \"" + rom.Name + "\"" + + (rom.Size != 0 ? " size " + rom.Size : "") + + (rom.CRC != "" ? " crc " + rom.CRC.ToLowerInvariant() : "") + + (rom.MD5 != "" ? " md5 " + rom.MD5.ToLowerInvariant() : "") + + (rom.SHA1 != "" ? " sha1 " + rom.SHA1.ToLowerInvariant() : "") + + " )\n"; + break; + case OutputFormat.RomCenter: + state += "¬¬¬" + HttpUtility.HtmlEncode(rom.Game) + + "¬" + HttpUtility.HtmlEncode(rom.Game) + + "¬" + HttpUtility.HtmlEncode(rom.Name) + + "¬" + rom.CRC.ToLowerInvariant() + + "¬" + (rom.Size != -1 ? rom.Size.ToString() : "") + "¬¬¬"; + break; + case OutputFormat.Xml: + state += "\t\t<" + rom.Type + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" + + (rom.Size != -1 ? " size=\"" + rom.Size + "\"" : "") + + (rom.CRC != "" ? " crc=\"" + rom.CRC.ToLowerInvariant() + "\"" : "") + + (rom.MD5 != "" ? " md5=\"" + rom.MD5.ToLowerInvariant() + "\"" : "") + + (rom.SHA1 != "" ? " sha1=\"" + rom.SHA1.ToLowerInvariant() + "\"" : "") + + "/>\n"; + break; } lastgame = rom.Game; @@ -279,7 +324,18 @@ namespace SabreTools.Helper } } - sw.Write((datdata.OutputFormat == OutputFormat.ClrMamePro ? ")" : "\t\n
")); + string footer = ""; + switch (datdata.OutputFormat) + { + case OutputFormat.ClrMamePro: + footer = ")"; + break; + case OutputFormat.Xml: + footer = "\t\n
"; + break; + } + + sw.Write(footer); logger.User("File written!" + Environment.NewLine); sw.Close(); fs.Close();