Add IPC to get currently active seasonal event quests
This commit is contained in:
parent
3b80b3fe93
commit
2b4159d3d6
16
Questionable/External/QuestionableIpc.cs
vendored
16
Questionable/External/QuestionableIpc.cs
vendored
@ -1,7 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using Dalamud.Plugin;
|
using Dalamud.Plugin;
|
||||||
using Dalamud.Plugin.Ipc;
|
using Dalamud.Plugin.Ipc;
|
||||||
using Questionable.Controller;
|
using Questionable.Controller;
|
||||||
|
using Questionable.Windows.QuestComponents;
|
||||||
|
|
||||||
namespace Questionable.External;
|
namespace Questionable.External;
|
||||||
|
|
||||||
@ -9,11 +12,16 @@ internal sealed class QuestionableIpc : IDisposable
|
|||||||
{
|
{
|
||||||
private const string IpcIsRunning = "Questionable.IsRunning";
|
private const string IpcIsRunning = "Questionable.IsRunning";
|
||||||
private const string IpcGetCurrentQuestId = "Questionable.GetCurrentQuestId";
|
private const string IpcGetCurrentQuestId = "Questionable.GetCurrentQuestId";
|
||||||
|
private const string IpcGetCurrentlyActiveEventQuests = "Questionable.GetCurrentlyActiveEventQuests";
|
||||||
|
|
||||||
private readonly ICallGateProvider<bool> _isRunning;
|
private readonly ICallGateProvider<bool> _isRunning;
|
||||||
private readonly ICallGateProvider<string?> _getCurrentQuestId;
|
private readonly ICallGateProvider<string?> _getCurrentQuestId;
|
||||||
|
private readonly ICallGateProvider<List<string>> _getCurrentlyActiveEventQuests;
|
||||||
|
|
||||||
public QuestionableIpc(QuestController questController, IDalamudPluginInterface pluginInterface)
|
public QuestionableIpc(
|
||||||
|
QuestController questController,
|
||||||
|
EventInfoComponent eventInfoComponent,
|
||||||
|
IDalamudPluginInterface pluginInterface)
|
||||||
{
|
{
|
||||||
_isRunning = pluginInterface.GetIpcProvider<bool>(IpcIsRunning);
|
_isRunning = pluginInterface.GetIpcProvider<bool>(IpcIsRunning);
|
||||||
_isRunning.RegisterFunc(() =>
|
_isRunning.RegisterFunc(() =>
|
||||||
@ -21,11 +29,17 @@ internal sealed class QuestionableIpc : IDisposable
|
|||||||
|
|
||||||
_getCurrentQuestId = pluginInterface.GetIpcProvider<string?>(IpcGetCurrentQuestId);
|
_getCurrentQuestId = pluginInterface.GetIpcProvider<string?>(IpcGetCurrentQuestId);
|
||||||
_getCurrentQuestId.RegisterFunc(() => questController.CurrentQuest?.Quest.Id.ToString());
|
_getCurrentQuestId.RegisterFunc(() => questController.CurrentQuest?.Quest.Id.ToString());
|
||||||
|
|
||||||
|
_getCurrentlyActiveEventQuests =
|
||||||
|
pluginInterface.GetIpcProvider<List<string>>(IpcGetCurrentlyActiveEventQuests);
|
||||||
|
_getCurrentlyActiveEventQuests.RegisterFunc(() =>
|
||||||
|
eventInfoComponent.GetCurrentlyActiveEventQuests().Select(q => q.ToString()).ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
_getCurrentlyActiveEventQuests.UnregisterFunc();
|
||||||
_getCurrentQuestId.UnregisterFunc();
|
_getCurrentQuestId.UnregisterFunc();
|
||||||
_isRunning.UnregisterFunc();
|
_isRunning.UnregisterFunc();
|
||||||
}
|
}
|
||||||
|
@ -136,5 +136,12 @@ internal sealed class EventInfoComponent
|
|||||||
return !eventQuest.QuestIds.All(x => _questFunctions.IsQuestComplete(x));
|
return !eventQuest.QuestIds.All(x => _questFunctions.IsQuestComplete(x));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<QuestId> GetCurrentlyActiveEventQuests()
|
||||||
|
{
|
||||||
|
return _eventQuests
|
||||||
|
.Where(x => x.EndsAtUtc <= DateTime.UtcNow)
|
||||||
|
.SelectMany(x => x.QuestIds);
|
||||||
|
}
|
||||||
|
|
||||||
private sealed record EventQuest(string Name, List<QuestId> QuestIds, DateTime EndsAtUtc);
|
private sealed record EventQuest(string Name, List<QuestId> QuestIds, DateTime EndsAtUtc);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user