diff --git a/Glamourer/Api/GlamourerApi.cs b/Glamourer/Api/GlamourerApi.cs index 85f873a..4bad983 100644 --- a/Glamourer/Api/GlamourerApi.cs +++ b/Glamourer/Api/GlamourerApi.cs @@ -3,7 +3,7 @@ using OtterGui.Services; namespace Glamourer.Api; -public class GlamourerApi(Configuration config, DesignsApi designs, StateApi state, ItemsApi items) : IGlamourerApi, IApiService +public class GlamourerApi(DesignsApi designs, StateApi state, ItemsApi items) : IGlamourerApi, IApiService { public const int CurrentApiVersionMajor = 1; public const int CurrentApiVersionMinor = 7; @@ -11,9 +11,6 @@ public class GlamourerApi(Configuration config, DesignsApi designs, StateApi sta public (int Major, int Minor) ApiVersion => (CurrentApiVersionMajor, CurrentApiVersionMinor); - public bool AutoReloadGearEnabled - => config.AutoRedrawEquipOnChanges; - public IGlamourerApiDesigns Designs => designs; diff --git a/Glamourer/Api/IpcProviders.cs b/Glamourer/Api/IpcProviders.cs index f120db3..6019e68 100644 --- a/Glamourer/Api/IpcProviders.cs +++ b/Glamourer/Api/IpcProviders.cs @@ -22,7 +22,6 @@ public sealed class IpcProviders : IDisposable, IApiService new FuncProvider<(int Major, int Minor)>(pi, "Glamourer.ApiVersions", () => api.ApiVersion), // backward compatibility new FuncProvider(pi, "Glamourer.ApiVersion", () => api.ApiVersion.Major), // backward compatibility IpcSubscribers.ApiVersion.Provider(pi, api), - IpcSubscribers.AutoReloadGearEnabled.Provider(pi, api), IpcSubscribers.GetDesignList.Provider(pi, api.Designs), IpcSubscribers.GetDesignListExtended.Provider(pi, api.Designs), @@ -51,18 +50,14 @@ public sealed class IpcProviders : IDisposable, IApiService IpcSubscribers.GetStateBase64Name.Provider(pi, api.State), IpcSubscribers.ApplyState.Provider(pi, api.State), IpcSubscribers.ApplyStateName.Provider(pi, api.State), - IpcSubscribers.ReapplyState.Provider(pi, api.State), - IpcSubscribers.ReapplyStateName.Provider(pi, api.State), IpcSubscribers.RevertState.Provider(pi, api.State), IpcSubscribers.RevertStateName.Provider(pi, api.State), IpcSubscribers.UnlockState.Provider(pi, api.State), - IpcSubscribers.CanUnlock.Provider(pi, api.State), IpcSubscribers.UnlockStateName.Provider(pi, api.State), IpcSubscribers.DeletePlayerState.Provider(pi, api.State), IpcSubscribers.UnlockAll.Provider(pi, api.State), IpcSubscribers.RevertToAutomation.Provider(pi, api.State), IpcSubscribers.RevertToAutomationName.Provider(pi, api.State), - IpcSubscribers.AutoReloadGearChanged.Provider(pi, api.State), IpcSubscribers.StateChanged.Provider(pi, api.State), IpcSubscribers.StateChangedWithType.Provider(pi, api.State), IpcSubscribers.StateFinalized.Provider(pi, api.State), @@ -81,5 +76,3 @@ public sealed class IpcProviders : IDisposable, IApiService _disposedProvider.Dispose(); } } - - diff --git a/Glamourer/Api/StateApi.cs b/Glamourer/Api/StateApi.cs index 8914dee..3b0c2c5 100644 --- a/Glamourer/Api/StateApi.cs +++ b/Glamourer/Api/StateApi.cs @@ -20,7 +20,6 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable private readonly DesignConverter _converter; private readonly AutoDesignApplier _autoDesigns; private readonly ActorObjectManager _objects; - private readonly AutoRedrawChanged _autoRedraw; private readonly StateChanged _stateChanged; private readonly StateFinalized _stateFinalized; private readonly GPoseService _gPose; @@ -30,7 +29,6 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable DesignConverter converter, AutoDesignApplier autoDesigns, ActorObjectManager objects, - AutoRedrawChanged autoRedraw, StateChanged stateChanged, StateFinalized stateFinalized, GPoseService gPose) @@ -40,11 +38,9 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable _converter = converter; _autoDesigns = autoDesigns; _objects = objects; - _autoRedraw = autoRedraw; _stateChanged = stateChanged; _stateFinalized = stateFinalized; _gPose = gPose; - _autoRedraw.Subscribe(OnAutoRedrawChange, AutoRedrawChanged.Priority.StateApi); _stateChanged.Subscribe(OnStateChanged, Events.StateChanged.Priority.GlamourerIpc); _stateFinalized.Subscribe(OnStateFinalized, Events.StateFinalized.Priority.StateApi); _gPose.Subscribe(OnGPoseChange, GPoseService.Priority.StateApi); @@ -52,7 +48,6 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable public void Dispose() { - _autoRedraw.Unsubscribe(OnAutoRedrawChange); _stateChanged.Unsubscribe(OnStateChanged); _stateFinalized.Unsubscribe(OnStateFinalized); _gPose.Unsubscribe(OnGPoseChange); @@ -126,48 +121,6 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable return ApiHelpers.Return(GlamourerApiEc.Success, args); } - public GlamourerApiEc ReapplyState(int objectIndex, uint key, ApplyFlag flags) - { - var args = ApiHelpers.Args("Index", objectIndex, "Key", key, "Flags", flags); - if (_helpers.FindExistingState(objectIndex, out var state) != GlamourerApiEc.Success) - return ApiHelpers.Return(GlamourerApiEc.ActorNotFound, args); - - if (state == null) - return ApiHelpers.Return(GlamourerApiEc.NothingDone, args); - - if (!state.CanUnlock(key)) - return ApiHelpers.Return(GlamourerApiEc.InvalidKey, args); - - Reapply(_objects.Objects[objectIndex], state, key, flags); - return ApiHelpers.Return(GlamourerApiEc.Success, args); - } - - public GlamourerApiEc ReapplyStateName(string playerName, uint key, ApplyFlag flags) - { - var args = ApiHelpers.Args("Name", playerName, "Key", key, "Flags", flags); - var states = _helpers.FindExistingStates(playerName); - - var any = false; - var anyReapplied = false; - foreach (var state in states) - { - any = true; - if (!state.CanUnlock(key)) - continue; - - anyReapplied = true; - anyReapplied |= Reapply(state, key, flags) is GlamourerApiEc.Success; - } - - if (any) - ApiHelpers.Return(GlamourerApiEc.NothingDone, args); - - if (!anyReapplied) - return ApiHelpers.Return(GlamourerApiEc.InvalidKey, args); - - return ApiHelpers.Return(GlamourerApiEc.Success, args); - } - public GlamourerApiEc RevertState(int objectIndex, uint key, ApplyFlag flags) { var args = ApiHelpers.Args("Index", objectIndex, "Key", key, "Flags", flags); @@ -225,20 +178,6 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable return ApiHelpers.Return(GlamourerApiEc.Success, args); } - public GlamourerApiEc CanUnlock(int objectIndex, uint key, out bool isLocked, out bool canUnlock) - { - var args = ApiHelpers.Args("Index", objectIndex, "Key", key); - isLocked = false; // These seem like reasonable defaults. - canUnlock = false; - if (_helpers.FindExistingState(objectIndex, out var state) != GlamourerApiEc.Success) - return ApiHelpers.Return(GlamourerApiEc.ActorNotFound, args); - if (state == null) - return ApiHelpers.Return(GlamourerApiEc.InvalidState, args); // Possibly, the error type could be changed. I just looked at what was available. - isLocked = state.IsLocked; - canUnlock = state.CanUnlock(key); - return ApiHelpers.Return(GlamourerApiEc.Success, args); - } - public GlamourerApiEc UnlockStateName(string playerName, uint key) { var args = ApiHelpers.Args("Name", playerName, "Key", key); @@ -331,7 +270,6 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable return ApiHelpers.Return(GlamourerApiEc.Success, args); } - public event Action? AutoReloadGearChanged; public event Action? StateChanged; public event Action? StateChangedWithType; public event Action? StateFinalized; @@ -346,24 +284,6 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable ApiHelpers.Lock(state, key, flags); } - private GlamourerApiEc Reapply(ActorState state, uint key, ApplyFlag flags) - { - if (!_objects.TryGetValue(state.Identifier, out var actors) || !actors.Valid) - return GlamourerApiEc.ActorNotFound; - - foreach (var actor in actors.Objects) - Reapply(actor, state, key, flags); - - return GlamourerApiEc.Success; - } - - private void Reapply(Actor actor, ActorState state, uint key, ApplyFlag flags) - { - var source = (flags & ApplyFlag.Once) != 0 ? StateSource.IpcManual : StateSource.IpcFixed; - _stateManager.ReapplyState(actor, state, false, source, true); - ApiHelpers.Lock(state, key, flags); - } - private void Revert(ActorState state, uint key, ApplyFlag flags) { var source = (flags & ApplyFlag.Once) != 0 ? StateSource.IpcManual : StateSource.IpcFixed; @@ -424,8 +344,8 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable }; } - private void OnAutoRedrawChange(bool autoReload) - => AutoReloadGearChanged?.Invoke(autoReload); + private void OnGPoseChange(bool gPose) + => GPoseChanged?.Invoke(gPose); private void OnStateChanged(StateChangeType type, StateSource _2, ActorState _3, ActorData actors, ITransaction? _5) { @@ -446,7 +366,4 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable foreach (var actor in actors.Objects) StateFinalized.Invoke(actor.Address, type); } - - private void OnGPoseChange(bool gPose) - => GPoseChanged?.Invoke(gPose); } diff --git a/Glamourer/Events/AutoRedrawChanged.cs b/Glamourer/Events/AutoRedrawChanged.cs deleted file mode 100644 index a8dd03a..0000000 --- a/Glamourer/Events/AutoRedrawChanged.cs +++ /dev/null @@ -1,16 +0,0 @@ -using OtterGui.Classes; - -namespace Glamourer.Events; - -/// -/// Triggered when the auto-reload gear setting is changed in glamourer configuration. -/// -public sealed class AutoRedrawChanged() - : EventWrapper(nameof(AutoRedrawChanged)) -{ - public enum Priority - { - /// - StateApi = int.MinValue, - } -} \ No newline at end of file diff --git a/Glamourer/Gui/Tabs/DebugTab/IpcTester/IpcTesterHelpers.cs b/Glamourer/Gui/Tabs/DebugTab/IpcTester/IpcTesterHelpers.cs index 61dad53..dbcb30c 100644 --- a/Glamourer/Gui/Tabs/DebugTab/IpcTester/IpcTesterHelpers.cs +++ b/Glamourer/Gui/Tabs/DebugTab/IpcTester/IpcTesterHelpers.cs @@ -1,5 +1,8 @@ using Glamourer.Api.Enums; +using Glamourer.Designs; using Dalamud.Bindings.ImGui; +using OtterGui; +using static Penumbra.GameData.Files.ShpkFile; namespace Glamourer.Gui.Tabs.DebugTab.IpcTester; diff --git a/Glamourer/Gui/Tabs/DebugTab/IpcTester/IpcTesterPanel.cs b/Glamourer/Gui/Tabs/DebugTab/IpcTester/IpcTesterPanel.cs index 22c7597..f4e6925 100644 --- a/Glamourer/Gui/Tabs/DebugTab/IpcTester/IpcTesterPanel.cs +++ b/Glamourer/Gui/Tabs/DebugTab/IpcTester/IpcTesterPanel.cs @@ -33,11 +33,6 @@ public class IpcTesterPanel( ImGui.SameLine(); ImGui.TextUnformatted($"({major}.{minor:D4})"); - ImGui.TextUnformatted(AutoReloadGearEnabled.Label); - var autoRedraw = new AutoReloadGearEnabled(pluginInterface).Invoke(); - ImGui.SameLine(); - ImGui.TextUnformatted(autoRedraw ? "Enabled" : "Disabled"); - designs.Draw(); items.Draw(); state.Draw(); @@ -54,7 +49,6 @@ public class IpcTesterPanel( return; Glamourer.Log.Debug("[IPCTester] Subscribed to IPC events for IPC tester."); - state.AutoRedrawChanged.Enable(); state.GPoseChanged.Enable(); state.StateChanged.Enable(); state.StateFinalized.Enable(); @@ -78,7 +72,6 @@ public class IpcTesterPanel( Glamourer.Log.Debug("[IPCTester] Unsubscribed from IPC events for IPC tester."); _subscribed = false; - state.AutoRedrawChanged.Disable(); state.GPoseChanged.Disable(); state.StateChanged.Disable(); state.StateFinalized.Disable(); diff --git a/Glamourer/Gui/Tabs/DebugTab/IpcTester/StateIpcTester.cs b/Glamourer/Gui/Tabs/DebugTab/IpcTester/StateIpcTester.cs index 6fb9d68..e97d337 100644 --- a/Glamourer/Gui/Tabs/DebugTab/IpcTester/StateIpcTester.cs +++ b/Glamourer/Gui/Tabs/DebugTab/IpcTester/StateIpcTester.cs @@ -1,11 +1,11 @@ -using Dalamud.Bindings.ImGui; -using Dalamud.Interface; +using Dalamud.Interface; using Dalamud.Interface.Utility; using Dalamud.Plugin; using Glamourer.Api.Enums; using Glamourer.Api.Helpers; using Glamourer.Api.IpcSubscribers; using Glamourer.Designs; +using Dalamud.Bindings.ImGui; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using OtterGui; @@ -31,10 +31,6 @@ public class StateIpcTester : IUiService, IDisposable private string _base64State = string.Empty; private string? _getStateString; - public readonly EventSubscriber AutoRedrawChanged; - private bool _lastAutoRedrawChangeValue; - private DateTime _lastAutoRedrawChangeTime; - public readonly EventSubscriber StateChanged; private nint _lastStateChangeActor; private ByteString _lastStateChangeName = ByteString.Empty; @@ -55,12 +51,10 @@ public class StateIpcTester : IUiService, IDisposable public StateIpcTester(IDalamudPluginInterface pluginInterface) { - _pluginInterface = pluginInterface; - AutoRedrawChanged = AutoReloadGearChanged.Subscriber(_pluginInterface, OnAutoRedrawChanged); - StateChanged = StateChangedWithType.Subscriber(_pluginInterface, OnStateChanged); - StateFinalized = Api.IpcSubscribers.StateFinalized.Subscriber(_pluginInterface, OnStateFinalized); - GPoseChanged = Api.IpcSubscribers.GPoseChanged.Subscriber(_pluginInterface, OnGPoseChange); - AutoRedrawChanged.Disable(); + _pluginInterface = pluginInterface; + StateChanged = StateChangedWithType.Subscriber(_pluginInterface, OnStateChanged); + StateFinalized = Api.IpcSubscribers.StateFinalized.Subscriber(_pluginInterface, OnStateFinalized); + GPoseChanged = Api.IpcSubscribers.GPoseChanged.Subscriber(_pluginInterface, OnGPoseChange); StateChanged.Disable(); StateFinalized.Disable(); GPoseChanged.Disable(); @@ -68,7 +62,6 @@ public class StateIpcTester : IUiService, IDisposable public void Dispose() { - AutoRedrawChanged.Dispose(); StateChanged.Dispose(); StateFinalized.Dispose(); GPoseChanged.Dispose(); @@ -90,8 +83,6 @@ public class StateIpcTester : IUiService, IDisposable IpcTesterHelpers.DrawIntro("Last Error"); ImGui.TextUnformatted(_lastError.ToString()); - IpcTesterHelpers.DrawIntro("Last Auto Redraw Change"); - ImGui.TextUnformatted($"{_lastAutoRedrawChangeValue} at {_lastAutoRedrawChangeTime.ToLocalTime().TimeOfDay}"); IpcTesterHelpers.DrawIntro("Last State Change"); PrintChangeName(); IpcTesterHelpers.DrawIntro("Last State Finalization"); @@ -147,14 +138,6 @@ public class StateIpcTester : IUiService, IDisposable if (ImUtf8.Button("Apply Base64##Name"u8)) _lastError = new ApplyStateName(_pluginInterface).Invoke(_base64State, _gameObjectName, _key, _flags); - IpcTesterHelpers.DrawIntro(ReapplyState.Label); - if (ImUtf8.Button("Reapply##Idx"u8)) - _lastError = new ReapplyState(_pluginInterface).Invoke(_gameObjectIndex, _key, _flags); - - IpcTesterHelpers.DrawIntro(ReapplyStateName.Label); - if (ImUtf8.Button("Reapply##Name"u8)) - _lastError = new ReapplyStateName(_pluginInterface).Invoke(_gameObjectName, _key, _flags); - IpcTesterHelpers.DrawIntro(RevertState.Label); if (ImUtf8.Button("Revert##Idx"u8)) _lastError = new RevertState(_pluginInterface).Invoke(_gameObjectIndex, _key, _flags); @@ -242,12 +225,6 @@ public class StateIpcTester : IUiService, IDisposable ImUtf8.Text($"at {_lastStateFinalizeTime.ToLocalTime().TimeOfDay}"); } - private void OnAutoRedrawChanged(bool value) - { - _lastAutoRedrawChangeValue = value; - _lastAutoRedrawChangeTime = DateTime.UtcNow; - } - private void OnStateChanged(nint actor, StateChangeType type) { _lastStateChangeActor = actor; diff --git a/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs b/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs index 82bdd54..0a84adc 100644 --- a/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs +++ b/Glamourer/Gui/Tabs/SettingsTab/SettingsTab.cs @@ -6,7 +6,6 @@ using Dalamud.Interface.Utility; using Dalamud.Plugin.Services; using Glamourer.Automation; using Glamourer.Designs; -using Glamourer.Events; using Glamourer.Gui.Tabs.DesignTab; using Glamourer.Interop; using Glamourer.Interop.PalettePlus; @@ -31,7 +30,6 @@ public class SettingsTab( CodeDrawer codeDrawer, Glamourer glamourer, AutoDesignApplier autoDesignApplier, - AutoRedrawChanged autoRedraw, PcpService pcpService) : ITab { @@ -93,11 +91,7 @@ public class SettingsTab( config.DisableFestivals == 0, v => config.DisableFestivals = v ? (byte)0 : (byte)2); Checkbox("Auto-Reload Gear"u8, "Automatically reload equipment pieces on your own character when changing any mod options in Penumbra in their associated collection."u8, - config.AutoRedrawEquipOnChanges, v => - { - config.AutoRedrawEquipOnChanges = v; - autoRedraw.Invoke(v); - }); + config.AutoRedrawEquipOnChanges, v => config.AutoRedrawEquipOnChanges = v); Checkbox("Attach to PCP-Handling"u8, "Add the actor's glamourer state when a PCP is created by Penumbra, and create a design and apply it if possible when a PCP is installed by Penumbra."u8, config.AttachToPcp, pcpService.Set);