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