From 1e33b7deb5012496fadbdebb30e2dca29d5a6237 Mon Sep 17 00:00:00 2001 From: goat <16760685+goaaats@users.noreply.github.com> Date: Mon, 12 Jul 2021 12:00:19 +0200 Subject: [PATCH] feat(PluginManager): add switch to allow for loading plugins of all API levels --- Dalamud/Configuration/Internal/DalamudConfiguration.cs | 5 +++++ Dalamud/Interface/Internal/DalamudInterface.cs | 8 ++++++++ Dalamud/Plugin/Internal/LocalPlugin.cs | 2 +- Dalamud/Plugin/Internal/PluginManager.cs | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Dalamud/Configuration/Internal/DalamudConfiguration.cs b/Dalamud/Configuration/Internal/DalamudConfiguration.cs index 678a68e78..2188b553e 100644 --- a/Dalamud/Configuration/Internal/DalamudConfiguration.cs +++ b/Dalamud/Configuration/Internal/DalamudConfiguration.cs @@ -164,6 +164,11 @@ namespace Dalamud.Configuration.Internal /// public string DalamudBetaKind { get; set; } + /// + /// Gets or sets a value indicating whether or not all plugins, regardless of API level, should be loaded. + /// + public bool LoadAllApiLevels { get; set; } + /// /// Load a configuration from the provided path. /// diff --git a/Dalamud/Interface/Internal/DalamudInterface.cs b/Dalamud/Interface/Internal/DalamudInterface.cs index 16203edec..e7993914d 100644 --- a/Dalamud/Interface/Internal/DalamudInterface.cs +++ b/Dalamud/Interface/Internal/DalamudInterface.cs @@ -464,6 +464,14 @@ namespace Dalamud.Interface.Internal this.dalamud.PluginManager.ScanDevPlugins(); } + ImGui.Separator(); + + if (ImGui.MenuItem("Load all API levels", null, this.dalamud.Configuration.LoadAllApiLevels)) + { + this.dalamud.Configuration.LoadAllApiLevels = !this.dalamud.Configuration.LoadAllApiLevels; + this.dalamud.Configuration.Save(); + } + ImGui.Separator(); ImGui.MenuItem("API Level:" + PluginManager.DalamudApiLevel, false); ImGui.MenuItem("Loaded plugins:" + this.dalamud.PluginManager?.InstalledPlugins.Count, false); diff --git a/Dalamud/Plugin/Internal/LocalPlugin.cs b/Dalamud/Plugin/Internal/LocalPlugin.cs index 45fbb144f..e14153fc6 100644 --- a/Dalamud/Plugin/Internal/LocalPlugin.cs +++ b/Dalamud/Plugin/Internal/LocalPlugin.cs @@ -207,7 +207,7 @@ namespace Dalamud.Plugin.Internal if (this.Manifest.ApplicableVersion < this.dalamud.StartInfo.GameVersion) throw new InvalidPluginOperationException($"Unable to load {this.Name}, no applicable version"); - if (this.Manifest.DalamudApiLevel < PluginManager.DalamudApiLevel) + if (this.Manifest.DalamudApiLevel < PluginManager.DalamudApiLevel && !this.dalamud.Configuration.LoadAllApiLevels) throw new InvalidPluginOperationException($"Unable to load {this.Name}, incompatible API level"); if (this.Manifest.Disabled) diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs index 2d57c4e2b..4003ae02d 100644 --- a/Dalamud/Plugin/Internal/PluginManager.cs +++ b/Dalamud/Plugin/Internal/PluginManager.cs @@ -765,7 +765,7 @@ namespace Dalamud.Plugin.Internal return false; // API level - if (manifest.DalamudApiLevel < DalamudApiLevel) + if (manifest.DalamudApiLevel < DalamudApiLevel && !this.dalamud.Configuration.LoadAllApiLevels) return false; // Banned