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;
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);
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;
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;
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,
_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)
return true;
}
+ private bool ImportQuestPriority(string encodedQuestPriority)
+ {
+ List<ElementId> questElements = PriorityWindow.ParseQuestPriority(encodedQuestPriority);
+ _questController.ImportQuestPriority(questElements);
+ return true;
+ }
+
public void Dispose()
{
_startSingleQuest.UnregisterFunc();
}
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);
_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>