From c420b1f18062ce5d0c41c06126b107a576dc94ab Mon Sep 17 00:00:00 2001 From: Bracket <31086695+Bracket416@users.noreply.github.com> Date: Sun, 31 Aug 2025 23:04:41 +0100 Subject: [PATCH 1/7] Update .gitmodules --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 137c8ba..26b4730 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,5 +16,5 @@ branch = main [submodule "Glamourer.Api"] path = Glamourer.Api - url = https://github.com/Ottermandias/Glamourer.Api.git + url = https://github.com/Bracket416/Glamourer.Api branch = main From da1db70635787c00818c3468094cb02ed9f52a82 Mon Sep 17 00:00:00 2001 From: Bracket <31086695+Bracket416@users.noreply.github.com> Date: Sun, 31 Aug 2025 23:06:23 +0100 Subject: [PATCH 2/7] Update IpcProviders.cs --- Glamourer/Api/IpcProviders.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Glamourer/Api/IpcProviders.cs b/Glamourer/Api/IpcProviders.cs index 2701f18..1dc1cc8 100644 --- a/Glamourer/Api/IpcProviders.cs +++ b/Glamourer/Api/IpcProviders.cs @@ -53,6 +53,7 @@ public sealed class IpcProviders : IDisposable, IApiService IpcSubscribers.RevertState.Provider(pi, api.State), IpcSubscribers.RevertStateName.Provider(pi, api.State), IpcSubscribers.UnlockState.Provider(pi, api.State), + IpcSubscribers.IsUnlocked.Provider(pi, api.State), IpcSubscribers.UnlockStateName.Provider(pi, api.State), IpcSubscribers.UnlockAll.Provider(pi, api.State), IpcSubscribers.RevertToAutomation.Provider(pi, api.State), @@ -75,3 +76,4 @@ public sealed class IpcProviders : IDisposable, IApiService _disposedProvider.Dispose(); } } + From c31f6c19a604e40f178ba20985333982f3637faa Mon Sep 17 00:00:00 2001 From: Bracket <31086695+Bracket416@users.noreply.github.com> Date: Sun, 31 Aug 2025 23:06:54 +0100 Subject: [PATCH 3/7] Update StateApi.cs --- Glamourer/Api/StateApi.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Glamourer/Api/StateApi.cs b/Glamourer/Api/StateApi.cs index 68c593b..f7e2de1 100644 --- a/Glamourer/Api/StateApi.cs +++ b/Glamourer/Api/StateApi.cs @@ -180,6 +180,16 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable return ApiHelpers.Return(GlamourerApiEc.Success, args); } + public (GlamourerApiEc, bool?) IsUnlocked(int objectIndex, uint key) + { + var args = ApiHelpers.Args("Index", objectIndex, "Key", key); + if (_helpers.FindExistingState(objectIndex, out var state) != GlamourerApiEc.Success) + return (ApiHelpers.Return(GlamourerApiEc.ActorNotFound, args), null); + if (state == null) + return (ApiHelpers.Return(GlamourerApiEc.InvalidState, args), null); // Possibly, the error type could be changed. I just looked at what was available. + return (ApiHelpers.Return(GlamourerApiEc.Success, args), state.CanUnlock(key)); + } + public GlamourerApiEc UnlockStateName(string playerName, uint key) { var args = ApiHelpers.Args("Name", playerName, "Key", key); From 6a34d41f6ad37a33c10340be6ca92d5ed894d4fb Mon Sep 17 00:00:00 2001 From: Bracket <31086695+Bracket416@users.noreply.github.com> Date: Mon, 1 Sep 2025 11:27:11 +0100 Subject: [PATCH 4/7] Update .gitmodules --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 26b4730..49b25bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,5 +16,5 @@ branch = main [submodule "Glamourer.Api"] path = Glamourer.Api - url = https://github.com/Bracket416/Glamourer.Api + url = https://github.com/Ottermandias/Glamourer.Api branch = main From c62c3c4eea6d1ddee5f908ef0444ceffddfbafaf Mon Sep 17 00:00:00 2001 From: Bracket <31086695+Bracket416@users.noreply.github.com> Date: Mon, 1 Sep 2025 11:27:35 +0100 Subject: [PATCH 5/7] Update .gitmodules --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 49b25bb..137c8ba 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,5 +16,5 @@ branch = main [submodule "Glamourer.Api"] path = Glamourer.Api - url = https://github.com/Ottermandias/Glamourer.Api + url = https://github.com/Ottermandias/Glamourer.Api.git branch = main From 0442fb7b607287abc39fbf5510dcead05e85aa29 Mon Sep 17 00:00:00 2001 From: Bracket <31086695+Bracket416@users.noreply.github.com> Date: Tue, 2 Sep 2025 02:02:08 +0100 Subject: [PATCH 6/7] Update IpcProviders.cs --- Glamourer/Api/IpcProviders.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Glamourer/Api/IpcProviders.cs b/Glamourer/Api/IpcProviders.cs index 1dc1cc8..9be723c 100644 --- a/Glamourer/Api/IpcProviders.cs +++ b/Glamourer/Api/IpcProviders.cs @@ -53,7 +53,7 @@ public sealed class IpcProviders : IDisposable, IApiService IpcSubscribers.RevertState.Provider(pi, api.State), IpcSubscribers.RevertStateName.Provider(pi, api.State), IpcSubscribers.UnlockState.Provider(pi, api.State), - IpcSubscribers.IsUnlocked.Provider(pi, api.State), + IpcSubscribers.CanUnlock.Provider(pi, api.State), IpcSubscribers.UnlockStateName.Provider(pi, api.State), IpcSubscribers.UnlockAll.Provider(pi, api.State), IpcSubscribers.RevertToAutomation.Provider(pi, api.State), @@ -77,3 +77,4 @@ public sealed class IpcProviders : IDisposable, IApiService } } + From 8f362c5121f645cd5120e8e3c5a40787b99730ed Mon Sep 17 00:00:00 2001 From: Bracket <31086695+Bracket416@users.noreply.github.com> Date: Tue, 2 Sep 2025 02:02:52 +0100 Subject: [PATCH 7/7] Update StateApi.cs --- Glamourer/Api/StateApi.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Glamourer/Api/StateApi.cs b/Glamourer/Api/StateApi.cs index f7e2de1..97d7fcc 100644 --- a/Glamourer/Api/StateApi.cs +++ b/Glamourer/Api/StateApi.cs @@ -180,14 +180,18 @@ public sealed class StateApi : IGlamourerApiState, IApiService, IDisposable return ApiHelpers.Return(GlamourerApiEc.Success, args); } - public (GlamourerApiEc, bool?) IsUnlocked(int objectIndex, uint key) + 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), null); + return ApiHelpers.Return(GlamourerApiEc.ActorNotFound, args); if (state == null) - return (ApiHelpers.Return(GlamourerApiEc.InvalidState, args), null); // Possibly, the error type could be changed. I just looked at what was available. - return (ApiHelpers.Return(GlamourerApiEc.Success, args), state.CanUnlock(key)); + 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)