100 lines
2.8 KiB
C#
100 lines
2.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Numerics;
|
|
using System.Text;
|
|
using Dalamud.Bindings.ImGui;
|
|
using Dalamud.Interface.Utility.Raii;
|
|
using Dalamud.Interface.Windowing;
|
|
using Dalamud.Plugin;
|
|
using Dalamud.Plugin.Services;
|
|
using LLib.ImGui;
|
|
using Questionable.Controller;
|
|
using Questionable.Functions;
|
|
using Questionable.Model.Questing;
|
|
using Questionable.Windows.QuestComponents;
|
|
using Questionable.Windows.Utils;
|
|
|
|
namespace Questionable.Windows;
|
|
|
|
internal sealed class PriorityWindow : LWindow
|
|
{
|
|
public const string ClipboardPrefix = "qst:priority:";
|
|
|
|
public const string LegacyClipboardPrefix = "qst:v1:";
|
|
|
|
public const char ClipboardSeparator = ';';
|
|
|
|
private readonly ManualPriorityComponent _manualPriorityComponent;
|
|
|
|
private readonly PresetBuilderComponent _presetBuilderComponent;
|
|
|
|
public PriorityWindow(QuestController questController, QuestFunctions questFunctions, QuestSelector questSelector, QuestTooltipComponent questTooltipComponent, PresetBuilderComponent presetBuilderComponent, UiUtils uiUtils, IChatGui chatGui, IDalamudPluginInterface pluginInterface)
|
|
: base("Quest Priority###QuestionableQuestPriority")
|
|
{
|
|
_manualPriorityComponent = new ManualPriorityComponent(questController, questFunctions, questSelector, questTooltipComponent, uiUtils, chatGui, pluginInterface);
|
|
_presetBuilderComponent = presetBuilderComponent;
|
|
base.Size = new Vector2(500f, 500f);
|
|
base.SizeCondition = ImGuiCond.Once;
|
|
base.SizeConstraints = new WindowSizeConstraints
|
|
{
|
|
MinimumSize = new Vector2(615f, 500f),
|
|
MaximumSize = new Vector2(800f, 1000f)
|
|
};
|
|
}
|
|
|
|
public override void DrawContent()
|
|
{
|
|
using ImRaii.IEndObject endObject = ImRaii.TabBar("PriorityTabs");
|
|
if (!endObject)
|
|
{
|
|
return;
|
|
}
|
|
using (ImRaii.IEndObject endObject2 = ImRaii.TabItem("Manual Priority"))
|
|
{
|
|
if (endObject2)
|
|
{
|
|
_manualPriorityComponent.Draw();
|
|
}
|
|
}
|
|
using ImRaii.IEndObject endObject3 = ImRaii.TabItem("Quest Presets");
|
|
if (endObject3)
|
|
{
|
|
_presetBuilderComponent.Draw();
|
|
}
|
|
}
|
|
|
|
public static List<ElementId> DecodeQuestPriority(string clipboardText)
|
|
{
|
|
List<ElementId> list = new List<ElementId>();
|
|
try
|
|
{
|
|
if (!string.IsNullOrEmpty(clipboardText))
|
|
{
|
|
string text = null;
|
|
if (clipboardText.StartsWith("qst:priority:", StringComparison.InvariantCulture))
|
|
{
|
|
text = "qst:priority:";
|
|
}
|
|
else if (clipboardText.StartsWith("qst:v1:", StringComparison.InvariantCulture))
|
|
{
|
|
text = "qst:v1:";
|
|
}
|
|
if (text != null)
|
|
{
|
|
clipboardText = clipboardText.Substring(text.Length);
|
|
string[] array = Encoding.UTF8.GetString(Convert.FromBase64String(clipboardText)).Split(';');
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
ElementId item = ElementId.FromString(array[i]);
|
|
list.Add(item);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
list.Clear();
|
|
}
|
|
return list;
|
|
}
|
|
}
|