diff --git a/Deheader/Headerer.cs b/Deheader/Headerer.cs index 051a0e7b..d579baea 100644 --- a/Deheader/Headerer.cs +++ b/Deheader/Headerer.cs @@ -148,37 +148,15 @@ namespace SabreTools foreach (HeaderType test in Enum.GetValues(typeof(HeaderType))) { Dictionary tempDict = new Dictionary(); - switch (test) + + // Try populating the dictionary from the master list + try { - case HeaderType.A7800: - tempDict = Remapping.A7800; - break; - case HeaderType.FDS: - tempDict = Remapping.FDS; - break; - case HeaderType.Lynx: - tempDict = Remapping.Lynx; - break; - case HeaderType.PCE: - tempDict = Remapping.PCE; - break; - /* - case HeaderType.N64: - tempDict = Remapping.N64; - break; - */ - case HeaderType.NES: - tempDict = Remapping.NES; - break; - case HeaderType.PSID: - tempDict = Remapping.PSID; - break; - case HeaderType.SNES: - tempDict = Remapping.SNES; - break; - case HeaderType.SPC: - tempDict = Remapping.SPC; - break; + tempDict = Remapping.HeaderMaps[test.ToString()]; + } + catch + { + logger.Warning("The mapping for '" + test.ToString() + "' cannot be found!"); } // Loop over the dictionary and see if there are matches diff --git a/SabreTools.Helper/Remapping.cs b/SabreTools.Helper/Remapping.cs index d225b4e6..c232f8c3 100644 --- a/SabreTools.Helper/Remapping.cs +++ b/SabreTools.Helper/Remapping.cs @@ -10,27 +10,11 @@ namespace SabreTools.Helper /// public class Remapping { - // Remapping classes represented by dictionaries (from, to) - public static Dictionary Good = new Dictionary(); - public static Dictionary MAME = new Dictionary(); - public static Dictionary MaybeIntro = new Dictionary(); - public static Dictionary NoIntro = new Dictionary(); - public static Dictionary NonGood = new Dictionary(); - public static Dictionary Redump = new Dictionary(); - public static Dictionary TOSEC = new Dictionary(); - public static Dictionary TruRip = new Dictionary(); - - // Header skip classes represented by dictionaries (header, size) - public static Dictionary A7800 = new Dictionary(); - public static Dictionary FDS = new Dictionary(); - public static Dictionary Lynx = new Dictionary(); - //public static Dictionary N64 = new Dictionary(); - public static Dictionary NES = new Dictionary(); - public static Dictionary PCE = new Dictionary(); - public static Dictionary PSID = new Dictionary(); - public static Dictionary SNES = new Dictionary(); - public static Dictionary SPC = new Dictionary(); + // Remapping classes represented by a dictionary of dictionaries (name, (from, to)) + public static Dictionary> DatMaps = new Dictionary>(); + // Header skip classes represented by a dictionary of dictionaries (name, (header, size)) + public static Dictionary> HeaderMaps = new Dictionary>(); /// /// Create all remappings to be used by the program @@ -46,6 +30,7 @@ namespace SabreTools.Helper // Loop through and add all remappings foreach (string remapping in remappings) { + DatMaps.Add(remapping, new Dictionary()); RemappingHelper(remapping); } } @@ -91,33 +76,7 @@ namespace SabreTools.Helper // Now read in the mappings while (node != null && node.Name == "mapping") { - switch (mapping) - { - case "Good": - Good.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); - break; - case "MAME": - MAME.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); - break; - case "MaybeIntro": - MaybeIntro.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); - break; - case "NoIntro": - NoIntro.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); - break; - case "NonGood": - NonGood.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); - break; - case "Redump": - Redump.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); - break; - case "TOSEC": - TOSEC.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); - break; - case "TruRip": - TruRip.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); - break; - } + DatMaps[mapping].Add(node.Attributes["from"].Value, node.Attributes["to"].Value); // Get the next node and skip over anything that's not an element node = node.NextSibling; @@ -148,6 +107,7 @@ namespace SabreTools.Helper // Loop through and add all remappings foreach (string skipper in skippers) { + HeaderMaps.Add(skipper, new Dictionary()); SkipperHelper(skipper); } } @@ -196,38 +156,7 @@ namespace SabreTools.Helper header += child.Attributes["value"].Value; // Now add the header and value to the appropriate skipper dictionary - switch (skipper) - { - case "a7800": - A7800.Add(header, size); - break; - case "fds": - FDS.Add(header, size); - break; - case "lynx": - Lynx.Add(header, size); - break; - /* - case "n64": - N64.Add(header, size); - break; - */ - case "nes": - NES.Add(header, size); - break; - case "pce": - PCE.Add(header, size); - break; - case "psid": - PSID.Add(header, size); - break; - case "snes": - SNES.Add(header, size); - break; - case "spc": - SPC.Add(header, size); - break; - } + HeaderMaps[skipper].Add(header, size); } } diff --git a/SabreTools/ImportExport/Import.cs b/SabreTools/ImportExport/Import.cs index d51fb46c..8d216053 100644 --- a/SabreTools/ImportExport/Import.cs +++ b/SabreTools/ImportExport/Import.cs @@ -151,12 +151,12 @@ namespace SabreTools switch (type) { case DatType.Good: - if (!Remapping.Good.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["Good"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " could not be mapped! Please check the mappings and try again"); return false; } - GroupCollection goodInfo = Regex.Match(Remapping.Good[fileinfo[1].Value], Constants.RemappedPattern).Groups; + GroupCollection goodInfo = Regex.Match(Remapping.DatMaps["Good"][fileinfo[1].Value], Constants.RemappedPattern).Groups; manufacturer = goodInfo[1].Value; system = goodInfo[2].Value; @@ -164,12 +164,12 @@ namespace SabreTools date = File.GetLastWriteTime(_filepath).ToString("yyyy-MM-dd HH:mm:ss"); break; case DatType.MAME: - if (!Remapping.MAME.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["MAME"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " could not be mapped! Please check the mappings and try again"); return false; } - GroupCollection mameInfo = Regex.Match(Remapping.MAME[fileinfo[1].Value], Constants.RemappedPattern).Groups; + GroupCollection mameInfo = Regex.Match(Remapping.DatMaps["MAME"][fileinfo[1].Value], Constants.RemappedPattern).Groups; manufacturer = mameInfo[1].Value; system = mameInfo[2].Value; @@ -177,12 +177,12 @@ namespace SabreTools date = File.GetLastWriteTime(_filepath).ToString("yyyy-MM-dd HH:mm:ss"); break; case DatType.MaybeIntro: - if (!Remapping.MaybeIntro.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["MaybeIntro"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " could not be mapped! Please check the mappings and try again"); return false; } - GroupCollection maybeIntroInfo = Regex.Match(Remapping.MaybeIntro[fileinfo[1].Value], Constants.RemappedPattern).Groups; + GroupCollection maybeIntroInfo = Regex.Match(Remapping.DatMaps["MaybeIntro"][fileinfo[1].Value], Constants.RemappedPattern).Groups; manufacturer = maybeIntroInfo[1].Value; system = maybeIntroInfo[2].Value; @@ -192,12 +192,12 @@ namespace SabreTools date = miDateInfo[1].Value + "-" + miDateInfo[2].Value + "-" + miDateInfo[3].Value + " 00:00:00"; break; case DatType.NoIntro: - if (!Remapping.NoIntro.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["NoIntro"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " could not be mapped! Please check the mappings and try again"); return false; } - GroupCollection nointroInfo = Regex.Match(Remapping.NoIntro[fileinfo[1].Value], Constants.RemappedPattern).Groups; + GroupCollection nointroInfo = Regex.Match(Remapping.DatMaps["NoIntro"][fileinfo[1].Value], Constants.RemappedPattern).Groups; manufacturer = nointroInfo[1].Value; system = nointroInfo[2].Value; @@ -221,12 +221,12 @@ namespace SabreTools } break; case DatType.NonGood: - if (!Remapping.NonGood.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["NonGood"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " could not be mapped! Please check the mappings and try again"); return false; } - GroupCollection nonGoodInfo = Regex.Match(Remapping.NonGood[fileinfo[1].Value], Constants.RemappedPattern).Groups; + GroupCollection nonGoodInfo = Regex.Match(Remapping.DatMaps["NonGood"][fileinfo[1].Value], Constants.RemappedPattern).Groups; manufacturer = nonGoodInfo[1].Value; system = nonGoodInfo[2].Value; @@ -234,18 +234,18 @@ namespace SabreTools date = File.GetLastWriteTime(_filepath).ToString("yyyy-MM-dd HH:mm:ss"); break; case DatType.Redump: - if (!Remapping.Redump.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["Redump"].ContainsKey(fileinfo[1].Value)) { // Handle special case mappings found only in Redump fileinfo = Regex.Match(filename, Constants.RedumpBiosPattern).Groups; - if (!Remapping.Redump.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["Redump"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " could not be mapped! Please check the mappings and try again"); return false; } } - GroupCollection redumpInfo = Regex.Match(Remapping.Redump[fileinfo[1].Value], Constants.RemappedPattern).Groups; + GroupCollection redumpInfo = Regex.Match(Remapping.DatMaps["Redump"][fileinfo[1].Value], Constants.RemappedPattern).Groups; manufacturer = redumpInfo[1].Value; system = redumpInfo[2].Value; @@ -265,23 +265,23 @@ namespace SabreTools break; case DatType.TOSEC: - if (!Remapping.TOSEC.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["TOSEC"].ContainsKey(fileinfo[1].Value)) { // Handle special case mappings found only in TOSEC fileinfo = Regex.Match(filename, Constants.TosecSpecialPatternA).Groups; - if (!Remapping.TOSEC.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["TOSEC"].ContainsKey(fileinfo[1].Value)) { fileinfo = Regex.Match(filename, Constants.TosecSpecialPatternB).Groups; - if (!Remapping.TOSEC.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["TOSEC"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " could not be mapped! Please check the mappings and try again"); return false; } } } - GroupCollection tosecInfo = Regex.Match(Remapping.TOSEC[fileinfo[1].Value], Constants.RemappedPattern).Groups; + GroupCollection tosecInfo = Regex.Match(Remapping.DatMaps["TOSEC"][fileinfo[1].Value], Constants.RemappedPattern).Groups; manufacturer = tosecInfo[1].Value; system = tosecInfo[2].Value; @@ -291,12 +291,12 @@ namespace SabreTools date = toDateInfo[1].Value + "-" + toDateInfo[2].Value + "-" + toDateInfo[3].Value + " 00:00:00"; break; case DatType.TruRip: - if (!Remapping.TruRip.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["TruRip"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " could not be mapped! Please check the mappings and try again"); return false; } - GroupCollection truripInfo = Regex.Match(Remapping.TruRip[fileinfo[1].Value], Constants.RemappedPattern).Groups; + GroupCollection truripInfo = Regex.Match(Remapping.DatMaps["TruRip"][fileinfo[1].Value], Constants.RemappedPattern).Groups; manufacturer = truripInfo[1].Value; system = truripInfo[2].Value; diff --git a/SabreTools/ImportExport/ImportTwo.cs b/SabreTools/ImportExport/ImportTwo.cs index 5f3eac71..55602e8c 100644 --- a/SabreTools/ImportExport/ImportTwo.cs +++ b/SabreTools/ImportExport/ImportTwo.cs @@ -294,7 +294,7 @@ COMMIT;"; if (Regex.IsMatch(filename, Constants.NonGoodPattern)) { fileinfo = Regex.Match(filename, Constants.NonGoodPattern).Groups; - if (!Remapping.NonGood.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["NonGood"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as NonGood but could not be mapped."); return source; @@ -304,7 +304,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.NonGoodSpecialPattern)) { fileinfo = Regex.Match(filename, Constants.NonGoodSpecialPattern).Groups; - if (!Remapping.NonGood.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["NonGood"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as NonGood but could not be mapped."); return source; @@ -314,7 +314,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.GoodPattern)) { fileinfo = Regex.Match(filename, Constants.GoodPattern).Groups; - if (!Remapping.Good.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["Good"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as Good but could not be mapped."); return source; @@ -324,7 +324,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.GoodXmlPattern)) { fileinfo = Regex.Match(filename, Constants.GoodXmlPattern).Groups; - if (!Remapping.Good.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["Good"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as Good but could not be mapped."); return source; @@ -334,7 +334,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.MaybeIntroPattern)) { fileinfo = Regex.Match(filename, Constants.MaybeIntroPattern).Groups; - if (!Remapping.MaybeIntro.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["MaybeIntro"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as Maybe-Intro but could not be mapped."); return source; @@ -344,7 +344,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.NoIntroPattern)) { fileinfo = Regex.Match(filename, Constants.NoIntroPattern).Groups; - if (!Remapping.NoIntro.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["NoIntro"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as No-Intro but could not be mapped."); return source; @@ -355,7 +355,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.NoIntroNumberedPattern)) { fileinfo = Regex.Match(filename, Constants.NoIntroNumberedPattern).Groups; - if (!Remapping.NoIntro.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["NoIntro"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as No-Intro but could not be mapped."); return source; @@ -366,7 +366,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.NoIntroSpecialPattern)) { fileinfo = Regex.Match(filename, Constants.NoIntroSpecialPattern).Groups; - if (!Remapping.NoIntro.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["NoIntro"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as No-Intro but could not be mapped."); return source; @@ -376,7 +376,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.RedumpPattern)) { fileinfo = Regex.Match(filename, Constants.RedumpPattern).Groups; - if (!Remapping.Redump.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["Redump"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as Redump but could not be mapped."); return source; @@ -387,7 +387,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.RedumpBiosPattern)) { fileinfo = Regex.Match(filename, Constants.RedumpBiosPattern).Groups; - if (!Remapping.Redump.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["Redump"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as Redump but could not be mapped."); return source; @@ -397,16 +397,16 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.TosecPattern)) { fileinfo = Regex.Match(filename, Constants.TosecPattern).Groups; - if (!Remapping.TOSEC.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["TOSEC"].ContainsKey(fileinfo[1].Value)) { // Handle special case mappings found only in TOSEC fileinfo = Regex.Match(filename, Constants.TosecSpecialPatternA).Groups; - if (!Remapping.TOSEC.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["TOSEC"].ContainsKey(fileinfo[1].Value)) { fileinfo = Regex.Match(filename, Constants.TosecSpecialPatternB).Groups; - if (!Remapping.TOSEC.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["TOSEC"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as TOSEC but could not be mapped."); return source; @@ -418,7 +418,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.TruripPattern)) { fileinfo = Regex.Match(filename, Constants.TruripPattern).Groups; - if (!Remapping.TruRip.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["TruRip"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as TruRip but could not be mapped."); return source; @@ -442,7 +442,7 @@ COMMIT;"; else if (Regex.IsMatch(filename, Constants.MamePattern)) { fileinfo = Regex.Match(filename, Constants.MamePattern).Groups; - if (!Remapping.MAME.ContainsKey(fileinfo[1].Value)) + if (!Remapping.DatMaps["MAME"].ContainsKey(fileinfo[1].Value)) { _logger.Warning("The filename " + fileinfo[1].Value + " was matched as MAME but could not be mapped."); return source;