forked from liza/Questionable
added quest piriority ipc
This commit is contained in:
parent
3297b7009c
commit
8a8034de94
@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Dalamud.Game.ClientState.Conditions;
|
||||
using Dalamud.Game.ClientState.Keys;
|
||||
using Dalamud.Game.Gui.Toast;
|
||||
@ -819,6 +820,15 @@ internal sealed class QuestController : MiniTaskController<QuestController>
|
||||
return false;
|
||||
}
|
||||
|
||||
public void ImportQuestPriority(List<ElementId> questElements)
|
||||
{
|
||||
foreach (ElementId elementId in questElements)
|
||||
{
|
||||
if (_questRegistry.TryGetQuest(elementId, out Quest? quest) && !ManualPriorityQuests.Contains(quest))
|
||||
ManualPriorityQuests.Add(quest);
|
||||
}
|
||||
}
|
||||
|
||||
public bool WasLastTaskUpdateWithin(TimeSpan timeSpan)
|
||||
{
|
||||
_logger.LogInformation("Last update: {Update}", _lastTaskUpdate);
|
||||
|
14
Questionable/External/QuestionableIpc.cs
vendored
14
Questionable/External/QuestionableIpc.cs
vendored
@ -2,12 +2,14 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Reflection.Metadata;
|
||||
using Dalamud.Plugin;
|
||||
using Dalamud.Plugin.Ipc;
|
||||
using JetBrains.Annotations;
|
||||
using Questionable.Controller;
|
||||
using Questionable.Functions;
|
||||
using Questionable.Model.Questing;
|
||||
using Questionable.Windows;
|
||||
using Questionable.Windows.QuestComponents;
|
||||
|
||||
namespace Questionable.External;
|
||||
@ -21,6 +23,7 @@ internal sealed class QuestionableIpc : IDisposable
|
||||
private const string IpcStartQuest = "Questionable.StartQuest";
|
||||
private const string IpcStartSingleQuest = "Questionable.StartSingleQuest";
|
||||
private const string IpcIsQuestLocked = "Questionable.IsQuestLocked";
|
||||
private const string IpcImportQuestPriority = "Questionable.ImportQuestPriority";
|
||||
|
||||
private readonly QuestController _questController;
|
||||
private readonly QuestRegistry _questRegistry;
|
||||
@ -33,6 +36,7 @@ internal sealed class QuestionableIpc : IDisposable
|
||||
private readonly ICallGateProvider<string, bool> _startQuest;
|
||||
private readonly ICallGateProvider<string, bool> _startSingleQuest;
|
||||
private readonly ICallGateProvider<string, bool> _isQuestLocked;
|
||||
private readonly ICallGateProvider<string, bool> _importQuestPriority;
|
||||
|
||||
public QuestionableIpc(
|
||||
QuestController questController,
|
||||
@ -69,6 +73,9 @@ internal sealed class QuestionableIpc : IDisposable
|
||||
|
||||
_isQuestLocked = pluginInterface.GetIpcProvider<string, bool>(IpcIsQuestLocked);
|
||||
_isQuestLocked.RegisterFunc((questId) => IsQuestLocked(questId));
|
||||
|
||||
_importQuestPriority = pluginInterface.GetIpcProvider<string, bool>(IpcImportQuestPriority);
|
||||
_importQuestPriority.RegisterFunc((encodedQuestPriority) => ImportQuestPriority(encodedQuestPriority));
|
||||
}
|
||||
|
||||
private bool StartQuest(string questId, bool single)
|
||||
@ -122,6 +129,13 @@ internal sealed class QuestionableIpc : IDisposable
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool ImportQuestPriority(string encodedQuestPriority)
|
||||
{
|
||||
List<ElementId> questElements = PriorityWindow.ParseQuestPriority(encodedQuestPriority);
|
||||
_questController.ImportQuestPriority(questElements);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_startSingleQuest.UnregisterFunc();
|
||||
|
@ -249,11 +249,16 @@ internal sealed class PriorityWindow : LWindow
|
||||
}
|
||||
|
||||
private List<ElementId> ParseClipboardItems()
|
||||
{
|
||||
string? clipboardText = GetClipboardText();
|
||||
return ParseQuestPriority(clipboardText);
|
||||
}
|
||||
|
||||
public static List<ElementId> ParseQuestPriority(string? clipboardText)
|
||||
{
|
||||
List<ElementId> clipboardItems = new List<ElementId>();
|
||||
try
|
||||
{
|
||||
string? clipboardText = GetClipboardText();
|
||||
if (clipboardText != null && clipboardText.StartsWith(ClipboardPrefix, StringComparison.InvariantCulture))
|
||||
{
|
||||
clipboardText = clipboardText.Substring(ClipboardPrefix.Length);
|
||||
@ -281,14 +286,9 @@ internal sealed class PriorityWindow : LWindow
|
||||
_chatGui.Print("Copied quests to clipboard.", CommandHandler.MessageTag, CommandHandler.TagColor);
|
||||
}
|
||||
|
||||
private void ImportFromClipboard(List<ElementId> clipboardItems)
|
||||
private void ImportFromClipboard(List<ElementId> questElements)
|
||||
{
|
||||
foreach (ElementId elementId in clipboardItems)
|
||||
{
|
||||
if (_questRegistry.TryGetQuest(elementId, out Quest? quest) &&
|
||||
!_questController.ManualPriorityQuests.Contains(quest))
|
||||
_questController.ManualPriorityQuests.Add(quest);
|
||||
}
|
||||
_questController.ImportQuestPriority(questElements);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Loading…
x
Reference in New Issue
Block a user