using Dalamud.Plugin.Ipc;
using JetBrains.Annotations;
using Questionable.Controller;
+using Questionable.Functions;
using Questionable.Model.Questing;
using Questionable.Windows.QuestComponents;
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<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;
+ private readonly ICallGateProvider<string, bool> _isQuestLocked;
public QuestionableIpc(
QuestController questController,
EventInfoComponent eventInfoComponent,
QuestRegistry questRegistry,
+ QuestFunctions questFunctions,
IDalamudPluginInterface pluginInterface)
{
_questController = questController;
_questRegistry = questRegistry;
+ _questFunctions = questFunctions;
_isRunning = pluginInterface.GetIpcProvider<bool>(IpcIsRunning);
_isRunning.RegisterFunc(() =>
_startSingleQuest = pluginInterface.GetIpcProvider<string, bool>(IpcStartSingleQuest);
_startSingleQuest.RegisterFunc(questId => StartQuest(questId, true));
+ //_startSingleQuest.RegisterFunc((questId) => StartQuest(questController, questRegistry, questId, true));
+
+ _isQuestLocked = pluginInterface.GetIpcProvider<string, bool>(IpcIsQuestLocked);
+ _isQuestLocked.RegisterFunc((questId) => IsQuestLocked(questId));
}
private bool StartQuest(string questId, bool single)
};
}
+ 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();