diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs index 095bdb90..96c2653d 100644 --- a/SabreTools.Library/DatFiles/DatFile.cs +++ b/SabreTools.Library/DatFiles/DatFile.cs @@ -263,6 +263,7 @@ namespace SabreTools.Library.DatFiles /// Filter object to be passed to the DatItem level /// List of Fields representing what should be updated [only for base replacement] /// True if descriptions should only be replaced if the game name is the same, false otherwise [only for base replacement] + /// True if diffing is by Game, false if diffing is by hash [only for against] public void DetermineUpdateType( List inputPaths, List basePaths, @@ -272,7 +273,8 @@ namespace SabreTools.Library.DatFiles bool skip, Filter filter, List updateFields, - bool onlySame) + bool onlySame, + bool byGame) { // Ensure we only have files in the inputs List inputFileNames = DirectoryExtensions.GetFilesOnly(inputPaths, appendparent: true); @@ -319,12 +321,11 @@ namespace SabreTools.Library.DatFiles } // If we have a diff against mode - else if (updateMode.HasFlag(UpdateMode.DiffAgainst) - || updateMode.HasFlag(UpdateMode.DiffGame)) + else if (updateMode.HasFlag(UpdateMode.DiffAgainst)) { // Populate the combined data PopulateUserData(baseFileNames, filter); - DiffAgainst(inputFileNames, outDir, inplace, filter, updateMode.HasFlag(UpdateMode.DiffGame)); + DiffAgainst(inputFileNames, outDir, inplace, filter, byGame); } // If we have one of the base replacement modes diff --git a/SabreTools.Library/Data/Flags.cs b/SabreTools.Library/Data/Flags.cs index 4942b59d..3684ad5b 100644 --- a/SabreTools.Library/Data/Flags.cs +++ b/SabreTools.Library/Data/Flags.cs @@ -257,12 +257,11 @@ namespace SabreTools.Library.Data // Base diffs DiffAgainst = 1 << 5, - DiffGame = 1 << 6, // Special update modes - Merge = 1 << 7, - BaseReplace = 1 << 8, - ReverseBaseReplace = 1 << 9, + Merge = 1 << 6, + BaseReplace = 1 << 7, + ReverseBaseReplace = 1 << 8, // Combinations AllDiffs = DiffDupesOnly | DiffNoDupesOnly | DiffIndividualsOnly, diff --git a/SabreTools.Library/README.1ST b/SabreTools.Library/README.1ST index de42a662..91062925 100644 --- a/SabreTools.Library/README.1ST +++ b/SabreTools.Library/README.1ST @@ -1205,15 +1205,10 @@ Options: Add a DAT or folder of DATs to the base set to be used for all operations. Multiple instances of this flag are allowed. - -dga, --diff-game Diff all inputs by game against a set of base DATs - This flag will enable a special type of diffing in which a set of base - DATs are used as a comparison point for each of the input DATs by game. - This allows users to get a slightly different output to cascaded - diffing, which may be more useful in some cases. - - -bd=, --base-dat= Add a base DAT for processing - Add a DAT or folder of DATs to the base set to be used for all - operations. Multiple instances of this flag are allowed. + -bg, --by-game Diff against by game instead of hashes + By default, diffing against uses hashes to determine similar files. + This flag enables using using each game as a comparision point + instead. -br, --base-replace Replace from base DATs in order By default, no item names are changed except when there is a merge diff --git a/SabreTools/Features/BaseFeature.cs b/SabreTools/Features/BaseFeature.cs index d1808f07..b251432f 100644 --- a/SabreTools/Features/BaseFeature.cs +++ b/SabreTools/Features/BaseFeature.cs @@ -98,6 +98,20 @@ namespace SabreTools.Features } } + internal const string ByGameValue = "by-game"; + internal static Feature ByGameFlag + { + get + { + return new Feature( + BaseReplaceValue, + new List() { "-bg", "--by-game" }, + "Diff against by game instead of hashes", + FeatureType.Flag, + longDescription: "By default, diffing against uses hashes to determine similar files. This flag enables using using each game as a comparision point instead."); + } + } + internal const string ChdsAsFilesValue = "chds-as-files"; internal static Feature ChdsAsFilesFlag { @@ -336,20 +350,6 @@ namespace SabreTools.Features } } - internal const string DiffGameValue = "diff-game"; - internal static Feature DiffGameFlag - { - get - { - return new Feature( - DiffAgainstValue, - new List() { "-dga", "--diff-game" }, - "Diff all inputs by game against a set of base DATs", - FeatureType.Flag, - "This flag will enable a special type of diffing in which a set of base DATs are used as a comparison point for each of the input DATs by game. This allows users to get a slightly different output to cascaded diffing, which may be more useful in some cases."); - } - } - internal const string DiffIndividualsValue = "diff-individuals"; internal static Feature DiffIndividualsFlag { @@ -2503,9 +2503,6 @@ Some special strings that can be used: if (GetBoolean(features, DiffDuplicatesValue)) updateMode |= UpdateMode.DiffDupesOnly; - if (GetBoolean(features, DiffGameValue)) - updateMode |= UpdateMode.DiffGame; - if (GetBoolean(features, DiffIndividualsValue)) updateMode |= UpdateMode.DiffIndividualsOnly; diff --git a/SabreTools/Features/Update.cs b/SabreTools/Features/Update.cs index e63234f1..1589539f 100644 --- a/SabreTools/Features/Update.cs +++ b/SabreTools/Features/Update.cs @@ -56,8 +56,7 @@ namespace SabreTools.Features this[DiffNoDuplicatesFlag].AddFeature(NoAutomaticDateFlag); AddFeature(DiffAgainstFlag); this[DiffAgainstFlag].AddFeature(BaseDatListInput); - AddFeature(DiffGameFlag); - this[DiffGameFlag].AddFeature(BaseDatListInput); + this[DiffAgainstFlag].AddFeature(ByGameFlag); AddFeature(BaseReplaceFlag); this[BaseReplaceFlag].AddFeature(BaseDatListInput); this[BaseReplaceFlag].AddFeature(UpdateFieldListInput); @@ -155,7 +154,8 @@ namespace SabreTools.Features GetBoolean(features, SkipFirstOutputValue), Filter, updateFields, - GetBoolean(features, OnlySameValue)); + GetBoolean(features, OnlySameValue), + GetBoolean(Features, ByGameValue)); } } }