diff --git a/IllusionInjector/PluginManager.cs b/IllusionInjector/PluginManager.cs index 25a34c90..de9fb691 100644 --- a/IllusionInjector/PluginManager.cs +++ b/IllusionInjector/PluginManager.cs @@ -44,13 +44,35 @@ namespace IllusionInjector _Plugins = new List(); if (!Directory.Exists(pluginDirectory)) return; - - String[] files = Directory.GetFiles(pluginDirectory, "*.dll"); - foreach (var s in files) + + if (!Directory.Exists(Path.Combine(pluginDirectory, ".cache"))) + { + Directory.CreateDirectory(Path.Combine(pluginDirectory, ".cache")); + } + else + { + foreach (string plugin in Directory.GetFiles(Path.Combine(pluginDirectory, ".cache"), "*")) + { + File.Delete(plugin); + } + } + + //Copy plugins to .cache + string[] originalPlugins = Directory.GetFiles(pluginDirectory, "*.dll"); + foreach (string s in originalPlugins) + { + string pluginCopy = pluginDirectory + "\\.cache" + s.Substring(s.LastIndexOf('\\')); + File.Copy(Path.Combine(pluginDirectory, s), pluginCopy); + } + + //Load copied plugins + string copiedPluginsDirectory = pluginDirectory + "\\.cache"; + string[] copiedPlugins = Directory.GetFiles(copiedPluginsDirectory, "*.dll"); + foreach (string s in copiedPlugins) { - _Plugins.AddRange(LoadPluginsFromFile(Path.Combine(pluginDirectory, s), exeName)); + _Plugins.AddRange(LoadPluginsFromFile(s, exeName)); } - + // DEBUG debugLogger.Log($"Running on Unity {UnityEngine.Application.unityVersion}"); diff --git a/IllusionPlugin/IllusionPlugin.csproj b/IllusionPlugin/IllusionPlugin.csproj index ae6ce0cf..b2004142 100644 --- a/IllusionPlugin/IllusionPlugin.csproj +++ b/IllusionPlugin/IllusionPlugin.csproj @@ -44,6 +44,7 @@ + diff --git a/README.md b/README.md index c7bd0291..2a147d3c 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,9 @@ To verify it worked, start the game with the `--verbose` flag. If a new console 3. Implement `IPlugin` or `IEnhancedPlugin` 4. Build the project and copy the DLL into the Plugins folder of the game -Note: You can use `Console.Write()` with the `--verbose` flag for debugging your plugins. +Note: You can use the `Logger` class to debug your plugins. Either retrieve an instance using `this.GetLogger()` in your Plugin class or use `new Logger("Mod Name")`. + +Use the `--verbose` flag to access the console. ## How To Keep The Game Patched