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(); } }