From d4f2c5fcac5e08deb462429d6d6c113ca35c039e Mon Sep 17 00:00:00 2001 From: Cara Date: Wed, 6 Jan 2021 14:54:02 +1030 Subject: [PATCH] Plugin Config Directories Allow plugins to get a directory in the pluginConfig folder --- Dalamud/Configuration/PluginConfigurations.cs | 14 ++++++++++++++ Dalamud/Plugin/DalamudPluginInterface.cs | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/Dalamud/Configuration/PluginConfigurations.cs b/Dalamud/Configuration/PluginConfigurations.cs index d108c5777..bb1f67d9f 100644 --- a/Dalamud/Configuration/PluginConfigurations.cs +++ b/Dalamud/Configuration/PluginConfigurations.cs @@ -42,6 +42,18 @@ namespace Dalamud.Configuration }); } + public string GetDirectory(string pluginName) { + try { + var path = GetDirectoryPath(pluginName); + if (!path.Exists) { + path.Create(); + } + return path.FullName; + } catch { + return string.Empty; + } + } + // Parameterized deserialization // Currently this is called via reflection from DalamudPluginInterface.GetPluginConfig() // Eventually there may be an additional pluginInterface method that can call this directly @@ -59,5 +71,7 @@ namespace Dalamud.Configuration } private FileInfo GetPath(string pluginName) => new FileInfo(Path.Combine(this.configDirectory.FullName, $"{pluginName}.json")); + private DirectoryInfo GetDirectoryPath(string pluginName) => new DirectoryInfo(Path.Combine(this.configDirectory.FullName, pluginName)); + } } diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs index 4a2ae9f41..b6d6a12e2 100644 --- a/Dalamud/Plugin/DalamudPluginInterface.cs +++ b/Dalamud/Plugin/DalamudPluginInterface.cs @@ -131,6 +131,12 @@ namespace Dalamud.Plugin return this.configs.Load(this.pluginName); } + /// + /// Get the config directory + /// + /// directory with path of AppData/XIVLauncher/pluginConfig/PluginInternalName + public string GetPluginConfigDirectory() => this.configs.GetDirectory(this.pluginName); + #region Chat Links ///