From c85598acf47fe90a213eae1a444247b7c5f05105 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Sun, 18 Feb 2024 13:06:19 +0100 Subject: [PATCH] Listen to temporary mod changes. --- Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs | 3 +- .../Interop/Penumbra/PenumbraAutoRedraw.cs | 50 ++++--------------- Penumbra.Api | 2 +- 3 files changed, 11 insertions(+), 44 deletions(-) diff --git a/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs b/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs index f56a988..fab2085 100644 --- a/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs +++ b/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs @@ -21,7 +21,6 @@ public class SettingsTab( Configuration config, DesignFileSystemSelector selector, CodeService codeService, - PenumbraAutoRedraw autoRedraw, ContextMenuService contextMenuService, UiBuilder uiBuilder, GlamourerChangelog changelog, @@ -84,7 +83,7 @@ public class SettingsTab( config.DisableFestivals == 0, v => config.DisableFestivals = v ? (byte)0 : (byte)2); Checkbox("Auto-Reload Gear", "Automatically reload equipment pieces on your own character when changing any mod options in Penumbra in their associated collection.", - config.AutoRedrawEquipOnChanges, autoRedraw.SetState); + config.AutoRedrawEquipOnChanges, v => config.AutoRedrawEquipOnChanges = v); Checkbox("Revert Manual Changes on Zone Change", "Restores the old behaviour of reverting your character to its game or automation base whenever you change the zone.", config.RevertManualChangesOnZoneChange, v => config.RevertManualChangesOnZoneChange = v); diff --git a/Glamourer/Interop/Penumbra/PenumbraAutoRedraw.cs b/Glamourer/Interop/Penumbra/PenumbraAutoRedraw.cs index f702e84..bf8fb4b 100644 --- a/Glamourer/Interop/Penumbra/PenumbraAutoRedraw.cs +++ b/Glamourer/Interop/Penumbra/PenumbraAutoRedraw.cs @@ -9,58 +9,26 @@ public class PenumbraAutoRedraw : IDisposable private readonly PenumbraService _penumbra; private readonly StateManager _state; private readonly ObjectManager _objects; - private bool _enabled; public PenumbraAutoRedraw(PenumbraService penumbra, Configuration config, StateManager state, ObjectManager objects) { - _penumbra = penumbra; - _config = config; - _state = state; - _objects = objects; - if (_config.AutoRedrawEquipOnChanges) - Enable(); - } - - public void SetState(bool value) - { - if (value == _config.AutoRedrawEquipOnChanges) - return; - - _config.AutoRedrawEquipOnChanges = value; - _config.Save(); - if (value) - Enable(); - else - Disable(); - } - - public void Enable() - { - if (_enabled) - return; - + _penumbra = penumbra; + _config = config; + _state = state; + _objects = objects; _penumbra.ModSettingChanged += OnModSettingChange; - _enabled = true; - } - - public void Disable() - { - if (!_enabled) - return; - - _penumbra.ModSettingChanged -= OnModSettingChange; - _enabled = false; } public void Dispose() - { - Disable(); - } + => _penumbra.ModSettingChanged -= OnModSettingChange; private void OnModSettingChange(ModSettingChange type, string name, string mod, bool inherited) { + if (!_config.AutoRedrawEquipOnChanges && type is not ModSettingChange.TemporaryMod) + return; + var playerName = _penumbra.GetCurrentPlayerCollection(); if (playerName == name) - _state.ReapplyState(_objects.Player); + _state.ReapplyState(_objects.Player, StateSource.IpcManual); } } diff --git a/Penumbra.Api b/Penumbra.Api index a28219a..2b6bcf3 160000 --- a/Penumbra.Api +++ b/Penumbra.Api @@ -1 +1 @@ -Subproject commit a28219ac57b53c3be6ca8c252ceb9f76ae0b6c21 +Subproject commit 2b6bcf338794b34bcba2730c70dcbb73ce97311b