From 8ef10bafa3c05acfa291be7c999234735ae6676c Mon Sep 17 00:00:00 2001 From: pot0to <19513249+pot0to@users.noreply.github.com> Date: Thu, 27 Feb 2025 13:23:17 -0800 Subject: [PATCH] manually merged #147 - AddIsQuestLockedIPC --- Questionable/External/QuestionableIpc.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Questionable/External/QuestionableIpc.cs b/Questionable/External/QuestionableIpc.cs index ce76077c..f1095f1e 100644 --- a/Questionable/External/QuestionableIpc.cs +++ b/Questionable/External/QuestionableIpc.cs @@ -6,6 +6,7 @@ using Dalamud.Plugin; using Dalamud.Plugin.Ipc; using JetBrains.Annotations; using Questionable.Controller; +using Questionable.Functions; using Questionable.Model.Questing; using Questionable.Windows.QuestComponents; @@ -19,9 +20,11 @@ internal sealed class QuestionableIpc : IDisposable private const string IpcGetCurrentlyActiveEventQuests = "Questionable.GetCurrentlyActiveEventQuests"; private const string IpcStartQuest = "Questionable.StartQuest"; private const string IpcStartSingleQuest = "Questionable.StartSingleQuest"; + private const string IpcIsQuestLocked = "Questionable.IsQuestLocked"; private readonly QuestController _questController; private readonly QuestRegistry _questRegistry; + private readonly QuestFunctions _questFunctions; private readonly ICallGateProvider _isRunning; private readonly ICallGateProvider _getCurrentQuestId; @@ -29,15 +32,18 @@ internal sealed class QuestionableIpc : IDisposable private readonly ICallGateProvider> _getCurrentlyActiveEventQuests; private readonly ICallGateProvider _startQuest; private readonly ICallGateProvider _startSingleQuest; + private readonly ICallGateProvider _isQuestLocked; public QuestionableIpc( QuestController questController, EventInfoComponent eventInfoComponent, QuestRegistry questRegistry, + QuestFunctions questFunctions, IDalamudPluginInterface pluginInterface) { _questController = questController; _questRegistry = questRegistry; + _questFunctions = questFunctions; _isRunning = pluginInterface.GetIpcProvider(IpcIsRunning); _isRunning.RegisterFunc(() => @@ -59,6 +65,10 @@ internal sealed class QuestionableIpc : IDisposable _startSingleQuest = pluginInterface.GetIpcProvider(IpcStartSingleQuest); _startSingleQuest.RegisterFunc(questId => StartQuest(questId, true)); + //_startSingleQuest.RegisterFunc((questId) => StartQuest(questController, questRegistry, questId, true)); + + _isQuestLocked = pluginInterface.GetIpcProvider(IpcIsQuestLocked); + _isQuestLocked.RegisterFunc((questId) => IsQuestLocked(questId)); } private bool StartQuest(string questId, bool single) @@ -102,6 +112,16 @@ internal sealed class QuestionableIpc : IDisposable }; } + private bool IsQuestLocked(string questId) + { + if (ElementId.TryFromString(questId, out var elementId) && elementId != null && + _questRegistry.TryGetQuest(elementId, out var quest)) + { + return _questFunctions.IsQuestLocked(elementId); + } + return true; + } + public void Dispose() { _startSingleQuest.UnregisterFunc();