diff --git a/Dalamud/Configuration/DalamudConfiguration.cs b/Dalamud/Configuration/DalamudConfiguration.cs index 46ef9f208..cb2ffa1ce 100644 --- a/Dalamud/Configuration/DalamudConfiguration.cs +++ b/Dalamud/Configuration/DalamudConfiguration.cs @@ -17,6 +17,17 @@ namespace Dalamud.Configuration [JsonIgnore] private string configPath; + /// + /// Delegate for the event that occurs when the dalamud configuration is saved. + /// + /// The current dalamud configuration. + public delegate void DalamudConfigurationSavedDelegate(DalamudConfiguration dalamudConfiguration); + + /// + /// Event that occurs when dalamud configuration is saved. + /// + public event DalamudConfigurationSavedDelegate OnDalamudConfigurationSaved; + /// /// Gets or sets a list of muted works. /// @@ -156,6 +167,7 @@ namespace Dalamud.Configuration public void Save() { File.WriteAllText(this.configPath, JsonConvert.SerializeObject(this, Formatting.Indented)); + this.OnDalamudConfigurationSaved?.Invoke(this); } } } diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs index e4a5b45fa..544ef9209 100644 --- a/Dalamud/Plugin/DalamudPluginInterface.cs +++ b/Dalamud/Plugin/DalamudPluginInterface.cs @@ -11,6 +11,7 @@ using Dalamud.Game; using Dalamud.Game.ClientState; using Dalamud.Game.Command; using Dalamud.Game.Internal; +using Dalamud.Game.Text; using Dalamud.Game.Text.Sanitizer; using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling.Payloads; @@ -50,6 +51,7 @@ namespace Dalamud.Plugin this.pluginName = pluginName; this.configs = configs; + this.GeneralChatType = this.dalamud.Configuration.GeneralChatType; this.Sanitizer = new Sanitizer(this.Data.Language); if (this.dalamud.Configuration.LanguageOverride != null) { @@ -65,6 +67,7 @@ namespace Dalamud.Plugin } dalamud.LocalizationManager.OnLocalizationChanged += this.OnLocalizationChanged; + dalamud.Configuration.OnDalamudConfigurationSaved += this.OnDalamudConfigurationSaved; } /// @@ -152,6 +155,11 @@ namespace Dalamud.Plugin /// public ISanitizer Sanitizer { get; } + /// + /// Gets the chat type used by default for plugin messages. + /// + public XivChatType GeneralChatType { get; private set; } + /// /// Gets the action that should be executed when any plugin sends a message. /// @@ -374,6 +382,7 @@ namespace Dalamud.Plugin this.UiBuilder.Dispose(); this.Framework.Gui.Chat.RemoveChatLinkHandler(this.pluginName); this.dalamud.LocalizationManager.OnLocalizationChanged -= this.OnLocalizationChanged; + this.dalamud.Configuration.OnDalamudConfigurationSaved -= this.OnDalamudConfigurationSaved; } private void OnLocalizationChanged(string langCode) @@ -381,5 +390,10 @@ namespace Dalamud.Plugin this.UiLanguage = langCode; this.OnLanguageChanged?.Invoke(langCode); } + + private void OnDalamudConfigurationSaved(DalamudConfiguration dalamudConfiguration) + { + this.GeneralChatType = dalamudConfiguration.GeneralChatType; + } } }