diff --git a/IPA.Loader/Config/Stores/GeneratedStoreImpl.cs b/IPA.Loader/Config/Stores/GeneratedStoreImpl.cs index c0bcbed6..b43f0aaf 100644 --- a/IPA.Loader/Config/Stores/GeneratedStoreImpl.cs +++ b/IPA.Loader/Config/Stores/GeneratedStoreImpl.cs @@ -148,7 +148,7 @@ namespace IPA.Config.Stores { private readonly IGeneratedStore generated; private bool inChangeTransaction = false; - private bool changedInTransaction = false; + //private bool changedInTransaction = false; internal static ConstructorInfo Ctor = typeof(Impl).GetConstructor(new[] { typeof(IGeneratedStore) }); public Impl(IGeneratedStore store) => generated = store; @@ -1405,16 +1405,16 @@ namespace IPA.Config.Stores il.Emit(OpCodes.Call, Type_GetTypeFromHandle); } - private static Type IDisposable_t = typeof(IDisposable); - private static MethodInfo IDisposable_Dispose = IDisposable_t.GetMethod(nameof(IDisposable.Dispose)); + private static readonly Type IDisposable_t = typeof(IDisposable); + private static readonly MethodInfo IDisposable_Dispose = IDisposable_t.GetMethod(nameof(IDisposable.Dispose)); - private static Type Decimal_t = typeof(decimal); - private static ConstructorInfo Decimal_FromFloat = Decimal_t.GetConstructor(new[] { typeof(float) }); - private static ConstructorInfo Decimal_FromDouble = Decimal_t.GetConstructor(new[] { typeof(double) }); - private static ConstructorInfo Decimal_FromInt = Decimal_t.GetConstructor(new[] { typeof(int) }); - private static ConstructorInfo Decimal_FromUInt = Decimal_t.GetConstructor(new[] { typeof(uint) }); - private static ConstructorInfo Decimal_FromLong = Decimal_t.GetConstructor(new[] { typeof(long) }); - private static ConstructorInfo Decimal_FromULong = Decimal_t.GetConstructor(new[] { typeof(ulong) }); + private static readonly Type Decimal_t = typeof(decimal); + private static readonly ConstructorInfo Decimal_FromFloat = Decimal_t.GetConstructor(new[] { typeof(float) }); + private static readonly ConstructorInfo Decimal_FromDouble = Decimal_t.GetConstructor(new[] { typeof(double) }); + private static readonly ConstructorInfo Decimal_FromInt = Decimal_t.GetConstructor(new[] { typeof(int) }); + private static readonly ConstructorInfo Decimal_FromUInt = Decimal_t.GetConstructor(new[] { typeof(uint) }); + private static readonly ConstructorInfo Decimal_FromLong = Decimal_t.GetConstructor(new[] { typeof(long) }); + private static readonly ConstructorInfo Decimal_FromULong = Decimal_t.GetConstructor(new[] { typeof(ulong) }); private static void EmitNumberConvertTo(ILGenerator il, Type to, Type from) { // WARNING: THIS USES THE NO-OVERFLOW OPCODES if (to == from) return; diff --git a/IPA.Loader/IPA.Loader.csproj b/IPA.Loader/IPA.Loader.csproj index 81dd44ab..d79de0d8 100644 --- a/IPA.Loader/IPA.Loader.csproj +++ b/IPA.Loader/IPA.Loader.csproj @@ -51,6 +51,18 @@ $(OutputPath)IPA.Loader.xml + + CA1031 + + + CA1031 + + + CA1031 + + + CA1031 + diff --git a/IPA.Loader/Loader/PluginManager.cs b/IPA.Loader/Loader/PluginManager.cs index 16c23879..d872892a 100644 --- a/IPA.Loader/Loader/PluginManager.cs +++ b/IPA.Loader/Loader/PluginManager.cs @@ -24,6 +24,7 @@ using Net3_Proxy; using Path = Net3_Proxy.Path; using File = Net3_Proxy.File; using Directory = Net3_Proxy.Directory; +using Array = Net3_Proxy.Array; #endif namespace IPA.Loader @@ -421,7 +422,7 @@ namespace IPA.Loader catch (ReflectionTypeLoadException e) { Logger.loader.Error($"Could not load the following types from {Path.GetFileName(file)}:"); - Logger.loader.Error($" {string.Join("\n ", e.LoaderExceptions?.Select(e1 => e1?.Message).StrJP() ?? new string[0])}"); + Logger.loader.Error($" {string.Join("\n ", e.LoaderExceptions?.Select(e1 => e1?.Message).StrJP() ?? Array.Empty())}"); } catch (Exception e) { diff --git a/IPA.Loader/Logging/StdoutInterceptor.cs b/IPA.Loader/Logging/StdoutInterceptor.cs index aeac0be7..fca129b0 100644 --- a/IPA.Loader/Logging/StdoutInterceptor.cs +++ b/IPA.Loader/Logging/StdoutInterceptor.cs @@ -19,7 +19,7 @@ namespace IPA.Logging } private string lineBuffer = ""; - private object bufferLock = new object(); + private readonly object bufferLock = new object(); public override void Write(string value) { diff --git a/IPA/IPA.csproj b/IPA/IPA.csproj index 98e852c3..bd05c219 100644 --- a/IPA/IPA.csproj +++ b/IPA/IPA.csproj @@ -1,133 +1,137 @@ - - - - - Debug - AnyCPU - {14092533-98BB-40A4-9AFC-27BB75672A70} - Exe - Properties - IPA - IPA - v4.6.1 - 512 - - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - true - $(SolutionDir)=C:\ - $(Configuration) - - - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - Debug - Release - - - AnyCPU - none - true - bin\Release\ - TRACE - prompt - 4 - false - true - Release - Release - - - favicon.ico - - - IPA.Program - - - false - - - true - bin\Verbose\ - DEBUG;TRACE - full - AnyCPU - prompt - MinimumRecommendedRules.ruleset - Debug - Verbose_Release - - - bin\Verbose_Release\ - Release - Verbose_Release - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0.11.1 - - - - - False - Microsoft .NET Framework 4.6.2 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 - false - - - + + + + + Debug + AnyCPU + {14092533-98BB-40A4-9AFC-27BB75672A70} + Exe + Properties + IPA + IPA + v4.6.1 + 512 + + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + true + $(SolutionDir)=C:\ + $(Configuration) + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + Debug + Release + CA1031 + + + AnyCPU + none + true + bin\Release\ + TRACE + prompt + 4 + false + true + Release + Release + CA1031 + + + favicon.ico + + + IPA.Program + + + false + + + true + bin\Verbose\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + Debug + Verbose_Release + CA1031 + + + bin\Verbose_Release\ + Release + Verbose_Release + CA1031 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.11.1 + + + + + False + Microsoft .NET Framework 4.6.2 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + + \ No newline at end of file diff --git a/IPA/Program.cs b/IPA/Program.cs index 03927c69..2452dd3f 100644 --- a/IPA/Program.cs +++ b/IPA/Program.cs @@ -13,7 +13,7 @@ using IPA.Patcher; namespace IPA { [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")] - public class Program + public static class Program { [SuppressMessage("ReSharper", "InconsistentNaming")] public enum Architecture @@ -37,7 +37,7 @@ namespace IPA public static readonly ArgumentFlag ArgLaunch = new ArgumentFlag("--launch", "-l") { DocString = "uses positional parameters as arguments to start the game after patch/unpatch" }; [STAThread] - public static void Main(string[] args) + public static void Main() { Arguments.CmdLine.Flags(ArgHelp, ArgWaitFor, ArgForce, ArgRevert, ArgNoWait, ArgStart, ArgLaunch, ArgNoRevert).Process(); @@ -177,13 +177,9 @@ namespace IPA Console.WriteLine("Installing files... "); CopyAll(new DirectoryInfo(context.DataPathSrc), new DirectoryInfo(context.DataPathDst), force, - backup, - (from, to) => NativePluginInterceptor(from, to, new DirectoryInfo(nativePluginFolder), isFlat, - architecture)); + backup); CopyAll(new DirectoryInfo(context.LibsPathSrc), new DirectoryInfo(context.LibsPathDst), force, - backup, - (from, to) => NativePluginInterceptor(from, to, new DirectoryInfo(nativePluginFolder), isFlat, - architecture)); + backup); CopyAll(new DirectoryInfo(context.IPARoot), new DirectoryInfo(context.ProjectRoot), force, backup, null, false); @@ -261,51 +257,6 @@ namespace IPA } } - public static IEnumerable NativePluginInterceptor(FileInfo from, FileInfo to, - DirectoryInfo nativePluginFolder, bool isFlat, Architecture preferredArchitecture) - { - if (to.FullName.StartsWith(nativePluginFolder.FullName)) - { - var relevantBit = to.FullName.Substring(nativePluginFolder.FullName.Length + 1); - // Goes into the plugin folder! - bool isFileFlat = !relevantBit.StartsWith("x86"); - if (isFlat && !isFileFlat) - { - // Flatten structure - bool is64Bit = relevantBit.StartsWith("x86_64"); - if (!is64Bit && preferredArchitecture == Architecture.x86) - { - // 32 bit - yield return new FileInfo(Path.Combine(nativePluginFolder.FullName, - relevantBit.Substring("x86".Length + 1))); - } - else if (is64Bit && (preferredArchitecture == Architecture.x64 || - preferredArchitecture == Architecture.Unknown)) - { - // 64 bit - yield return new FileInfo(Path.Combine(nativePluginFolder.FullName, - relevantBit.Substring("x86_64".Length + 1))); - } - } - else if (!isFlat && isFileFlat) - { - // Deepen structure - yield return new FileInfo(Path.Combine(Path.Combine(nativePluginFolder.FullName, "x86"), - relevantBit)); - yield return new FileInfo(Path.Combine(Path.Combine(nativePluginFolder.FullName, "x86_64"), - relevantBit)); - } - else - { - yield return to; - } - } - else - { - yield return to; - } - } - public static void ClearLine() { if (IsConsole) @@ -445,7 +396,7 @@ namespace IPA } } - public abstract class Keyboard + internal static class Keyboard { [Flags] private enum KeyStates