From 2f102800b76c080b5a7ec7960aefa30c9dbf890f Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 7 Nov 2016 10:11:58 -0800 Subject: [PATCH] [DatFile] Make sure that flags aren't overwritten if user-set --- .../Dats/Partials/DatFile.Parsers.cs | 142 ++++++++++-------- 1 file changed, 80 insertions(+), 62 deletions(-) diff --git a/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs b/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs index 1a9ca2e7..77568228 100644 --- a/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs +++ b/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs @@ -703,39 +703,48 @@ namespace SabreTools.Helper.Dats superdat = superdat || itemval.Contains("SuperDAT"); break; case "forcemerging": - switch (itemval) + if (ForceMerging == ForceMerging.None) { - case "none": - ForceMerging = ForceMerging.None; - break; - case "split": - ForceMerging = ForceMerging.Split; - break; - case "full": - ForceMerging = ForceMerging.Full; - break; + switch (itemval) + { + case "none": + ForceMerging = ForceMerging.None; + break; + case "split": + ForceMerging = ForceMerging.Split; + break; + case "full": + ForceMerging = ForceMerging.Full; + break; + } } break; case "forcezipping": - switch (itemval) + if (ForcePacking == ForcePacking.None) { - case "yes": - ForcePacking = ForcePacking.Zip; - break; - case "no": - ForcePacking = ForcePacking.Unzip; - break; + switch (itemval) + { + case "yes": + ForcePacking = ForcePacking.Zip; + break; + case "no": + ForcePacking = ForcePacking.Unzip; + break; + } } break; case "forcepacking": - switch (itemval) + if (ForcePacking == ForcePacking.None) { - case "zip": - ForcePacking = ForcePacking.Zip; - break; - case "unzip": - ForcePacking = ForcePacking.Unzip; - break; + switch (itemval) + { + case "zip": + ForcePacking = ForcePacking.Zip; + break; + case "unzip": + ForcePacking = ForcePacking.Unzip; + break; + } } break; } @@ -872,7 +881,7 @@ namespace SabreTools.Helper.Dats { Description = (String.IsNullOrEmpty(Description) ? xtr.GetAttribute("description") : Description); } - if (xtr.GetAttribute("forcemerging") != null) + if (xtr.GetAttribute("forcemerging") != null && ForceMerging == ForceMerging.None) { switch (xtr.GetAttribute("forcemerging")) { @@ -887,9 +896,9 @@ namespace SabreTools.Helper.Dats break; } } - if (xtr.GetAttribute("forceitemStatus") != null) + if (xtr.GetAttribute("forcenodump") != null && ForceNodump == ForceNodump.None) { - switch (xtr.GetAttribute("forceitemStatus")) + switch (xtr.GetAttribute("forcenodump")) { case "obsolete": ForceNodump = ForceNodump.Obsolete; @@ -902,7 +911,7 @@ namespace SabreTools.Helper.Dats break; } } - if (xtr.GetAttribute("forcepacking") != null) + if (xtr.GetAttribute("forcepacking") != null && ForcePacking == ForcePacking.None) { switch (xtr.GetAttribute("forcepacking")) { @@ -1068,7 +1077,7 @@ namespace SabreTools.Helper.Dats { Header = (String.IsNullOrEmpty(Header) ? headreader.GetAttribute("plugin") : Header); } - if (headreader.GetAttribute("forcemerging") != null) + if (headreader.GetAttribute("forcemerging") != null && ForceMerging == ForceMerging.None) { switch (headreader.GetAttribute("forcemerging")) { @@ -1083,9 +1092,9 @@ namespace SabreTools.Helper.Dats break; } } - if (headreader.GetAttribute("forceitemStatus") != null) + if (headreader.GetAttribute("forcenodump") != null && ForceNodump == ForceNodump.None) { - switch (headreader.GetAttribute("forceitemStatus")) + switch (headreader.GetAttribute("forcenodump")) { case "obsolete": ForceNodump = ForceNodump.Obsolete; @@ -1098,7 +1107,7 @@ namespace SabreTools.Helper.Dats break; } } - if (headreader.GetAttribute("forcepacking") != null) + if (headreader.GetAttribute("forcepacking") != null && ForcePacking == ForcePacking.None) { switch (headreader.GetAttribute("forcepacking")) { @@ -1144,42 +1153,51 @@ namespace SabreTools.Helper.Dats superdat = superdat || content.Contains("SuperDAT"); break; case "forcemerging": - switch (content) + if (ForceMerging == ForceMerging.None) { - case "split": - ForceMerging = ForceMerging.Split; - break; - case "none": - ForceMerging = ForceMerging.None; - break; - case "full": - ForceMerging = ForceMerging.Full; - break; + switch (content) + { + case "split": + ForceMerging = ForceMerging.Split; + break; + case "none": + ForceMerging = ForceMerging.None; + break; + case "full": + ForceMerging = ForceMerging.Full; + break; + } } break; - case "forceitemStatus": - switch (content) + case "forcenodump": + if (ForceNodump == ForceNodump.None) { - case "obsolete": - ForceNodump = ForceNodump.Obsolete; - break; - case "required": - ForceNodump = ForceNodump.Required; - break; - case "ignore": - ForceNodump = ForceNodump.Ignore; - break; + switch (content) + { + case "obsolete": + ForceNodump = ForceNodump.Obsolete; + break; + case "required": + ForceNodump = ForceNodump.Required; + break; + case "ignore": + ForceNodump = ForceNodump.Ignore; + break; + } } break; case "forcepacking": - switch (content) + if (ForcePacking == ForcePacking.None) { - case "zip": - ForcePacking = ForcePacking.Zip; - break; - case "unzip": - ForcePacking = ForcePacking.Unzip; - break; + switch (content) + { + case "zip": + ForcePacking = ForcePacking.Zip; + break; + case "unzip": + ForcePacking = ForcePacking.Unzip; + break; + } } break; } @@ -2115,7 +2133,7 @@ namespace SabreTools.Helper.Dats int split = 0; if (Int32.TryParse(line.Split('=')[1], out split)) { - if (split == 1) + if (split == 1 && ForcePacking == ForcePacking.None) { ForceMerging = ForceMerging.Split; } @@ -2127,7 +2145,7 @@ namespace SabreTools.Helper.Dats int merge = 0; if (Int32.TryParse(line.Split('=')[1], out merge)) { - if (merge == 1) + if (merge == 1 && ForceMerging == ForceMerging.None) { ForceMerging = ForceMerging.Full; }