diff --git a/Glamourer/Gui/Tabs/SettingsTab.cs b/Glamourer/Gui/Tabs/SettingsTab.cs index 13e6412..75ee642 100644 --- a/Glamourer/Gui/Tabs/SettingsTab.cs +++ b/Glamourer/Gui/Tabs/SettingsTab.cs @@ -28,7 +28,8 @@ public class SettingsTab( FunModule funModule, IKeyState keys, DesignColorUi designColorUi, - PaletteImport paletteImport) + PaletteImport paletteImport, + PalettePlusChecker paletteChecker) : ITab { private readonly VirtualKey[] _validKeys = keys.GetValidVirtualKeys().Prepend(VirtualKey.NO_KEY).ToArray(); @@ -84,7 +85,7 @@ public class SettingsTab( config.RevertManualChangesOnZoneChange, v => config.RevertManualChangesOnZoneChange = v); Checkbox("Enable Advanced Customization Options", "Enable the display and editing of advanced customization options like arbitrary colors.", - config.UseAdvancedParameters, v => config.UseAdvancedParameters = v); + config.UseAdvancedParameters, paletteChecker.SetAdvancedParameters); PaletteImportButton(); ImGui.NewLine(); } diff --git a/Glamourer/Interop/PalettePlus/PaletteImport.cs b/Glamourer/Interop/PalettePlus/PaletteImport.cs index 5253c05..474527b 100644 --- a/Glamourer/Interop/PalettePlus/PaletteImport.cs +++ b/Glamourer/Interop/PalettePlus/PaletteImport.cs @@ -164,14 +164,4 @@ public class PaletteImport(DalamudPluginInterface pluginInterface, DesignManager Glamourer.Log.Error($"Could not read Palette+ configuration:\n{ex}"); } } - - public bool TryRead(string name, ref CustomizeParameterData data) - { - if (!Data.TryGetValue(name, out var t)) - return false; - - foreach (var flag in t.Item2.Iterate()) - data[flag] = t.Item1[flag]; - return true; - } } diff --git a/Glamourer/Interop/PalettePlus/PalettePlusChecker.cs b/Glamourer/Interop/PalettePlus/PalettePlusChecker.cs new file mode 100644 index 0000000..6a23e90 --- /dev/null +++ b/Glamourer/Interop/PalettePlus/PalettePlusChecker.cs @@ -0,0 +1,49 @@ +using Dalamud.Interface.Internal.Notifications; +using Dalamud.Plugin; +using OtterGui.Classes; +using OtterGui.Services; + +namespace Glamourer.Interop.PalettePlus; + +public sealed class PalettePlusChecker : IRequiredService, IDisposable +{ + private readonly Timer _paletteTimer; + private readonly Configuration _config; + private readonly DalamudPluginInterface _pluginInterface; + + public PalettePlusChecker(Configuration config, DalamudPluginInterface pluginInterface) + { + _config = config; + _pluginInterface = pluginInterface; + _paletteTimer = new Timer(_ => PalettePlusCheck(), null, TimeSpan.FromSeconds(30), Timeout.InfiniteTimeSpan); + } + + public void Dispose() + => _paletteTimer.Dispose(); + + public void SetAdvancedParameters(bool value) + { + _config.UseAdvancedParameters = value; + PalettePlusCheck(); + } + + private void PalettePlusCheck() + { + if (!_config.UseAdvancedParameters) + return; + + try + { + var subscriber = _pluginInterface.GetIpcSubscriber("PalettePlus.ApiVersion"); + subscriber.InvokeFunc(); + Glamourer.Messager.AddMessage(new Notification( + "You currently have Palette+ installed. This conflicts with Glamourers advanced options and will cause invalid state.\n\n" + + "Please uninstall Palette+ and restart your game. Palette+ is deprecated and no longer supported by Mare Synchronos.", + NotificationType.Warning, 10000)); + } + catch + { + // ignored + } + } +}