Add check for Palette+.

This commit is contained in:
Ottermandias 2024-01-17 01:35:27 +01:00
parent 78a77eb6c4
commit 5a30107d78
3 changed files with 52 additions and 12 deletions

View file

@ -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();
}

View file

@ -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;
}
}

View file

@ -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<string>("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
}
}
}