qstbak/Questionable/Questionable.Windows/QuestSequenceWindow.cs
2025-11-17 11:31:27 +10:00

84 lines
2.6 KiB
C#

using System.Numerics;
using Dalamud.Bindings.ImGui;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using Dalamud.Plugin;
using LLib.ImGui;
using Questionable.Windows.QuestComponents;
namespace Questionable.Windows;
internal sealed class QuestSequenceWindow : LWindow, IPersistableWindowConfig
{
private readonly IDalamudPluginInterface _pluginInterface;
private readonly Configuration _configuration;
private readonly QuestSequenceComponent _questSequenceComponent;
public WindowConfig WindowConfig => _configuration.QuestSequenceWindowConfig;
public QuestSequenceWindow(IDalamudPluginInterface pluginInterface, Configuration configuration, QuestSequenceComponent questSequenceComponent)
: base("Quest Sequence Viewer###QuestionableQuestSequenceViewer", ImGuiWindowFlags.NoTitleBar)
{
_pluginInterface = pluginInterface;
_configuration = configuration;
_questSequenceComponent = questSequenceComponent;
base.Size = new Vector2(950f, 700f);
base.SizeCondition = ImGuiCond.FirstUseEver;
base.SizeConstraints = new WindowSizeConstraints
{
MinimumSize = new Vector2(750f, 550f),
MaximumSize = new Vector2(float.MaxValue, float.MaxValue)
};
}
public void SaveWindowConfig()
{
_pluginInterface.SavePluginConfig(_configuration);
}
public override void DrawContent()
{
bool isOpen = base.IsOpen;
QuestSequenceComponent.DrawCustomHeader(ref isOpen);
base.IsOpen = isOpen;
ImGui.Spacing();
ImGui.Spacing();
using (ImRaii.PushColor(ImGuiCol.Tab, new Vector4(0.15f, 0.13f, 0.2f, 0.7f)))
{
using (ImRaii.PushColor(ImGuiCol.TabHovered, new Vector4(0.35f, 0.3f, 0.45f, 0.9f)))
{
using (ImRaii.PushColor(ImGuiCol.TabActive, new Vector4(0.28f, 0.24f, 0.35f, 1f)))
{
using (ImRaii.PushColor(ImGuiCol.TabUnfocused, new Vector4(0.13f, 0.11f, 0.18f, 0.6f)))
{
using (ImRaii.PushColor(ImGuiCol.TabUnfocusedActive, new Vector4(0.25f, 0.22f, 0.3f, 0.95f)))
{
using ImRaii.IEndObject endObject = ImRaii.TabBar("QuestSequenceTabs", ImGuiTabBarFlags.None);
if (!endObject)
{
return;
}
using (ImRaii.IEndObject endObject2 = ImRaii.TabItem("Current Quest"))
{
if (endObject2)
{
ImGui.Spacing();
_questSequenceComponent.DrawCurrentQuestTab();
}
}
using ImRaii.IEndObject endObject3 = ImRaii.TabItem("Quest Lookup");
if (endObject3)
{
ImGui.Spacing();
_questSequenceComponent.DrawQuestLookupTab();
}
}
}
}
}
}
QuestSequenceComponent.DrawWindowBorder();
}
}