Leave TextAdvance active if waiting for a new quest sequence from the server
authorLiza Carvelli <liza@carvel.li>
Mon, 13 Jan 2025 17:38:53 +0000 (18:38 +0100)
committerLiza Carvelli <liza@carvel.li>
Mon, 13 Jan 2025 17:38:53 +0000 (18:38 +0100)
Questionable/External/TextAdvanceIpc.cs

index dd4fa395979d1617186a2172f1ca28c9f680a164..f840cc18f2f3880684b471586fed195d386ce138 100644 (file)
@@ -22,13 +22,16 @@ internal sealed class TextAdvanceIpc : IDisposable
     private readonly string _pluginName;
     private readonly ExternalTerritoryConfig _externalTerritoryConfig = new();
 
-    public TextAdvanceIpc(IDalamudPluginInterface pluginInterface, IFramework framework, QuestController questController, Configuration configuration)
+    public TextAdvanceIpc(IDalamudPluginInterface pluginInterface, IFramework framework,
+        QuestController questController, Configuration configuration)
     {
         _framework = framework;
         _questController = questController;
         _configuration = configuration;
         _isInExternalControl = pluginInterface.GetIpcSubscriber<bool>("TextAdvance.IsInExternalControl");
-        _enableExternalControl = pluginInterface.GetIpcSubscriber<string, ExternalTerritoryConfig, bool>("TextAdvance.EnableExternalControl");
+        _enableExternalControl =
+            pluginInterface.GetIpcSubscriber<string, ExternalTerritoryConfig, bool>(
+                "TextAdvance.EnableExternalControl");
         _disableExternalControl = pluginInterface.GetIpcSubscriber<string, bool>("TextAdvance.DisableExternalControl");
         _pluginName = pluginInterface.InternalName;
         _framework.Update += OnUpdate;
@@ -37,7 +40,7 @@ internal sealed class TextAdvanceIpc : IDisposable
     public void Dispose()
     {
         _framework.Update -= OnUpdate;
-        if(_isExternalControlActivated)
+        if (_isExternalControlActivated)
         {
             _disableExternalControl.InvokeFunc(_pluginName);
         }
@@ -45,11 +48,13 @@ internal sealed class TextAdvanceIpc : IDisposable
 
     private void OnUpdate(IFramework framework)
     {
-        if(_configuration.General.ConfigureTextAdvance && _questController.IsRunning)
+        bool hasActiveQuest = _questController.IsRunning ||
+                              _questController.AutomationType != QuestController.EAutomationType.Manual;
+        if (_configuration.General.ConfigureTextAdvance && hasActiveQuest)
         {
-            if(!_isInExternalControl.InvokeFunc())
+            if (!_isInExternalControl.InvokeFunc())
             {
-                if(_enableExternalControl.InvokeFunc(_pluginName, _externalTerritoryConfig))
+                if (_enableExternalControl.InvokeFunc(_pluginName, _externalTerritoryConfig))
                 {
                     _isExternalControlActivated = true;
                 }
@@ -57,9 +62,9 @@ internal sealed class TextAdvanceIpc : IDisposable
         }
         else
         {
-            if(_isExternalControlActivated)
+            if (_isExternalControlActivated)
             {
-                if(_disableExternalControl.InvokeFunc(_pluginName) || !_isInExternalControl.InvokeFunc())
+                if (_disableExternalControl.InvokeFunc(_pluginName) || !_isInExternalControl.InvokeFunc())
                 {
                     _isExternalControlActivated = false;
                 }