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