mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-01-01 05:13:40 +01:00
fix: save plugin configs with type, in external directory
This commit is contained in:
parent
dabe178fd5
commit
6529b3429f
8 changed files with 64 additions and 40 deletions
|
|
@ -52,12 +52,13 @@ namespace Dalamud.Plugin
|
|||
|
||||
private readonly Dalamud dalamud;
|
||||
private readonly string pluginName;
|
||||
private readonly PluginConfigurations configs;
|
||||
|
||||
/// <summary>
|
||||
/// Set up the interface and populate all fields needed.
|
||||
/// </summary>
|
||||
/// <param name="dalamud"></param>
|
||||
public DalamudPluginInterface(Dalamud dalamud, string pluginName) {
|
||||
public DalamudPluginInterface(Dalamud dalamud, string pluginName, PluginConfigurations configs) {
|
||||
this.CommandManager = dalamud.CommandManager;
|
||||
this.Framework = dalamud.Framework;
|
||||
this.ClientState = dalamud.ClientState;
|
||||
|
|
@ -67,6 +68,7 @@ namespace Dalamud.Plugin
|
|||
|
||||
this.dalamud = dalamud;
|
||||
this.pluginName = pluginName;
|
||||
this.configs = configs;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -81,20 +83,10 @@ namespace Dalamud.Plugin
|
|||
/// </summary>
|
||||
/// <param name="currentConfig">The current configuration.</param>
|
||||
public void SavePluginConfig(IPluginConfiguration currentConfig) {
|
||||
if (this.dalamud.Configuration.PluginConfigurations == null)
|
||||
this.dalamud.Configuration.PluginConfigurations = new Dictionary<string, object>();
|
||||
|
||||
if (currentConfig == null)
|
||||
return;
|
||||
|
||||
if (this.dalamud.Configuration.PluginConfigurations.ContainsKey(this.pluginName)) {
|
||||
this.dalamud.Configuration.PluginConfigurations[this.pluginName] = currentConfig;
|
||||
this.dalamud.Configuration.Save(this.dalamud.StartInfo.ConfigurationPath);
|
||||
return;
|
||||
}
|
||||
|
||||
this.dalamud.Configuration.PluginConfigurations.Add(this.pluginName, currentConfig);
|
||||
this.dalamud.Configuration.Save(this.dalamud.StartInfo.ConfigurationPath);
|
||||
this.configs.Save(currentConfig, this.pluginName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -102,18 +94,7 @@ namespace Dalamud.Plugin
|
|||
/// </summary>
|
||||
/// <returns>A previously saved config or null if none was saved before.</returns>
|
||||
public IPluginConfiguration GetPluginConfig() {
|
||||
if (this.dalamud.Configuration.PluginConfigurations == null)
|
||||
this.dalamud.Configuration.PluginConfigurations = new Dictionary<string, object>();
|
||||
|
||||
if (!this.dalamud.Configuration.PluginConfigurations.ContainsKey(this.pluginName))
|
||||
return null;
|
||||
|
||||
if (!(this.dalamud.Configuration.PluginConfigurations[this.pluginName] is IPluginConfiguration config))
|
||||
return null;
|
||||
|
||||
Serilog.Log.Information("Found plugin config for {0} v{1}", this.pluginName, config.Version);
|
||||
|
||||
return config;
|
||||
return this.configs.Load(this.pluginName);
|
||||
}
|
||||
|
||||
#region Logging
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ using System.Linq;
|
|||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Dalamud.Configuration;
|
||||
using Dalamud.Interface;
|
||||
using Dalamud.Plugin.Features;
|
||||
using ImGuiNET;
|
||||
|
|
@ -18,6 +19,8 @@ namespace Dalamud.Plugin
|
|||
private readonly string pluginDirectory;
|
||||
private readonly string devPluginDirectory;
|
||||
|
||||
private readonly PluginConfigurations pluginConfigs;
|
||||
|
||||
private readonly Type interfaceType = typeof(IDalamudPlugin);
|
||||
|
||||
public readonly List<(IDalamudPlugin Plugin, PluginDefinition Definition, DalamudPluginInterface PluginInterface)> Plugins = new List<(IDalamudPlugin plugin, PluginDefinition def, DalamudPluginInterface PluginInterface)>();
|
||||
|
|
@ -27,6 +30,8 @@ namespace Dalamud.Plugin
|
|||
this.pluginDirectory = pluginDirectory;
|
||||
this.devPluginDirectory = devPluginDirectory;
|
||||
|
||||
this.pluginConfigs = new PluginConfigurations(Path.Combine(Path.GetDirectoryName(dalamud.StartInfo.ConfigurationPath), "pluginConfigs"));
|
||||
|
||||
this.dalamud.InterfaceManager.OnDraw += InterfaceManagerOnOnDraw;
|
||||
}
|
||||
|
||||
|
|
@ -117,7 +122,7 @@ namespace Dalamud.Plugin
|
|||
|
||||
var plugin = (IDalamudPlugin)Activator.CreateInstance(type);
|
||||
|
||||
var dalamudInterface = new DalamudPluginInterface(this.dalamud, type.Assembly.GetName().Name);
|
||||
var dalamudInterface = new DalamudPluginInterface(this.dalamud, type.Assembly.GetName().Name, this.pluginConfigs);
|
||||
plugin.Initialize(dalamudInterface);
|
||||
Log.Information("Loaded plugin: {0}", plugin.Name);
|
||||
this.Plugins.Add((plugin, pluginDef, dalamudInterface));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue