mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Refactor write rom
This commit is contained in:
@@ -85,7 +85,7 @@ namespace SabreTools.Helper
|
|||||||
StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
|
StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
|
||||||
|
|
||||||
// Write out the header
|
// Write out the header
|
||||||
WriteHeader(sw, datdata);
|
WriteHeader(sw, datdata, logger);
|
||||||
|
|
||||||
// Write out each of the machines and roms
|
// Write out each of the machines and roms
|
||||||
int depth = 2, last = -1;
|
int depth = 2, last = -1;
|
||||||
@@ -198,111 +198,11 @@ namespace SabreTools.Helper
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Now, output the rom data
|
// Now, output the rom data
|
||||||
switch (datdata.OutputFormat)
|
WriteRomData(sw, rom, lastgame, datdata, depth, logger);
|
||||||
{
|
|
||||||
case OutputFormat.ClrMamePro:
|
|
||||||
state += "\t" + rom.Type + " ( name \"" + rom.Name + "\"" +
|
|
||||||
(rom.Size != -1 ? " size " + rom.Size : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.CRC) ? " crc " + rom.CRC.ToLowerInvariant() : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.MD5) ? " md5 " + rom.MD5.ToLowerInvariant() : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.SHA1) ? " sha1 " + rom.SHA1.ToLowerInvariant() : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.Date) ? " date \"" + rom.Date + "\"" : "") +
|
|
||||||
(rom.Nodump ? " flags nodump" : "") +
|
|
||||||
" )\n";
|
|
||||||
break;
|
|
||||||
case OutputFormat.MissFile:
|
|
||||||
string pre = datdata.Prefix + (datdata.Quotes ? "\"" : "");
|
|
||||||
string post = (datdata.Quotes ? "\"" : "") + datdata.Postfix;
|
|
||||||
|
|
||||||
// Check for special strings in prefix and postfix
|
|
||||||
pre = pre.Replace("%crc%", rom.CRC).Replace("%md5%", rom.MD5).Replace("%sha1%", rom.SHA1).Replace("%size%", rom.Size.ToString());
|
|
||||||
post = post.Replace("%crc%", rom.CRC).Replace("%md5%", rom.MD5).Replace("%sha1%", rom.SHA1).Replace("%size%", rom.Size.ToString());
|
|
||||||
|
|
||||||
// If we're in Romba mode, the state is consistent
|
|
||||||
if (datdata.Romba)
|
|
||||||
{
|
|
||||||
// We can only write out if there's a SHA-1
|
|
||||||
if (rom.SHA1 != "")
|
|
||||||
{
|
|
||||||
string name = "/" + rom.SHA1.Substring(0, 2) + "/" + rom.SHA1.Substring(2, 2) + "/" + rom.SHA1.Substring(4, 2) + "/" +
|
|
||||||
rom.SHA1.Substring(6, 2) + "/" + rom.SHA1 + ".gz\n";
|
|
||||||
state += pre + name + post;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Otherwise, use any flags
|
|
||||||
else
|
|
||||||
{
|
|
||||||
string name = (datdata.UseGame ? rom.Game : rom.Name);
|
|
||||||
if (datdata.RepExt != "")
|
|
||||||
{
|
|
||||||
string dir = Path.GetDirectoryName(name);
|
|
||||||
dir = (dir.EndsWith(Path.DirectorySeparatorChar.ToString()) ? dir : dir + Path.DirectorySeparatorChar);
|
|
||||||
dir = (dir.StartsWith(Path.DirectorySeparatorChar.ToString()) ? dir.Remove(0, 1) : dir);
|
|
||||||
name = dir + Path.GetFileNameWithoutExtension(name) + datdata.RepExt;
|
|
||||||
}
|
|
||||||
if (datdata.AddExt != "")
|
|
||||||
{
|
|
||||||
name += datdata.AddExt;
|
|
||||||
}
|
|
||||||
if (!datdata.UseGame && datdata.GameName)
|
|
||||||
{
|
|
||||||
name = (rom.Game.EndsWith(Path.DirectorySeparatorChar.ToString()) ? rom.Game : rom.Game + Path.DirectorySeparatorChar) + name;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (datdata.UseGame && rom.Game != lastgame)
|
|
||||||
{
|
|
||||||
state += pre + name + post + "\n";
|
|
||||||
lastgame = rom.Game;
|
|
||||||
}
|
|
||||||
else if (!datdata.UseGame)
|
|
||||||
{
|
|
||||||
state += pre + name + post + "\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() : "") + "¬¬¬\n";
|
|
||||||
break;
|
|
||||||
case OutputFormat.SabreDat:
|
|
||||||
string prefix = "";
|
|
||||||
for (int i = 0; i < depth; i++)
|
|
||||||
{
|
|
||||||
prefix += "\t";
|
|
||||||
}
|
|
||||||
|
|
||||||
state += prefix;
|
|
||||||
state += "<file type=\"" + rom.Type + "\" name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" +
|
|
||||||
(rom.Size != -1 ? " size=\"" + rom.Size + "\"" : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.CRC) ? " crc=\"" + rom.CRC.ToLowerInvariant() + "\"" : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.MD5) ? " md5=\"" + rom.MD5.ToLowerInvariant() + "\"" : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.SHA1) ? " sha1=\"" + rom.SHA1.ToLowerInvariant() + "\"" : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.Date) ? " date=\"" + rom.Date + "\"" : "") +
|
|
||||||
(rom.Nodump ? prefix + "/>\n" + prefix + "\t<flags>\n" +
|
|
||||||
prefix + "\t\t<flag name=\"status\" value=\"nodump\"/>\n" +
|
|
||||||
prefix + "\t</flags>\n" +
|
|
||||||
prefix + "</file>\n" :
|
|
||||||
"/>\n");
|
|
||||||
break;
|
|
||||||
case OutputFormat.Xml:
|
|
||||||
state += "\t\t<" + rom.Type + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" +
|
|
||||||
(rom.Size != -1 ? " size=\"" + rom.Size + "\"" : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.CRC) ? " crc=\"" + rom.CRC.ToLowerInvariant() + "\"" : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.MD5) ? " md5=\"" + rom.MD5.ToLowerInvariant() + "\"" : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.SHA1) ? " sha1=\"" + rom.SHA1.ToLowerInvariant() + "\"" : "") +
|
|
||||||
(!String.IsNullOrEmpty(rom.Date) ? " date=\"" + rom.Date + "\"" : "") +
|
|
||||||
(rom.Nodump ? " status=\"nodump\"" : "") +
|
|
||||||
"/>\n";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Set the new data to compare against
|
||||||
splitpath = newsplit;
|
splitpath = newsplit;
|
||||||
lastgame = rom.Game;
|
lastgame = rom.Game;
|
||||||
|
|
||||||
sw.Write(state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,77 +243,202 @@ namespace SabreTools.Helper
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool WriteHeader(StreamWriter sw, DatData datdata)
|
public static bool WriteHeader(StreamWriter sw, DatData datdata, Logger logger)
|
||||||
{
|
{
|
||||||
string header = "";
|
try
|
||||||
switch (datdata.OutputFormat)
|
|
||||||
{
|
{
|
||||||
case OutputFormat.ClrMamePro:
|
string header = "";
|
||||||
header = "clrmamepro (\n" +
|
switch (datdata.OutputFormat)
|
||||||
"\tname \"" + HttpUtility.HtmlEncode(datdata.Name) + "\"\n" +
|
{
|
||||||
"\tdescription \"" + HttpUtility.HtmlEncode(datdata.Description) + "\"\n" +
|
case OutputFormat.ClrMamePro:
|
||||||
"\tcategory \"" + HttpUtility.HtmlEncode(datdata.Category) + "\"\n" +
|
header = "clrmamepro (\n" +
|
||||||
"\tversion \"" + HttpUtility.HtmlEncode(datdata.Version) + "\"\n" +
|
"\tname \"" + HttpUtility.HtmlEncode(datdata.Name) + "\"\n" +
|
||||||
"\tdate \"" + HttpUtility.HtmlEncode(datdata.Date) + "\"\n" +
|
"\tdescription \"" + HttpUtility.HtmlEncode(datdata.Description) + "\"\n" +
|
||||||
"\tauthor \"" + HttpUtility.HtmlEncode(datdata.Author) + "\"\n" +
|
"\tcategory \"" + HttpUtility.HtmlEncode(datdata.Category) + "\"\n" +
|
||||||
"\tcomment \"" + HttpUtility.HtmlEncode(datdata.Comment) + "\"\n" +
|
"\tversion \"" + HttpUtility.HtmlEncode(datdata.Version) + "\"\n" +
|
||||||
(datdata.ForcePacking == ForcePacking.Unzip ? "\tforcezipping no\n" : "") +
|
"\tdate \"" + HttpUtility.HtmlEncode(datdata.Date) + "\"\n" +
|
||||||
")\n";
|
"\tauthor \"" + HttpUtility.HtmlEncode(datdata.Author) + "\"\n" +
|
||||||
break;
|
"\tcomment \"" + HttpUtility.HtmlEncode(datdata.Comment) + "\"\n" +
|
||||||
case OutputFormat.RomCenter:
|
(datdata.ForcePacking == ForcePacking.Unzip ? "\tforcezipping no\n" : "") +
|
||||||
header = "[CREDITS]\n" +
|
")\n";
|
||||||
"author=" + HttpUtility.HtmlEncode(datdata.Author) + "\n" +
|
break;
|
||||||
"version=" + HttpUtility.HtmlEncode(datdata.Version) + "\n" +
|
case OutputFormat.RomCenter:
|
||||||
"comment=" + HttpUtility.HtmlEncode(datdata.Comment) + "\n" +
|
header = "[CREDITS]\n" +
|
||||||
"[DAT]\n" +
|
"author=" + HttpUtility.HtmlEncode(datdata.Author) + "\n" +
|
||||||
"version=2.50\n" +
|
"version=" + HttpUtility.HtmlEncode(datdata.Version) + "\n" +
|
||||||
"split=" + (datdata.ForceMerging == ForceMerging.Split ? "1" : "0") + "\n" +
|
"comment=" + HttpUtility.HtmlEncode(datdata.Comment) + "\n" +
|
||||||
"merge=" + (datdata.ForceMerging == ForceMerging.Full ? "1" : "0") + "\n" +
|
"[DAT]\n" +
|
||||||
"[EMULATOR]\n" +
|
"version=2.50\n" +
|
||||||
"refname=" + HttpUtility.HtmlEncode(datdata.Name) + "\n" +
|
"split=" + (datdata.ForceMerging == ForceMerging.Split ? "1" : "0") + "\n" +
|
||||||
"version=" + HttpUtility.HtmlEncode(datdata.Description) + "\n" +
|
"merge=" + (datdata.ForceMerging == ForceMerging.Full ? "1" : "0") + "\n" +
|
||||||
"[GAMES]\n";
|
"[EMULATOR]\n" +
|
||||||
break;
|
"refname=" + HttpUtility.HtmlEncode(datdata.Name) + "\n" +
|
||||||
case OutputFormat.SabreDat:
|
"version=" + HttpUtility.HtmlEncode(datdata.Description) + "\n" +
|
||||||
header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
"[GAMES]\n";
|
||||||
"<!DOCTYPE datafile PUBLIC \"-//Logiqx//DTD ROM Management Datafile//EN\" \"http://www.logiqx.com/Dats/datafile.dtd\">\n\n" +
|
break;
|
||||||
"<datafile>\n" +
|
case OutputFormat.SabreDat:
|
||||||
"\t<header>\n" +
|
header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
||||||
"\t\t<name>" + HttpUtility.HtmlEncode(datdata.Name) + "</name>\n" +
|
"<!DOCTYPE datafile PUBLIC \"-//Logiqx//DTD ROM Management Datafile//EN\" \"http://www.logiqx.com/Dats/datafile.dtd\">\n\n" +
|
||||||
"\t\t<description>" + HttpUtility.HtmlEncode(datdata.Description) + "</description>\n" +
|
"<datafile>\n" +
|
||||||
"\t\t<category>" + HttpUtility.HtmlEncode(datdata.Category) + "</category>\n" +
|
"\t<header>\n" +
|
||||||
"\t\t<version>" + HttpUtility.HtmlEncode(datdata.Version) + "</version>\n" +
|
"\t\t<name>" + HttpUtility.HtmlEncode(datdata.Name) + "</name>\n" +
|
||||||
"\t\t<date>" + HttpUtility.HtmlEncode(datdata.Date) + "</date>\n" +
|
"\t\t<description>" + HttpUtility.HtmlEncode(datdata.Description) + "</description>\n" +
|
||||||
"\t\t<author>" + HttpUtility.HtmlEncode(datdata.Author) + "</author>\n" +
|
"\t\t<category>" + HttpUtility.HtmlEncode(datdata.Category) + "</category>\n" +
|
||||||
"\t\t<comment>" + HttpUtility.HtmlEncode(datdata.Comment) + "</comment>\n" +
|
"\t\t<version>" + HttpUtility.HtmlEncode(datdata.Version) + "</version>\n" +
|
||||||
(!String.IsNullOrEmpty(datdata.Type) && datdata.ForcePacking != ForcePacking.Unzip ?
|
"\t\t<date>" + HttpUtility.HtmlEncode(datdata.Date) + "</date>\n" +
|
||||||
"\t\t<flags>\n" +
|
"\t\t<author>" + HttpUtility.HtmlEncode(datdata.Author) + "</author>\n" +
|
||||||
(!String.IsNullOrEmpty(datdata.Type) ? "\t\t\t<flag name=\"type\" value=\"" + datdata.Type + "\"/>\n" : "") +
|
"\t\t<comment>" + HttpUtility.HtmlEncode(datdata.Comment) + "</comment>\n" +
|
||||||
(datdata.ForcePacking == ForcePacking.Unzip ? "\t\t\t<flag name=\"forcepacking\" value=\"unzip\"/>\n" : "") +
|
(!String.IsNullOrEmpty(datdata.Type) && datdata.ForcePacking != ForcePacking.Unzip ?
|
||||||
"\t\t</flags>\n" : "") +
|
"\t\t<flags>\n" +
|
||||||
"\t</header>\n" +
|
(!String.IsNullOrEmpty(datdata.Type) ? "\t\t\t<flag name=\"type\" value=\"" + datdata.Type + "\"/>\n" : "") +
|
||||||
"\t<data>\n";
|
(datdata.ForcePacking == ForcePacking.Unzip ? "\t\t\t<flag name=\"forcepacking\" value=\"unzip\"/>\n" : "") +
|
||||||
break;
|
"\t\t</flags>\n" : "") +
|
||||||
case OutputFormat.Xml:
|
"\t</header>\n" +
|
||||||
header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
"\t<data>\n";
|
||||||
"<!DOCTYPE datafile PUBLIC \"-//Logiqx//DTD ROM Management Datafile//EN\" \"http://www.logiqx.com/Dats/datafile.dtd\">\n\n" +
|
break;
|
||||||
"<datafile>\n" +
|
case OutputFormat.Xml:
|
||||||
"\t<header>\n" +
|
header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
||||||
"\t\t<name>" + HttpUtility.HtmlEncode(datdata.Name) + "</name>\n" +
|
"<!DOCTYPE datafile PUBLIC \"-//Logiqx//DTD ROM Management Datafile//EN\" \"http://www.logiqx.com/Dats/datafile.dtd\">\n\n" +
|
||||||
"\t\t<description>" + HttpUtility.HtmlEncode(datdata.Description) + "</description>\n" +
|
"<datafile>\n" +
|
||||||
"\t\t<category>" + HttpUtility.HtmlEncode(datdata.Category) + "</category>\n" +
|
"\t<header>\n" +
|
||||||
"\t\t<version>" + HttpUtility.HtmlEncode(datdata.Version) + "</version>\n" +
|
"\t\t<name>" + HttpUtility.HtmlEncode(datdata.Name) + "</name>\n" +
|
||||||
"\t\t<date>" + HttpUtility.HtmlEncode(datdata.Date) + "</date>\n" +
|
"\t\t<description>" + HttpUtility.HtmlEncode(datdata.Description) + "</description>\n" +
|
||||||
"\t\t<author>" + HttpUtility.HtmlEncode(datdata.Author) + "</author>\n" +
|
"\t\t<category>" + HttpUtility.HtmlEncode(datdata.Category) + "</category>\n" +
|
||||||
"\t\t<comment>" + HttpUtility.HtmlEncode(datdata.Comment) + "</comment>\n" +
|
"\t\t<version>" + HttpUtility.HtmlEncode(datdata.Version) + "</version>\n" +
|
||||||
(!String.IsNullOrEmpty(datdata.Type) ? "\t\t<type>" + datdata.Type + "</type>\n" : "") +
|
"\t\t<date>" + HttpUtility.HtmlEncode(datdata.Date) + "</date>\n" +
|
||||||
(datdata.ForcePacking == ForcePacking.Unzip ? "\t\t<clrmamepro forcepacking=\"unzip\" />\n" : "") +
|
"\t\t<author>" + HttpUtility.HtmlEncode(datdata.Author) + "</author>\n" +
|
||||||
"\t</header>\n";
|
"\t\t<comment>" + HttpUtility.HtmlEncode(datdata.Comment) + "</comment>\n" +
|
||||||
break;
|
(!String.IsNullOrEmpty(datdata.Type) ? "\t\t<type>" + datdata.Type + "</type>\n" : "") +
|
||||||
|
(datdata.ForcePacking == ForcePacking.Unzip ? "\t\t<clrmamepro forcepacking=\"unzip\" />\n" : "") +
|
||||||
|
"\t</header>\n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write the header out
|
||||||
|
sw.Write(header);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
logger.Error(ex.ToString());
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write the header out
|
return true;
|
||||||
sw.Write(header);
|
}
|
||||||
|
|
||||||
|
public static bool WriteRomData(StreamWriter sw, RomData rom, string lastgame, DatData datdata, int depth, Logger logger)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string state = "";
|
||||||
|
switch (datdata.OutputFormat)
|
||||||
|
{
|
||||||
|
case OutputFormat.ClrMamePro:
|
||||||
|
state += "\t" + rom.Type + " ( name \"" + rom.Name + "\"" +
|
||||||
|
(rom.Size != -1 ? " size " + rom.Size : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.CRC) ? " crc " + rom.CRC.ToLowerInvariant() : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.MD5) ? " md5 " + rom.MD5.ToLowerInvariant() : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.SHA1) ? " sha1 " + rom.SHA1.ToLowerInvariant() : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.Date) ? " date \"" + rom.Date + "\"" : "") +
|
||||||
|
(rom.Nodump ? " flags nodump" : "") +
|
||||||
|
" )\n";
|
||||||
|
break;
|
||||||
|
case OutputFormat.MissFile:
|
||||||
|
string pre = datdata.Prefix + (datdata.Quotes ? "\"" : "");
|
||||||
|
string post = (datdata.Quotes ? "\"" : "") + datdata.Postfix;
|
||||||
|
|
||||||
|
// Check for special strings in prefix and postfix
|
||||||
|
pre = pre.Replace("%crc%", rom.CRC).Replace("%md5%", rom.MD5).Replace("%sha1%", rom.SHA1).Replace("%size%", rom.Size.ToString());
|
||||||
|
post = post.Replace("%crc%", rom.CRC).Replace("%md5%", rom.MD5).Replace("%sha1%", rom.SHA1).Replace("%size%", rom.Size.ToString());
|
||||||
|
|
||||||
|
// If we're in Romba mode, the state is consistent
|
||||||
|
if (datdata.Romba)
|
||||||
|
{
|
||||||
|
// We can only write out if there's a SHA-1
|
||||||
|
if (rom.SHA1 != "")
|
||||||
|
{
|
||||||
|
string name = "/" + rom.SHA1.Substring(0, 2) + "/" + rom.SHA1.Substring(2, 2) + "/" + rom.SHA1.Substring(4, 2) + "/" +
|
||||||
|
rom.SHA1.Substring(6, 2) + "/" + rom.SHA1 + ".gz\n";
|
||||||
|
state += pre + name + post;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Otherwise, use any flags
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string name = (datdata.UseGame ? rom.Game : rom.Name);
|
||||||
|
if (datdata.RepExt != "")
|
||||||
|
{
|
||||||
|
string dir = Path.GetDirectoryName(name);
|
||||||
|
dir = (dir.EndsWith(Path.DirectorySeparatorChar.ToString()) ? dir : dir + Path.DirectorySeparatorChar);
|
||||||
|
dir = (dir.StartsWith(Path.DirectorySeparatorChar.ToString()) ? dir.Remove(0, 1) : dir);
|
||||||
|
name = dir + Path.GetFileNameWithoutExtension(name) + datdata.RepExt;
|
||||||
|
}
|
||||||
|
if (datdata.AddExt != "")
|
||||||
|
{
|
||||||
|
name += datdata.AddExt;
|
||||||
|
}
|
||||||
|
if (!datdata.UseGame && datdata.GameName)
|
||||||
|
{
|
||||||
|
name = (rom.Game.EndsWith(Path.DirectorySeparatorChar.ToString()) ? rom.Game : rom.Game + Path.DirectorySeparatorChar) + name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (datdata.UseGame && rom.Game != lastgame)
|
||||||
|
{
|
||||||
|
state += pre + name + post + "\n";
|
||||||
|
lastgame = rom.Game;
|
||||||
|
}
|
||||||
|
else if (!datdata.UseGame)
|
||||||
|
{
|
||||||
|
state += pre + name + post + "\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() : "") + "¬¬¬\n";
|
||||||
|
break;
|
||||||
|
case OutputFormat.SabreDat:
|
||||||
|
string prefix = "";
|
||||||
|
for (int i = 0; i < depth; i++)
|
||||||
|
{
|
||||||
|
prefix += "\t";
|
||||||
|
}
|
||||||
|
|
||||||
|
state += prefix;
|
||||||
|
state += "<file type=\"" + rom.Type + "\" name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" +
|
||||||
|
(rom.Size != -1 ? " size=\"" + rom.Size + "\"" : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.CRC) ? " crc=\"" + rom.CRC.ToLowerInvariant() + "\"" : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.MD5) ? " md5=\"" + rom.MD5.ToLowerInvariant() + "\"" : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.SHA1) ? " sha1=\"" + rom.SHA1.ToLowerInvariant() + "\"" : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.Date) ? " date=\"" + rom.Date + "\"" : "") +
|
||||||
|
(rom.Nodump ? prefix + "/>\n" + prefix + "\t<flags>\n" +
|
||||||
|
prefix + "\t\t<flag name=\"status\" value=\"nodump\"/>\n" +
|
||||||
|
prefix + "\t</flags>\n" +
|
||||||
|
prefix + "</file>\n" :
|
||||||
|
"/>\n");
|
||||||
|
break;
|
||||||
|
case OutputFormat.Xml:
|
||||||
|
state += "\t\t<" + rom.Type + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" +
|
||||||
|
(rom.Size != -1 ? " size=\"" + rom.Size + "\"" : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.CRC) ? " crc=\"" + rom.CRC.ToLowerInvariant() + "\"" : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.MD5) ? " md5=\"" + rom.MD5.ToLowerInvariant() + "\"" : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.SHA1) ? " sha1=\"" + rom.SHA1.ToLowerInvariant() + "\"" : "") +
|
||||||
|
(!String.IsNullOrEmpty(rom.Date) ? " date=\"" + rom.Date + "\"" : "") +
|
||||||
|
(rom.Nodump ? " status=\"nodump\"" : "") +
|
||||||
|
"/>\n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
sw.Write(state);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
logger.Error(ex.ToString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user