diff --git a/SabreTools.Helper/Data/Enums.cs b/SabreTools.Helper/Data/Enums.cs index 05327dd1..4bd8425b 100644 --- a/SabreTools.Helper/Data/Enums.cs +++ b/SabreTools.Helper/Data/Enums.cs @@ -59,6 +59,19 @@ namespace SabreTools.Helper ExternalAll = 4, } + /// + /// Determine what type of file an item is + /// + public enum ItemType + { + Rom = 0, + Disk = 1, + Sample = 2, + Release = 3, + BiosSet = 4, + Archive = 5, + } + /// /// Determines forcemerging tag for DAT output /// diff --git a/SabreTools.Helper/Data/Structs.cs b/SabreTools.Helper/Data/Structs.cs index 063e399f..4f95d4c7 100644 --- a/SabreTools.Helper/Data/Structs.cs +++ b/SabreTools.Helper/Data/Structs.cs @@ -48,7 +48,7 @@ namespace SabreTools.Helper { public Machine Machine; public string Name; - public string Type; + public ItemType Type; public HashData HashData; public DupeType Dupe; public bool Nodump; diff --git a/SabreTools.Helper/Tools/ArchiveTools.cs b/SabreTools.Helper/Tools/ArchiveTools.cs index 0939562c..23df0bfd 100644 --- a/SabreTools.Helper/Tools/ArchiveTools.cs +++ b/SabreTools.Helper/Tools/ArchiveTools.cs @@ -536,7 +536,7 @@ namespace SabreTools.Helper roms.Add(new Rom { - Type = "rom", + Type = ItemType.Rom, Name = reader.Entry.Key, Machine = new Machine { @@ -620,7 +620,7 @@ namespace SabreTools.Helper Rom rom = new Rom { - Type = "rom", + Type = ItemType.Rom, Machine = new Machine { Name = Path.GetFileNameWithoutExtension(input).ToLowerInvariant(), diff --git a/SabreTools.Helper/Tools/DatTools.cs b/SabreTools.Helper/Tools/DatTools.cs index 1c6f0395..8d3c73e8 100644 --- a/SabreTools.Helper/Tools/DatTools.cs +++ b/SabreTools.Helper/Tools/DatTools.cs @@ -177,7 +177,7 @@ namespace SabreTools.Helper Name = gamename, Description = gamedesc, }, - Type = (line.Trim().StartsWith("disk (") ? "disk" : "rom"), + Type = (line.Trim().StartsWith("disk (") ? ItemType.Disk : ItemType.Rom), Metadata = new SourceMetadata { SystemID = sysid, SourceID = srcid }, }; @@ -300,7 +300,7 @@ namespace SabreTools.Helper rom.HashData.SHA1 = RomTools.CleanHashData(rom.HashData.SHA1, Constants.SHA1Length); // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info - if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero)) + if (rom.Type == ItemType.Rom && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero)) { rom.HashData.Size = Constants.SizeZero; rom.HashData.CRC = Constants.CRCZero; @@ -308,14 +308,14 @@ namespace SabreTools.Helper rom.HashData.SHA1 = Constants.SHA1Zero; } // If the file has no size and it's not the above case, skip and log - else if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1)) + else if (rom.Type == ItemType.Rom && (rom.HashData.Size == 0 || rom.HashData.Size == -1)) { logger.Warning("Incomplete entry for \"" + rom.Name + "\" will be output as nodump"); rom.Nodump = true; } // If we have a disk, make sure that the value for size is -1 - if (rom.Type == "disk") + if (rom.Type == ItemType.Disk) { rom.HashData.Size = -1; } @@ -334,8 +334,8 @@ namespace SabreTools.Helper } // Add statistical data - datdata.RomCount += (rom.Type == "rom" ? 1 : 0); - datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); + datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0); + datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0); datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); @@ -588,7 +588,7 @@ namespace SabreTools.Helper rom.HashData.SHA1 = RomTools.CleanHashData(rom.HashData.SHA1, Constants.SHA1Length); // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info - if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero)) + if (rom.Type == ItemType.Rom && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero)) { rom.HashData.Size = Constants.SizeZero; rom.HashData.CRC = Constants.CRCZero; @@ -596,14 +596,14 @@ namespace SabreTools.Helper rom.HashData.SHA1 = Constants.SHA1Zero; } // If the file has no size and it's not the above case, skip and log - else if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1)) + else if (rom.Type == ItemType.Rom && (rom.HashData.Size == 0 || rom.HashData.Size == -1)) { logger.Warning("Incomplete entry for \"" + rom.Name + "\" will be output as nodump"); rom.Nodump = true; } // If we have a disk, make sure that the value for size is -1 - if (rom.Type == "disk") + if (rom.Type == ItemType.Disk) { rom.HashData.Size = -1; } @@ -622,8 +622,8 @@ namespace SabreTools.Helper } // Add statistical data - datdata.RomCount += (rom.Type == "rom" ? 1 : 0); - datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); + datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0); + datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0); datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); @@ -679,7 +679,7 @@ namespace SabreTools.Helper Rom rom = new Rom { - Type = "rom", + Type = ItemType.Rom, Name = "null", Machine = new Machine { @@ -708,8 +708,8 @@ namespace SabreTools.Helper } // Add statistical data - datdata.RomCount += (rom.Type == "rom" ? 1 : 0); - datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); + datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0); + datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0); datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); @@ -1135,7 +1135,7 @@ namespace SabreTools.Helper Description = gamedesc, }, Name = subreader.GetAttribute("name"), - Type = subreader.Name, + Type = (subreader.Name.ToLowerInvariant() == "disk" ? ItemType.Disk : ItemType.Rom), HashData = new HashData { Size = size, @@ -1160,8 +1160,8 @@ namespace SabreTools.Helper } // Add statistical data - datdata.RomCount += (rom.Type == "rom" ? 1 : 0); - datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); + datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0); + datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0); datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); @@ -1188,7 +1188,7 @@ namespace SabreTools.Helper Rom rom = new Rom { - Type = "rom", + Type = ItemType.Rom, Name = "null", Machine = new Machine { @@ -1217,8 +1217,8 @@ namespace SabreTools.Helper } // Add statistical data - datdata.RomCount += (rom.Type == "rom" ? 1 : 0); - datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); + datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0); + datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0); datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); @@ -1374,7 +1374,7 @@ namespace SabreTools.Helper Name = tempname, }, Name = xtr.GetAttribute("name"), - Type = xtr.GetAttribute("type"), + Type = (xtr.GetAttribute("type").ToLowerInvariant() == "disk" ? ItemType.Disk : ItemType.Rom), HashData = new HashData { Size = size, @@ -1399,8 +1399,8 @@ namespace SabreTools.Helper } // Add statistical data - datdata.RomCount += (rom.Type == "rom" ? 1 : 0); - datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); + datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0); + datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0); datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); @@ -1864,7 +1864,7 @@ namespace SabreTools.Helper } // Filter on rom type - if (romtype != "" && rom.Type.ToLowerInvariant() != romtype.ToLowerInvariant()) + if (romtype != "" && rom.Type.ToString().ToLowerInvariant() != romtype.ToLowerInvariant()) { continue; } diff --git a/SabreTools.Helper/Tools/Output.cs b/SabreTools.Helper/Tools/Output.cs index 5d8738a9..d99dad22 100644 --- a/SabreTools.Helper/Tools/Output.cs +++ b/SabreTools.Helper/Tools/Output.cs @@ -421,7 +421,7 @@ namespace SabreTools.Helper switch (datdata.OutputFormat) { case OutputFormat.ClrMamePro: - state += "\t" + rom.Type + " ( name \"" + rom.Name + "\"" + + state += "\t" + rom.Type.ToString().ToLowerInvariant() + " ( name \"" + rom.Name + "\"" + (rom.HashData.Size != -1 ? " size " + rom.HashData.Size : "") + (!String.IsNullOrEmpty(rom.HashData.CRC) ? " crc " + rom.HashData.CRC.ToLowerInvariant() : "") + (!String.IsNullOrEmpty(rom.HashData.MD5) ? " md5 " + rom.HashData.MD5.ToLowerInvariant() : "") + @@ -453,7 +453,7 @@ namespace SabreTools.Helper else if (datdata.TSV == true) { string inline = "\"" + datdata.FileName + "\"\t\"" + datdata.Name + "\"\t\"" + datdata.Description + "\"\t\"" + rom.Machine + "\"\t\"" + rom.Machine + "\"\t\"" + - rom.Type + "\"\t\"" + (rom.Type == "rom" ? rom.Name : "") + "\"\t\"" + (rom.Type == "disk" ? rom.Name : "") + "\"\t\"" + rom.HashData.Size + "\"\t\"" + + rom.Type.ToString().ToLowerInvariant() + "\"\t\"" + (rom.Type == ItemType.Rom ? rom.Name : "") + "\"\t\"" + (rom.Type == ItemType.Disk ? rom.Name : "") + "\"\t\"" + rom.HashData.Size + "\"\t\"" + rom.HashData.CRC + "\"\t\"" + rom.HashData.MD5 + "\"\t\"" + rom.HashData.SHA1 + "\"\t" + (rom.Nodump ? "\"Nodump\"" : "\"\""); state += pre + inline + post + "\n"; } @@ -461,7 +461,7 @@ namespace SabreTools.Helper else if (datdata.TSV == false) { string inline = "\"" + datdata.FileName + "\",\"" + datdata.Name + "\",\"" + datdata.Description + "\",\"" + rom.Machine + "\",\"" + rom.Machine + "\",\"" + - rom.Type + "\",\"" + (rom.Type == "rom" ? rom.Name : "") + "\",\"" + (rom.Type == "disk" ? rom.Name : "") + "\",\"" + rom.HashData.Size + "\",\"" + + rom.Type.ToString().ToLowerInvariant() + "\",\"" + (rom.Type == ItemType.Rom ? rom.Name : "") + "\",\"" + (rom.Type == ItemType.Disk ? rom.Name : "") + "\",\"" + rom.HashData.Size + "\",\"" + rom.HashData.CRC + "\",\"" + rom.HashData.MD5 + "\",\"" + rom.HashData.SHA1 + "\"," + (rom.Nodump ? "\"Nodump\"" : "\"\""); state += pre + inline + post + "\n"; } @@ -510,7 +510,7 @@ namespace SabreTools.Helper } state += prefix; - state += "\n"); break; case OutputFormat.Xml: - state += "\t\t<" + rom.Type + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" + + state += "\t\t<" + rom.Type.ToString().ToLowerInvariant() + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" + (rom.HashData.Size != -1 ? " size=\"" + rom.HashData.Size + "\"" : "") + (!String.IsNullOrEmpty(rom.HashData.CRC) ? " crc=\"" + rom.HashData.CRC.ToLowerInvariant() + "\"" : "") + (!String.IsNullOrEmpty(rom.HashData.MD5) ? " md5=\"" + rom.HashData.MD5.ToLowerInvariant() + "\"" : "") + diff --git a/SabreTools.Helper/Tools/RomTools.cs b/SabreTools.Helper/Tools/RomTools.cs index 18e77da7..63299643 100644 --- a/SabreTools.Helper/Tools/RomTools.cs +++ b/SabreTools.Helper/Tools/RomTools.cs @@ -29,7 +29,7 @@ namespace SabreTools.Helper Rom rom = new Rom { Name = Path.GetFileName(input), - Type = "rom", + Type = ItemType.Rom, HashData = new HashData { Size = (new FileInfo(input)).Length, @@ -249,11 +249,11 @@ namespace SabreTools.Helper return dupefound; } - if (rom.Type == "rom" && lastrom.Type == "rom") + if (rom.Type == ItemType.Rom && lastrom.Type == ItemType.Rom) { dupefound = rom.HashData.Equals(lastrom.HashData, false); } - else if (rom.Type == "disk" && lastrom.Type == "disk") + else if (rom.Type == ItemType.Disk && lastrom.Type == ItemType.Disk) { dupefound = rom.HashData.Equals(lastrom.HashData, true); } diff --git a/SabreTools.Helper/Tools/Stats.cs b/SabreTools.Helper/Tools/Stats.cs index 92da77a5..976a318e 100644 --- a/SabreTools.Helper/Tools/Stats.cs +++ b/SabreTools.Helper/Tools/Stats.cs @@ -120,8 +120,8 @@ Please check the log folder if the stats scrolled offscreen"); { foreach (Rom rom in roms) { - datdata.RomCount += (rom.Type == "rom" ? 1 : 0); - datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); + datdata.RomCount += (rom.Type == ItemType.Rom ? 1 : 0); + datdata.DiskCount += (rom.Type == ItemType.Disk ? 1 : 0); datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); diff --git a/SabreTools/DATFromDir.cs b/SabreTools/DATFromDir.cs index c4a055c1..a0271c3f 100644 --- a/SabreTools/DATFromDir.cs +++ b/SabreTools/DATFromDir.cs @@ -267,7 +267,7 @@ namespace SabreTools // If we're in a mode that doesn't allow for actual empty folders, add the blank info if (_datdata.OutputFormat != OutputFormat.SabreDat && _datdata.OutputFormat != OutputFormat.MissFile) { - rom.Type = "rom"; + rom.Type = ItemType.Rom; rom.Name = "-"; rom.HashData.Size = Constants.SizeZero; rom.HashData.CRC = Constants.CRCZero;