Update Wrath IPC v4.22
authorLiza Carvelli <liza@carvel.li>
Sun, 2 Mar 2025 22:18:32 +0000 (23:18 +0100)
committerLiza Carvelli <liza@carvel.li>
Sun, 2 Mar 2025 22:19:13 +0000 (23:19 +0100)
Directory.Build.targets
Questionable/Controller/CombatModules/WrathComboModule.cs

index b053a81..0ef99fb 100644 (file)
@@ -1,5 +1,5 @@
 <Project>
     <PropertyGroup Condition="$(MSBuildProjectName) != 'GatheringPathRenderer'">
-        <Version>4.21</Version>
+        <Version>4.22</Version>
     </PropertyGroup>
 </Project>
index d956368..175fb10 100644 (file)
@@ -3,6 +3,7 @@ using Dalamud.Game.ClientState.Objects.Types;
 using Dalamud.Plugin;
 using Dalamud.Plugin.Ipc;
 using Dalamud.Plugin.Ipc.Exceptions;
+using JetBrains.Annotations;
 using Microsoft.Extensions.Logging;
 using Questionable.Controller.Steps;
 
@@ -17,8 +18,8 @@ internal sealed class WrathComboModule : ICombatModule, IDisposable
     private readonly ICallGateSubscriber<object> _test;
     private readonly ICallGateSubscriber<string, string, string, Guid?> _registerForLeaseWithCallback;
     private readonly ICallGateSubscriber<Guid, object> _releaseControl;
-    private readonly ICallGateSubscriber<Guid,bool,object> _setAutoRotationState;
-    private readonly ICallGateSubscriber<Guid,object> _setCurrentJobAutoRotationReady;
+    private readonly ICallGateSubscriber<Guid,bool,ESetResult> _setAutoRotationState;
+    private readonly ICallGateSubscriber<Guid,ESetResult> _setCurrentJobAutoRotationReady;
     private readonly ICallGateProvider<int, string, object> _callback;
 
     private Guid? _lease;
@@ -32,9 +33,9 @@ internal sealed class WrathComboModule : ICombatModule, IDisposable
         _registerForLeaseWithCallback =
             pluginInterface.GetIpcSubscriber<string, string, string, Guid?>("WrathCombo.RegisterForLeaseWithCallback");
         _releaseControl = pluginInterface.GetIpcSubscriber<Guid, object>("WrathCombo.ReleaseControl");
-        _setAutoRotationState = pluginInterface.GetIpcSubscriber<Guid, bool, object>("WrathCombo.SetAutoRotationState");
+        _setAutoRotationState = pluginInterface.GetIpcSubscriber<Guid, bool, ESetResult>("WrathCombo.SetAutoRotationState");
         _setCurrentJobAutoRotationReady =
-            pluginInterface.GetIpcSubscriber<Guid, object>("WrathCombo.SetCurrentJobAutoRotationReady");
+            pluginInterface.GetIpcSubscriber<Guid, ESetResult>("WrathCombo.SetCurrentJobAutoRotationReady");
 
         _callback = pluginInterface.GetIpcProvider<int, string, object>($"{CallbackPrefix}.WrathComboCallback");
         _callback.RegisterAction(Callback);
@@ -65,8 +66,22 @@ internal sealed class WrathComboModule : ICombatModule, IDisposable
             {
                 _logger.LogDebug("Wrath combo lease: {Lease}", _lease.Value);
 
-                _setAutoRotationState.InvokeAction(_lease.Value, true);
-                _setCurrentJobAutoRotationReady.InvokeAction(_lease.Value);
+                ESetResult autoRotationSet = _setAutoRotationState.InvokeFunc(_lease.Value, true);
+                if (!autoRotationSet.IsSuccess())
+                {
+                    _logger.LogError("Unable to set autorotation state");
+                    Stop();
+                    return false;
+                }
+
+                ESetResult currentJobSetForAutoRotation = _setCurrentJobAutoRotationReady.InvokeFunc(_lease.Value);
+                if (!currentJobSetForAutoRotation.IsSuccess())
+                {
+                    _logger.LogError("Unable to setr current job for autorotation");
+                    Stop();
+                    return false;
+                }
+
                 return true;
             }
             else
@@ -120,4 +135,27 @@ internal sealed class WrathComboModule : ICombatModule, IDisposable
         Stop();
         _callback.UnregisterAction();
     }
+
+    [PublicAPI]
+    public enum ESetResult
+    {
+        Okay = 0,
+        OkayWorking = 1,
+
+        IpcDisabled = 10,
+        InvalidLease = 11,
+        BlacklistedLease = 12,
+        Duplicate = 13,
+        PlayerNotAvailable = 14,
+        InvalidConfiguration = 15,
+        InvalidValue = 16,
+    }
+}
+
+internal static class WrathResultExtensions
+{
+    public static bool IsSuccess(this WrathComboModule.ESetResult result)
+    {
+        return result is WrathComboModule.ESetResult.Okay or WrathComboModule.ESetResult.OkayWorking;
+    }
 }