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,
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;