diff --git a/Questionable/External/AutoDutyIpc.cs b/Questionable/External/AutoDutyIpc.cs index 9d049062..8d9a8482 100644 --- a/Questionable/External/AutoDutyIpc.cs +++ b/Questionable/External/AutoDutyIpc.cs @@ -12,18 +12,23 @@ internal sealed class AutoDutyIpc private readonly Configuration _configuration; private readonly TerritoryData _territoryData; private readonly ILogger _logger; - private readonly ICallGateSubscriber _contentHasPath; - private readonly ICallGateSubscriber _run; + private readonly ICallGateSubscriber _contentHasPath; + private readonly ICallGateSubscriber _setConfig; + private readonly ICallGateSubscriber _run; private readonly ICallGateSubscriber _isStopped; + private readonly ICallGateSubscriber _stop; - public AutoDutyIpc(IDalamudPluginInterface pluginInterface, Configuration configuration, TerritoryData territoryData, ILogger logger) + public AutoDutyIpc(IDalamudPluginInterface pluginInterface, Configuration configuration, + TerritoryData territoryData, ILogger logger) { _configuration = configuration; _territoryData = territoryData; _logger = logger; _contentHasPath = pluginInterface.GetIpcSubscriber("AutoDuty.ContentHasPath"); + _setConfig = pluginInterface.GetIpcSubscriber("AutoDuty.SetConfig"); _run = pluginInterface.GetIpcSubscriber("AutoDuty.Run"); _isStopped = pluginInterface.GetIpcSubscriber("AutoDuty.IsStopped"); + _stop = pluginInterface.GetIpcSubscriber("AutoDuty.Stop"); } public bool IsConfiguredToRunContent(uint? cfcId, bool autoDutyEnabled) @@ -55,7 +60,8 @@ internal sealed class AutoDutyIpc } catch (IpcError e) { - _logger.LogWarning("Unable to query AutoDuty for path in territory {TerritoryType}: {Message}", cfcData.TerritoryId, e.Message); + _logger.LogWarning("Unable to query AutoDuty for path in territory {TerritoryType}: {Message}", + cfcData.TerritoryId, e.Message); return false; } } @@ -67,6 +73,7 @@ internal sealed class AutoDutyIpc try { + _setConfig.InvokeAction("dutyModeEnum", "Support"); _run.InvokeAction(cfcData.TerritoryId, 1, true); } catch (IpcError e) @@ -86,4 +93,17 @@ internal sealed class AutoDutyIpc return true; } } + + public void Stop() + { + try + { + _logger.LogInformation("Calling AutoDuty.Stop"); + _stop.InvokeAction(); + } + catch (IpcError e) + { + throw new TaskException($"Unable to stop AutoDuty: {e.Message}", e); + } + } }