diff --git a/Dalamud.Injector/Dalamud.Injector.csproj b/Dalamud.Injector/Dalamud.Injector.csproj
index 680191ef5..4f798b2e7 100644
--- a/Dalamud.Injector/Dalamud.Injector.csproj
+++ b/Dalamud.Injector/Dalamud.Injector.csproj
@@ -14,10 +14,10 @@
true
- 4.7.11.0
- 4.7.11.0
+ 4.7.12.0
+ 4.7.12.0
XIVLauncher addon injection
- 4.7.11.0
+ 4.7.12.0
diff --git a/Dalamud.Injector/Program.cs b/Dalamud.Injector/Program.cs
index 3993295b6..d0fbe5a2a 100644
--- a/Dalamud.Injector/Program.cs
+++ b/Dalamud.Injector/Program.cs
@@ -83,9 +83,9 @@ namespace Dalamud.Injector {
ConfigurationPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
@"\XIVLauncher\dalamudConfig.json",
PluginDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
- @"\XIVLauncher\installedPluginsI",
+ @"\XIVLauncher\installedPlugins",
DefaultPluginDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
- @"\XIVLauncher\devPluginsI",
+ @"\XIVLauncher\devPlugins",
GameVersion = "2020.02.11.0000.0000",
Language = ClientLanguage.English
diff --git a/Dalamud/Configuration/DalamudConfiguration.cs b/Dalamud/Configuration/DalamudConfiguration.cs
index 486948b11..6953ac76b 100644
--- a/Dalamud/Configuration/DalamudConfiguration.cs
+++ b/Dalamud/Configuration/DalamudConfiguration.cs
@@ -29,14 +29,12 @@ namespace Dalamud
public string LastVersion { get; set; }
- public Dictionary PluginConfigurations { get; set; }
-
public static DalamudConfiguration Load(string path) {
return JsonConvert.DeserializeObject(File.ReadAllText(path));
}
public void Save(string path) {
- File.WriteAllText(path, JsonConvert.SerializeObject(this));
+ File.WriteAllText(path, JsonConvert.SerializeObject(this, Formatting.Indented));
}
}
}
diff --git a/Dalamud/Configuration/PluginConfigurations.cs b/Dalamud/Configuration/PluginConfigurations.cs
new file mode 100644
index 000000000..74404abe7
--- /dev/null
+++ b/Dalamud/Configuration/PluginConfigurations.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+
+namespace Dalamud.Configuration
+{
+ public class PluginConfigurations {
+ private DirectoryInfo configDirectory;
+
+ public PluginConfigurations(string storageFolder) {
+ this.configDirectory = new DirectoryInfo(storageFolder);
+ this.configDirectory.Create();
+ }
+
+ public void Save(IPluginConfiguration config, string pluginName) {
+ File.WriteAllText(GetPath(pluginName).FullName, JsonConvert.SerializeObject(config, Formatting.Indented, new JsonSerializerSettings
+ {
+ TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple,
+ TypeNameHandling = TypeNameHandling.Objects
+ }));
+ }
+
+ public IPluginConfiguration Load(string pluginName) {
+ var path = GetPath(pluginName);
+
+ if (!path.Exists)
+ return null;
+
+ return JsonConvert.DeserializeObject(File.ReadAllText(path.FullName),
+ new JsonSerializerSettings {
+ TypeNameAssemblyFormatHandling =
+ TypeNameAssemblyFormatHandling.Simple,
+ TypeNameHandling = TypeNameHandling.Objects
+ });
+ }
+
+ private FileInfo GetPath(string pluginName) => new FileInfo(Path.Combine(this.configDirectory.FullName, $"{pluginName}.json"));
+ }
+}
diff --git a/Dalamud/Dalamud.csproj b/Dalamud/Dalamud.csproj
index 933093241..9afb1437d 100644
--- a/Dalamud/Dalamud.csproj
+++ b/Dalamud/Dalamud.csproj
@@ -14,9 +14,9 @@
true
- 4.7.11.0
- 4.7.11.0
- 4.7.11.0
+ 4.7.12.0
+ 4.7.12.0
+ 4.7.12.0
@@ -65,9 +65,6 @@
Resources.Designer.cs
-
-
-
diff --git a/Dalamud/Game/Internal/AntiDebug.cs b/Dalamud/Game/Internal/AntiDebug.cs
index 6ce25488b..54ec19da2 100644
--- a/Dalamud/Game/Internal/AntiDebug.cs
+++ b/Dalamud/Game/Internal/AntiDebug.cs
@@ -25,7 +25,7 @@ namespace Dalamud.Game.Internal
}
public void Enable() {
- this.debuggerPresentHook.Enable();
+ //this.debuggerPresentHook.Enable();
}
public void Dispose() {
diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs
index 70581119f..8c0797e30 100644
--- a/Dalamud/Plugin/DalamudPluginInterface.cs
+++ b/Dalamud/Plugin/DalamudPluginInterface.cs
@@ -52,12 +52,13 @@ namespace Dalamud.Plugin
private readonly Dalamud dalamud;
private readonly string pluginName;
+ private readonly PluginConfigurations configs;
///
/// Set up the interface and populate all fields needed.
///
///
- 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;
}
///
@@ -81,20 +83,10 @@ namespace Dalamud.Plugin
///
/// The current configuration.
public void SavePluginConfig(IPluginConfiguration currentConfig) {
- if (this.dalamud.Configuration.PluginConfigurations == null)
- this.dalamud.Configuration.PluginConfigurations = new Dictionary();
-
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);
}
///
@@ -102,18 +94,7 @@ namespace Dalamud.Plugin
///
/// A previously saved config or null if none was saved before.
public IPluginConfiguration GetPluginConfig() {
- if (this.dalamud.Configuration.PluginConfigurations == null)
- this.dalamud.Configuration.PluginConfigurations = new Dictionary();
-
- 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
diff --git a/Dalamud/Plugin/PluginManager.cs b/Dalamud/Plugin/PluginManager.cs
index f2a748f53..a7c9574ba 100644
--- a/Dalamud/Plugin/PluginManager.cs
+++ b/Dalamud/Plugin/PluginManager.cs
@@ -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));