add startsinglequest too
authorJackson <9527380+Jaksuhn@users.noreply.github.com>
Wed, 5 Feb 2025 23:28:34 +0000 (00:28 +0100)
committerJackson <9527380+Jaksuhn@users.noreply.github.com>
Wed, 5 Feb 2025 23:28:34 +0000 (00:28 +0100)
this is probably more useful for my usecases anyway after a bit of testing

Questionable/External/QuestionableIpc.cs

index a48d20b6b33a3431a0f5c2b68814e0049e22cd78..2b80d66a80352bf70b478123a11bdc204d72c703 100644 (file)
@@ -15,11 +15,13 @@ internal sealed class QuestionableIpc : IDisposable
     private const string IpcGetCurrentQuestId = "Questionable.GetCurrentQuestId";
     private const string IpcGetCurrentlyActiveEventQuests = "Questionable.GetCurrentlyActiveEventQuests";
     private const string IpcStartQuest = "Questionable.StartQuest";
+    private const string IpcStartSingleQuest = "Questionable.StartSingleQuest";
 
     private readonly ICallGateProvider<bool> _isRunning;
     private readonly ICallGateProvider<string?> _getCurrentQuestId;
     private readonly ICallGateProvider<List<string>> _getCurrentlyActiveEventQuests;
     private readonly ICallGateProvider<string, bool> _startQuest;
+    private readonly ICallGateProvider<string, bool> _startSingleQuest;
 
     public QuestionableIpc(
         QuestController questController,
@@ -39,15 +41,21 @@ internal sealed class QuestionableIpc : IDisposable
             eventInfoComponent.GetCurrentlyActiveEventQuests().Select(q => q.ToString()).ToList());
 
         _startQuest = pluginInterface.GetIpcProvider<string, bool>(IpcStartQuest);
-        _startQuest.RegisterFunc((string questId) => StartQuest(questController, questRegistry, questId));
+        _startQuest.RegisterFunc((string questId) => StartQuest(questController, questRegistry, questId, false));
+
+        _startSingleQuest = pluginInterface.GetIpcProvider<string, bool>(IpcStartSingleQuest);
+        _startSingleQuest.RegisterFunc((string questId) => StartQuest(questController, questRegistry, questId, true));
     }
 
-    private static bool StartQuest(QuestController qc, QuestRegistry qr, string questId)
+    private static bool StartQuest(QuestController qc, QuestRegistry qr, string questId, bool single)
     {
         if (ElementId.TryFromString(questId, out var elementId) && elementId != null && qr.TryGetQuest(elementId, out var quest))
         {
             qc.SetNextQuest(quest);
-            qc.Start("IPCQuestSelection");
+            if (single)
+                qc.StartSingleQuest("IPCQuestSelection");
+            else
+                qc.Start("IPCQuestSelection");
             return true;
         }
         return false;