From ba71021665cdc25b523de38405b0923496aee032 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Fri, 14 Jun 2024 16:18:43 -0400 Subject: [PATCH] Fix rename failure reason handling --- AssemblyRemapper/Enums/EFailureReason.cs | 16 ++++++++++++---- AssemblyRemapper/Remapper/Remapper.cs | 16 +++++++--------- AssemblyRemapper/Remapper/Search/Fields.cs | 7 ++++++- AssemblyRemapper/Remapper/Search/Methods.cs | 6 ++++++ AssemblyRemapper/Remapper/Search/NestedTypes.cs | 7 ++++++- AssemblyRemapper/Remapper/Search/Properties.cs | 7 ++++++- .../Remapper/Search/TypeDefExtensions.cs | 5 +++++ AssemblyRemapperGUI/Form1.cs | 8 +++++--- AssemblyRemapperGUI/Utils/GUI.cs | 3 ++- 9 files changed, 55 insertions(+), 20 deletions(-) diff --git a/AssemblyRemapper/Enums/EFailureReason.cs b/AssemblyRemapper/Enums/EFailureReason.cs index 3964b11..a7894b0 100644 --- a/AssemblyRemapper/Enums/EFailureReason.cs +++ b/AssemblyRemapper/Enums/EFailureReason.cs @@ -14,8 +14,16 @@ public enum EFailureReason HasAttribute, IsAttribute, Constructor, - HasMethods, - HasFields, - HasProperties, - HasNestedTypes, + MethodsInclude, + MethodsExclude, + MethodsCount, + FieldsInclude, + FieldsExclude, + FieldsCount, + PropertiesInclude, + PropertiesExclude, + PropertiesCount, + NestedTypeInclude, + NestedTypeExclude, + NestedTypeCount, } \ No newline at end of file diff --git a/AssemblyRemapper/Remapper/Remapper.cs b/AssemblyRemapper/Remapper/Remapper.cs index f7e6733..b3e588c 100644 --- a/AssemblyRemapper/Remapper/Remapper.cs +++ b/AssemblyRemapper/Remapper/Remapper.cs @@ -31,7 +31,7 @@ public class Remapper { Logger.Log($"Finding best match for {remap.NewTypeName}...", ConsoleColor.Gray); - HandleMapping(remap); + ScoreMapping(remap); } ChooseBestMatches(); @@ -74,11 +74,11 @@ public class Remapper /// Loop over all types in the assembly and score them /// /// Mapping to score - private void HandleMapping(RemapModel mapping) + public void ScoreMapping(RemapModel mapping) { foreach (var type in DataProvider.ModuleDefinition.Types) { - var _ = FindMatch(type, mapping); + FindMatch(type, mapping); } } @@ -89,13 +89,13 @@ public class Remapper /// Remap to check against /// /// EMatchResult - private EMatchResult FindMatch(TypeDefinition type, RemapModel remap) + private void FindMatch(TypeDefinition type, RemapModel remap) { // Handle Direct Remaps by strict naming first bypasses everything else if (remap.UseForceRename) { HandleByDirectName(type, remap); - return EMatchResult.HandleDirect; + return; } foreach (var nestedType in type.NestedTypes) @@ -132,7 +132,8 @@ public class Remapper if (NoMatch == EMatchResult.NoMatch) { - return NoMatch; + remap.FailureReason = score.FailureReason; + return; } var match = matches.Where(x => x.Equals(EMatchResult.Match)).Any(); @@ -145,10 +146,7 @@ public class Remapper remap.Succeeded = true; remap.FailureReason = EFailureReason.None; score.AddScoreToResult(); - return EMatchResult.Match; } - - return EMatchResult.Disabled; } private void HandleByDirectName(TypeDefinition type, RemapModel remap) diff --git a/AssemblyRemapper/Remapper/Search/Fields.cs b/AssemblyRemapper/Remapper/Search/Fields.cs index 75284fa..d884df7 100644 --- a/AssemblyRemapper/Remapper/Search/Fields.cs +++ b/AssemblyRemapper/Remapper/Search/Fields.cs @@ -20,9 +20,10 @@ internal static class Fields var matches = type.Fields .Where(field => parms.IncludeFields.Contains(field.Name)); - score.Score += matches.Count(); + score.FailureReason = matches.Any() ? EFailureReason.None : EFailureReason.FieldsInclude; + return matches.Any() ? EMatchResult.Match : EMatchResult.NoMatch; @@ -45,6 +46,8 @@ internal static class Fields score.Score += matches; + score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.FieldsExclude; + return matches > 0 ? EMatchResult.NoMatch : EMatchResult.Match; @@ -65,6 +68,8 @@ internal static class Fields if (match) { score.Score++; } + score.FailureReason = match ? EFailureReason.None : EFailureReason.FieldsCount; + return match ? EMatchResult.Match : EMatchResult.NoMatch; diff --git a/AssemblyRemapper/Remapper/Search/Methods.cs b/AssemblyRemapper/Remapper/Search/Methods.cs index 45ac3ac..4f28780 100644 --- a/AssemblyRemapper/Remapper/Search/Methods.cs +++ b/AssemblyRemapper/Remapper/Search/Methods.cs @@ -24,6 +24,8 @@ internal static class Methods score.Score += matches; + score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.MethodsInclude; + return matches > 0 ? EMatchResult.Match : EMatchResult.NoMatch; @@ -46,6 +48,8 @@ internal static class Methods score.Score += matches; + score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.MethodsExclude; + return matches > 0 ? EMatchResult.NoMatch : EMatchResult.Match; @@ -67,6 +71,8 @@ internal static class Methods if (match) { score.Score++; } + score.FailureReason = match ? EFailureReason.None : EFailureReason.MethodsCount; + return match ? EMatchResult.Match : EMatchResult.NoMatch; diff --git a/AssemblyRemapper/Remapper/Search/NestedTypes.cs b/AssemblyRemapper/Remapper/Search/NestedTypes.cs index f00ec34..c0467cb 100644 --- a/AssemblyRemapper/Remapper/Search/NestedTypes.cs +++ b/AssemblyRemapper/Remapper/Search/NestedTypes.cs @@ -14,9 +14,10 @@ internal class NestedTypes var matches = type.NestedTypes .Where(nt => parms.IncludeNestedTypes.Contains(nt.Name)) .Count(); - score.Score += matches; + score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.NestedTypeInclude; + return matches > 0 ? EMatchResult.Match : EMatchResult.NoMatch; @@ -32,6 +33,8 @@ internal class NestedTypes score.Score += matches; + score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.NestedTypeExclude; + return matches > 0 ? EMatchResult.NoMatch : EMatchResult.Match; @@ -45,6 +48,8 @@ internal class NestedTypes if (match) { score.Score++; } + score.FailureReason = match ? EFailureReason.None : EFailureReason.NestedTypeCount; + return match ? EMatchResult.Match : EMatchResult.NoMatch; diff --git a/AssemblyRemapper/Remapper/Search/Properties.cs b/AssemblyRemapper/Remapper/Search/Properties.cs index 2bf1092..3826e73 100644 --- a/AssemblyRemapper/Remapper/Search/Properties.cs +++ b/AssemblyRemapper/Remapper/Search/Properties.cs @@ -14,9 +14,10 @@ namespace AssemblyRemapper.Remapper.Search var matches = type.Properties .Where(property => parms.IncludeProperties.Contains(property.Name)) .Count(); - score.Score += matches; + score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.PropertiesInclude; + return matches > 0 ? EMatchResult.Match : EMatchResult.NoMatch; @@ -32,6 +33,8 @@ namespace AssemblyRemapper.Remapper.Search score.Score += matches; + score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.PropertiesExclude; + return matches > 0 ? EMatchResult.NoMatch : EMatchResult.Match; @@ -45,6 +48,8 @@ namespace AssemblyRemapper.Remapper.Search if (match) { score.Score++; } + score.FailureReason = match ? EFailureReason.None : EFailureReason.PropertiesCount; + return match ? EMatchResult.Match : EMatchResult.NoMatch; diff --git a/AssemblyRemapper/Remapper/Search/TypeDefExtensions.cs b/AssemblyRemapper/Remapper/Search/TypeDefExtensions.cs index a2e2d7d..f8d18bf 100644 --- a/AssemblyRemapper/Remapper/Search/TypeDefExtensions.cs +++ b/AssemblyRemapper/Remapper/Search/TypeDefExtensions.cs @@ -18,6 +18,7 @@ internal static class TypeDefExtensions // Interfaces cannot be abstract, and abstract cannot be static if (type.IsInterface || type.GetStaticConstructor() is not null) { + score.FailureReason = EFailureReason.IsAbstract; return EMatchResult.NoMatch; } @@ -58,6 +59,9 @@ internal static class TypeDefExtensions if (type.IsNested == parms.IsNested) { score.Score++; + Logger.Log($"Match {type.Name}"); + Logger.Log($"Match {parms.IsNested}"); + Logger.Log($"type: {type.IsNested} \n"); return EMatchResult.Match; } @@ -102,6 +106,7 @@ internal static class TypeDefExtensions if (type.BaseType?.Name == parms.IgnoreBaseClass) { + score.FailureReason = EFailureReason.IsDerived; return EMatchResult.NoMatch; } diff --git a/AssemblyRemapperGUI/Form1.cs b/AssemblyRemapperGUI/Form1.cs index 23c7103..04ae10b 100644 --- a/AssemblyRemapperGUI/Form1.cs +++ b/AssemblyRemapperGUI/Form1.cs @@ -84,7 +84,7 @@ namespace AssemblyRemapperGUI } }; - RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap)); + RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap, this)); DataProvider.Remaps.Add(remap); ResetAll(); } @@ -99,6 +99,8 @@ namespace AssemblyRemapperGUI { if (Remapper.IsRunning) { return; } + Console.Clear(); + Remapper.InitializeRemap(); } @@ -135,7 +137,7 @@ namespace AssemblyRemapperGUI foreach (var remap in DataProvider.Remaps) { - RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap)); + RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap, this)); } } @@ -348,7 +350,7 @@ namespace AssemblyRemapperGUI foreach (var remap in DataProvider.Remaps) { - RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap)); + RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap, this)); } } } diff --git a/AssemblyRemapperGUI/Utils/GUI.cs b/AssemblyRemapperGUI/Utils/GUI.cs index 5465be7..c322880 100644 --- a/AssemblyRemapperGUI/Utils/GUI.cs +++ b/AssemblyRemapperGUI/Utils/GUI.cs @@ -1,4 +1,5 @@ using AssemblyRemapper.Models; +using AssemblyRemapperGUI; namespace RemapperGUI.Utils; @@ -59,7 +60,7 @@ internal static class GUI /// /// /// - public static TreeNode GenerateTreeNode(RemapModel model) + public static TreeNode GenerateTreeNode(RemapModel model, AssemblyToolGUI gui) { var isPublic = model.SearchParams.IsPublic == null ? null : model.SearchParams.IsPublic; var isAbstract = model.SearchParams.IsAbstract == null ? null : model.SearchParams.IsAbstract;