From feb1aa3e562d20a79076e98703ad6e1256c77e0d Mon Sep 17 00:00:00 2001 From: Eddio0141 Date: Sun, 9 Jul 2023 05:51:38 +0100 Subject: [PATCH] removed useless types --- .../MscorlibGroupPatchProcessor.cs | 72 -------------- .../PatchProcessor/RawPatchProcessor.cs | 1 - .../UnityGroupPatchProcessor.cs | 61 ------------ .../Patches/PatchGroups/MscorlibPatchGroup.cs | 25 ----- .../Patches/PatchGroups/PatchGroup.cs | 7 -- .../Patches/PatchGroups/UnityPatchGroup.cs | 17 ---- .../PatchProcessor/GroupPatchProcessor.cs | 95 ------------------- .../Patches/PatchProcessor/PatchProcessor.cs | 2 +- .../Patches/PatchTypes/ModulePatchType.cs | 18 ---- .../Patches/PatchTypes/MscorlibPatch.cs | 12 --- .../Patches/PatchTypes/UnityPatch.cs | 12 --- .../Harmony/SystemTimeOverrideModule.cs | 59 ++++++------ 12 files changed, 28 insertions(+), 353 deletions(-) delete mode 100644 UniTAS/Patcher/Implementations/PatchProcessor/MscorlibGroupPatchProcessor.cs delete mode 100644 UniTAS/Patcher/Implementations/PatchProcessor/UnityGroupPatchProcessor.cs delete mode 100644 UniTAS/Patcher/Interfaces/Patches/PatchGroups/MscorlibPatchGroup.cs delete mode 100644 UniTAS/Patcher/Interfaces/Patches/PatchGroups/PatchGroup.cs delete mode 100644 UniTAS/Patcher/Interfaces/Patches/PatchGroups/UnityPatchGroup.cs delete mode 100644 UniTAS/Patcher/Interfaces/Patches/PatchProcessor/GroupPatchProcessor.cs delete mode 100644 UniTAS/Patcher/Interfaces/Patches/PatchTypes/ModulePatchType.cs delete mode 100644 UniTAS/Patcher/Interfaces/Patches/PatchTypes/MscorlibPatch.cs delete mode 100644 UniTAS/Patcher/Interfaces/Patches/PatchTypes/UnityPatch.cs diff --git a/UniTAS/Patcher/Implementations/PatchProcessor/MscorlibGroupPatchProcessor.cs b/UniTAS/Patcher/Implementations/PatchProcessor/MscorlibGroupPatchProcessor.cs deleted file mode 100644 index 26e8877e..00000000 --- a/UniTAS/Patcher/Implementations/PatchProcessor/MscorlibGroupPatchProcessor.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Collections.Generic; -using UniTAS.Patcher.Interfaces.Patches.PatchGroups; -using UniTAS.Patcher.Interfaces.Patches.PatchProcessor; -using UniTAS.Patcher.Interfaces.Patches.PatchTypes; -using UniTAS.Patcher.Services; -using UniTAS.Patcher.Services.Logging; - -namespace UniTAS.Patcher.Implementations.PatchProcessor; - -public class MscorlibGroupPatchProcessor : GroupPatchProcessor -{ - private readonly IGameInfo _gameInfo; - - public MscorlibGroupPatchProcessor(ILogger logger, IGameInfo gameInfo) : base(logger) - { - _gameInfo = gameInfo; - } - - protected override Type TargetPatchType => typeof(MscorlibPatch); - - protected override IEnumerable ChoosePatch(ModulePatchType patchType, PatchGroup[] patchGroups) - { - var mscorlibVersion = VersionStringToNumber(_gameInfo.MscorlibVersion); - var netstandardVersion = _gameInfo.NetStandardVersion; - var net20Subset = _gameInfo.Net20Subset; - - if (patchType.PatchAllGroups) - { - for (var i = 0; i < patchGroups.Length; i++) - { - var patchGroup = patchGroups[i]; - var mscorlibPatchGroup = (MscorlibPatchGroup)patchGroup; - - if (mscorlibPatchGroup.NetStandardVersion != null && - netstandardVersion != mscorlibPatchGroup.NetStandardVersion) continue; - - if (mscorlibPatchGroup.Net20Subset != null && - net20Subset != mscorlibPatchGroup.Net20Subset) continue; - - var versionStart = VersionStringToNumber(mscorlibPatchGroup.RangeStart); - var versionEnd = VersionStringToNumber(mscorlibPatchGroup.RangeEnd, ulong.MaxValue); - - // patch group version check - if (versionStart <= mscorlibVersion && mscorlibVersion <= versionEnd) - { - yield return i; - } - } - - yield break; - } - - for (var i = 0; i < patchGroups.Length; i++) - { - var patchGroup = patchGroups[i]; - var mscorlibPatchGroup = (MscorlibPatchGroup)patchGroup; - - var versionStart = VersionStringToNumber(mscorlibPatchGroup.RangeStart); - var versionEnd = VersionStringToNumber(mscorlibPatchGroup.RangeEnd, ulong.MaxValue); - - if (versionStart > mscorlibVersion || mscorlibVersion > versionEnd || - (mscorlibPatchGroup.NetStandardVersion != null && - mscorlibPatchGroup.NetStandardVersion != netstandardVersion) || - (mscorlibPatchGroup.Net20Subset != null && - mscorlibPatchGroup.Net20Subset.Value != net20Subset)) continue; - - yield return i; - yield break; - } - } -} \ No newline at end of file diff --git a/UniTAS/Patcher/Implementations/PatchProcessor/RawPatchProcessor.cs b/UniTAS/Patcher/Implementations/PatchProcessor/RawPatchProcessor.cs index 1beb4fd9..61fb91f2 100644 --- a/UniTAS/Patcher/Implementations/PatchProcessor/RawPatchProcessor.cs +++ b/UniTAS/Patcher/Implementations/PatchProcessor/RawPatchProcessor.cs @@ -19,7 +19,6 @@ public RawPatchProcessor(ILogger logger) public override IEnumerable> ProcessModules() { - // TODO replace this later var pluginTypes = AccessTools.GetTypesFromAssembly(typeof(MonoBehaviourUpdateInvoker).Assembly); // list of patch groups, patch group attributes, and PatchTypes for each modules diff --git a/UniTAS/Patcher/Implementations/PatchProcessor/UnityGroupPatchProcessor.cs b/UniTAS/Patcher/Implementations/PatchProcessor/UnityGroupPatchProcessor.cs deleted file mode 100644 index 4e28ebc3..00000000 --- a/UniTAS/Patcher/Implementations/PatchProcessor/UnityGroupPatchProcessor.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using System.Collections.Generic; -using UniTAS.Patcher.Interfaces.Patches.PatchGroups; -using UniTAS.Patcher.Interfaces.Patches.PatchProcessor; -using UniTAS.Patcher.Interfaces.Patches.PatchTypes; -using UniTAS.Patcher.Services; -using UniTAS.Patcher.Services.Logging; - -namespace UniTAS.Patcher.Implementations.PatchProcessor; - -// ReSharper disable once UnusedType.Global -public class UnityGroupPatchProcessor : GroupPatchProcessor -{ - private readonly IGameInfo _gameInfo; - - public UnityGroupPatchProcessor(ILogger logger, IGameInfo gameInfo) : base(logger) - { - _gameInfo = gameInfo; - } - - protected override IEnumerable ChoosePatch(ModulePatchType patchType, PatchGroup[] patchGroups) - { - var version = VersionStringToNumber(_gameInfo.UnityVersion); - - if (patchType.PatchAllGroups) - { - for (var i = 0; i < patchGroups.Length; i++) - { - var group = patchGroups[i]; - var groupUnityPatch = (UnityPatchGroup)group; - - var versionStart = VersionStringToNumber(groupUnityPatch.RangeStart); - var versionEnd = VersionStringToNumber(groupUnityPatch.RangeEnd, ulong.MaxValue); - - // patch group version check - if (versionStart <= version && version <= versionEnd) - { - yield return i; - } - } - - yield break; - } - - for (var i = 0; i < patchGroups.Length; i++) - { - var patchGroup = patchGroups[i]; - var unityPatchGroup = (UnityPatchGroup)patchGroup; - - var versionStart = VersionStringToNumber(unityPatchGroup.RangeStart); - var versionEnd = VersionStringToNumber(unityPatchGroup.RangeEnd, ulong.MaxValue); - - if (versionStart > version || version > versionEnd) continue; - - yield return i; - yield break; - } - } - - protected override Type TargetPatchType => typeof(UnityPatch); -} \ No newline at end of file diff --git a/UniTAS/Patcher/Interfaces/Patches/PatchGroups/MscorlibPatchGroup.cs b/UniTAS/Patcher/Interfaces/Patches/PatchGroups/MscorlibPatchGroup.cs deleted file mode 100644 index c5adaf31..00000000 --- a/UniTAS/Patcher/Interfaces/Patches/PatchGroups/MscorlibPatchGroup.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace UniTAS.Patcher.Interfaces.Patches.PatchGroups; - -public class MscorlibPatchGroup : PatchGroup -{ - public string RangeStart { get; } - public string RangeEnd { get; } - public string NetStandardVersion { get; } - public bool? Net20Subset { get; } - - public MscorlibPatchGroup(string rangeStart, string rangeEnd, string netStandardVersion) - { - RangeStart = rangeStart; - RangeEnd = rangeEnd; - NetStandardVersion = netStandardVersion; - Net20Subset = null; - } - - public MscorlibPatchGroup(string rangeEnd) : this(null, rangeEnd, null) - { - } - - public MscorlibPatchGroup() - { - } -} \ No newline at end of file diff --git a/UniTAS/Patcher/Interfaces/Patches/PatchGroups/PatchGroup.cs b/UniTAS/Patcher/Interfaces/Patches/PatchGroups/PatchGroup.cs deleted file mode 100644 index 27756f8a..00000000 --- a/UniTAS/Patcher/Interfaces/Patches/PatchGroups/PatchGroup.cs +++ /dev/null @@ -1,7 +0,0 @@ -using System; - -namespace UniTAS.Patcher.Interfaces.Patches.PatchGroups; - -public abstract class PatchGroup : Attribute -{ -} \ No newline at end of file diff --git a/UniTAS/Patcher/Interfaces/Patches/PatchGroups/UnityPatchGroup.cs b/UniTAS/Patcher/Interfaces/Patches/PatchGroups/UnityPatchGroup.cs deleted file mode 100644 index f141283f..00000000 --- a/UniTAS/Patcher/Interfaces/Patches/PatchGroups/UnityPatchGroup.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace UniTAS.Patcher.Interfaces.Patches.PatchGroups; - -public class UnityPatchGroup : PatchGroup -{ - public string RangeStart { get; } - public string RangeEnd { get; } - - public UnityPatchGroup(string rangeStart, string rangeEnd) - { - RangeStart = rangeStart; - RangeEnd = rangeEnd; - } - - public UnityPatchGroup() - { - } -} \ No newline at end of file diff --git a/UniTAS/Patcher/Interfaces/Patches/PatchProcessor/GroupPatchProcessor.cs b/UniTAS/Patcher/Interfaces/Patches/PatchProcessor/GroupPatchProcessor.cs deleted file mode 100644 index 2aa82f94..00000000 --- a/UniTAS/Patcher/Interfaces/Patches/PatchProcessor/GroupPatchProcessor.cs +++ /dev/null @@ -1,95 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.RegularExpressions; -using HarmonyLib; -using UniTAS.Patcher.Interfaces.Patches.PatchGroups; -using UniTAS.Patcher.Interfaces.Patches.PatchTypes; -using UniTAS.Patcher.MonoBehaviourScripts; -using UniTAS.Patcher.Services.Logging; - -namespace UniTAS.Patcher.Interfaces.Patches.PatchProcessor; - -public abstract class GroupPatchProcessor : PatchProcessor -{ - private readonly ILogger _logger; - - protected GroupPatchProcessor(ILogger logger) - { - _logger = logger; - } - - protected abstract Type TargetPatchType { get; } - - /// Method to determine if the patch group should be used - protected abstract IEnumerable ChoosePatch(ModulePatchType patchType, PatchGroup[] patchGroups); - - public override IEnumerable> ProcessModules() - { - // TODO replace this later - var pluginTypes = AccessTools.GetTypesFromAssembly(typeof(MonoBehaviourUpdateInvoker).Assembly); - - // list of patch groups, patch group attributes, and PatchTypes for each modules - var patchGroupsAttributesAndPatchType = - new List, ModulePatchType>>(); - foreach (var type in pluginTypes) - { - var attributes = type.GetCustomAttributes(TargetPatchType, false); - if (attributes.Length == 0) continue; - - _logger.LogInfo($"Found patch module {type.FullName}"); - - var patchGroups = new List(); - var patchGroupAttributes = new List(); - - foreach (var innerType in type.GetNestedTypes(AccessTools.all)) - { - var innerAttributes = innerType.GetCustomAttributes(typeof(PatchGroup), false); - if (innerAttributes.Length == 0) continue; - - patchGroups.Add(innerType); - patchGroupAttributes.Add(innerAttributes[0] as PatchGroup); - } - - patchGroupsAttributesAndPatchType.Add(new(new(patchGroups.ToArray(), patchGroupAttributes.ToArray()), - (ModulePatchType)attributes[0])); - } - - foreach (var patchGroupsAndPatchType in patchGroupsAttributesAndPatchType) - { - var patchType = patchGroupsAndPatchType.Value; - var patchGroupsAndAttributes = patchGroupsAndPatchType.Key; - - var chosenIndexes = ChoosePatch(patchType, patchGroupsAndAttributes.Value); - - foreach (var chosenIndex in chosenIndexes) - { - var patchGroup = patchGroupsAndAttributes.Key[chosenIndex]; - - _logger.LogInfo($"Using patch group {patchGroup.FullName}"); - - foreach (var innerPatch in patchGroup.GetNestedTypes(AccessTools.all)) - { - yield return new(patchType.Priority, innerPatch); - } - } - } - } - - /// - /// Helper function to convert a version string to a comparable integer - /// - /// Version number, all characters that is a . is removed, all non-numeric characters are set to 0 - /// Fallback value in case the operation "fails" - /// A equal version number - protected static ulong VersionStringToNumber(string version, ulong fallback = 0) - { - if (version == null) return fallback; - - version = version.Replace(".", ""); - - // replace all non-numeric characters with 0 - var versionNumber = ulong.Parse(Regex.Replace(version, "[^0-9]", "0")); - - return versionNumber; - } -} \ No newline at end of file diff --git a/UniTAS/Patcher/Interfaces/Patches/PatchProcessor/PatchProcessor.cs b/UniTAS/Patcher/Interfaces/Patches/PatchProcessor/PatchProcessor.cs index 7468e024..8a93ba24 100644 --- a/UniTAS/Patcher/Interfaces/Patches/PatchProcessor/PatchProcessor.cs +++ b/UniTAS/Patcher/Interfaces/Patches/PatchProcessor/PatchProcessor.cs @@ -10,6 +10,6 @@ public abstract class PatchProcessor /// /// Processes patch modules /// - /// List of patch priority and types for patching + /// List of patch priority and classes that contains classes for patching public abstract IEnumerable> ProcessModules(); } \ No newline at end of file diff --git a/UniTAS/Patcher/Interfaces/Patches/PatchTypes/ModulePatchType.cs b/UniTAS/Patcher/Interfaces/Patches/PatchTypes/ModulePatchType.cs deleted file mode 100644 index 579c327f..00000000 --- a/UniTAS/Patcher/Interfaces/Patches/PatchTypes/ModulePatchType.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace UniTAS.Patcher.Interfaces.Patches.PatchTypes; - -public class ModulePatchType : PatchType -{ - /// - /// Patches all patch groups that meets the patch group requirements - /// - public bool PatchAllGroups { get; } - - protected ModulePatchType(bool patchAllGroups) - { - PatchAllGroups = patchAllGroups; - } - - protected ModulePatchType() : this(false) - { - } -} \ No newline at end of file diff --git a/UniTAS/Patcher/Interfaces/Patches/PatchTypes/MscorlibPatch.cs b/UniTAS/Patcher/Interfaces/Patches/PatchTypes/MscorlibPatch.cs deleted file mode 100644 index 1eec9a93..00000000 --- a/UniTAS/Patcher/Interfaces/Patches/PatchTypes/MscorlibPatch.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace UniTAS.Patcher.Interfaces.Patches.PatchTypes; - -public class MscorlibPatch : ModulePatchType -{ - public MscorlibPatch(bool patchAllGroups) : base(patchAllGroups) - { - } - - public MscorlibPatch() - { - } -} \ No newline at end of file diff --git a/UniTAS/Patcher/Interfaces/Patches/PatchTypes/UnityPatch.cs b/UniTAS/Patcher/Interfaces/Patches/PatchTypes/UnityPatch.cs deleted file mode 100644 index 18ef37ae..00000000 --- a/UniTAS/Patcher/Interfaces/Patches/PatchTypes/UnityPatch.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace UniTAS.Patcher.Interfaces.Patches.PatchTypes; - -public class UnityPatch : ModulePatchType -{ - public UnityPatch(bool patchAllGroups) : base(patchAllGroups) - { - } - - public UnityPatch() - { - } -} \ No newline at end of file diff --git a/UniTAS/Patcher/Patches/Harmony/SystemTimeOverrideModule.cs b/UniTAS/Patcher/Patches/Harmony/SystemTimeOverrideModule.cs index 3bd1d2c1..6417e3d1 100644 --- a/UniTAS/Patcher/Patches/Harmony/SystemTimeOverrideModule.cs +++ b/UniTAS/Patcher/Patches/Harmony/SystemTimeOverrideModule.cs @@ -2,7 +2,6 @@ using System.Diagnostics.CodeAnalysis; using System.Reflection; using HarmonyLib; -using UniTAS.Patcher.Interfaces.Patches.PatchGroups; using UniTAS.Patcher.Interfaces.Patches.PatchTypes; using UniTAS.Patcher.Services; using UniTAS.Patcher.Services.VirtualEnvironment; @@ -15,7 +14,7 @@ namespace UniTAS.Patcher.Patches.Harmony; -[MscorlibPatch(true)] +[RawPatch] [SuppressMessage("ReSharper", "ClassNeverInstantiated.Local")] [SuppressMessage("ReSharper", "RedundantAssignment")] public class SystemTimeOverrideModule @@ -26,44 +25,40 @@ public class SystemTimeOverrideModule private static readonly ITimeEnv TimeEnv = ContainerStarter.Kernel.GetInstance(); - [MscorlibPatchGroup] - private class AllVersions + [HarmonyPatch(typeof(DateTime), nameof(DateTime.Now), MethodType.Getter)] + private class get_Now { - [HarmonyPatch(typeof(DateTime), nameof(DateTime.Now), MethodType.Getter)] - private class get_Now + private static Exception Cleanup(MethodBase original, Exception ex) { - private static Exception Cleanup(MethodBase original, Exception ex) - { - return PatchHelper.CleanupIgnoreFail(original, ex); - } + return PatchHelper.CleanupIgnoreFail(original, ex); + } - private static bool Prefix(ref DateTime __result) - { - if (ReverseInvoker.InnerCall()) - return true; - __result = TimeEnv.CurrentTime; - return false; - } + private static bool Prefix(ref DateTime __result) + { + if (ReverseInvoker.InnerCall()) + return true; + __result = TimeEnv.CurrentTime; + return false; + } - private static void Postfix() - { - ReverseInvoker.Return(); - } + private static void Postfix() + { + ReverseInvoker.Return(); } + } - [HarmonyPatch(typeof(Environment), nameof(Environment.TickCount), MethodType.Getter)] - private class get_TickCount + [HarmonyPatch(typeof(Environment), nameof(Environment.TickCount), MethodType.Getter)] + private class get_TickCount + { + private static Exception Cleanup(MethodBase original, Exception ex) { - private static Exception Cleanup(MethodBase original, Exception ex) - { - return PatchHelper.CleanupIgnoreFail(original, ex); - } + return PatchHelper.CleanupIgnoreFail(original, ex); + } - private static bool Prefix(ref int __result) - { - __result = (int)(TimeEnv.RealtimeSinceStartup * 1000f); - return false; - } + private static bool Prefix(ref int __result) + { + __result = (int)(TimeEnv.RealtimeSinceStartup * 1000f); + return false; } } } \ No newline at end of file