From 48cc37dd05f0ed6f79c3997dea21ac9edb0c50de Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Sat, 8 Feb 2025 00:21:18 +0100 Subject: [PATCH] Stop AD when questionable is currently running an AD dungeon/trial --- Questionable/Controller/QuestController.cs | 3 +++ Questionable/Controller/Steps/Interactions/Duty.cs | 8 ++++++-- Questionable/Controller/Steps/TaskExecutor.cs | 5 +++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Questionable/Controller/QuestController.cs b/Questionable/Controller/QuestController.cs index def1c297..331b1d61 100644 --- a/Questionable/Controller/QuestController.cs +++ b/Questionable/Controller/QuestController.cs @@ -473,6 +473,9 @@ internal sealed class QuestController : MiniTaskController private void ClearTasksInternal() { //_logger.LogDebug("Clearing task (internally)"); + if (_taskQueue.CurrentTaskExecutor is IStoppableTaskExecutor stoppableTaskExecutor) + stoppableTaskExecutor.StopNow(); + _taskQueue.Reset(); _yesAlreadyIpc.RestoreYesAlready(); diff --git a/Questionable/Controller/Steps/Interactions/Duty.cs b/Questionable/Controller/Steps/Interactions/Duty.cs index b59f8ce7..f40c4671 100644 --- a/Questionable/Controller/Steps/Interactions/Duty.cs +++ b/Questionable/Controller/Steps/Interactions/Duty.cs @@ -49,7 +49,7 @@ internal static class Duty TerritoryData territoryData, IClientState clientState, IChatGui chatGui, - SendNotification.Executor sendNotificationExecutor) : TaskExecutor + SendNotification.Executor sendNotificationExecutor) : TaskExecutor, IStoppableTaskExecutor { protected override bool Start() { @@ -94,6 +94,8 @@ internal static class Duty : ETaskResult.StillRunning; } + public void StopNow() => autoDutyIpc.Stop(); + public override bool ShouldInterruptOnDamage() => false; } @@ -105,7 +107,7 @@ internal static class Duty internal sealed class WaitAutoDutyExecutor( AutoDutyIpc autoDutyIpc, TerritoryData territoryData, - IClientState clientState) : TaskExecutor + IClientState clientState) : TaskExecutor, IStoppableTaskExecutor { protected override bool Start() => true; @@ -120,6 +122,8 @@ internal static class Duty : ETaskResult.StillRunning; } + public void StopNow() => autoDutyIpc.Stop(); + public override bool ShouldInterruptOnDamage() => false; } diff --git a/Questionable/Controller/Steps/TaskExecutor.cs b/Questionable/Controller/Steps/TaskExecutor.cs index 30e10b64..d96dce2f 100644 --- a/Questionable/Controller/Steps/TaskExecutor.cs +++ b/Questionable/Controller/Steps/TaskExecutor.cs @@ -25,6 +25,11 @@ internal interface IExtraTaskCreator : ITaskExecutor IEnumerable CreateExtraTasks(); } +internal interface IStoppableTaskExecutor : ITaskExecutor +{ + void StopNow(); +} + internal abstract class TaskExecutor : ITaskExecutor where T : class, ITask {