using System.Collections.Immutable;
using System.Linq;
using Dalamud.Game.Text;
+using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using JetBrains.Annotations;
using ExcelQuest = Lumina.Excel.GeneratedSheets.Quest;
CompletesInstantly = quest.ToDoCompleteSeq[0] == 0;
PreviousInstanceContent = quest.InstanceContent.Select(x => (ushort)x.Row).Where(x => x != 0).ToList();
PreviousInstanceContentJoin = (QuestJoin)quest.InstanceContentJoin;
+ GrandCompany = (GrandCompany)quest.GrandCompany.Row;
}
public bool IsRepeatable { get; }
public ImmutableList<ushort> PreviousQuests { get; }
public QuestJoin PreviousQuestJoin { get; }
- public ImmutableList<ushort> QuestLocks { get; set; }
- public QuestJoin QuestLockJoin { get; set; }
- public List<ushort> PreviousInstanceContent { get; set; }
- public QuestJoin PreviousInstanceContentJoin { get; set; }
+ public ImmutableList<ushort> QuestLocks { get; }
+ public QuestJoin QuestLockJoin { get; }
+ public List<ushort> PreviousInstanceContent { get; }
+ public QuestJoin PreviousInstanceContentJoin { get; }
public bool IsMainScenarioQuest { get; }
- public bool CompletesInstantly { get; set; }
+ public bool CompletesInstantly { get; }
+ public GrandCompany GrandCompany { get; }
public string SimplifiedName => Name
.TrimStart(SeIconChar.QuestSync.ToIconChar(), SeIconChar.QuestRepeatable.ToIconChar(), ' ');
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Numerics;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.UI;
using FFXIVClientStructs.FFXIV.Client.UI;
+using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using ImGuiNET;
using LLib.GameUI;
using LLib.ImGui;
}
if (quest.PreviousQuests.Count > 0)
- {
- ImGui.Separator();
DrawQuestUnlocks(quest, 0);
- }
}
}
}
if (quest.PreviousQuests.Count > 0)
{
+ if (counter == 0)
+ ImGui.Separator();
+
if (quest.PreviousQuests.Count > 1)
{
if (quest.PreviousQuestJoin == QuestInfo.QuestJoin.All)
{
var qInfo = _questData.GetQuestInfo(q);
var (iconColor, icon, _) = _uiUtils.GetQuestStyle(q);
- // ReSharper disable once UnusedVariable
- using (var font = _pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
- {
- if (_questRegistry.IsKnownQuest(qInfo.QuestId))
- ImGui.TextColored(iconColor, icon.ToIconString());
- else
- ImGui.TextColored(ImGuiColors.DalamudGrey, icon.ToIconString());
- }
+ if (!_questRegistry.IsKnownQuest(qInfo.QuestId))
+ iconColor = ImGuiColors.DalamudGrey;
- ImGui.SameLine();
- ImGui.TextUnformatted(FormatQuestUnlockName(qInfo));
+ _uiUtils.ChecklistItem(FormatQuestUnlockName(qInfo), iconColor, icon);
DrawQuestUnlocks(qInfo, counter + 1);
}
if (counter == 0 && quest.QuestLocks.Count > 0)
{
+ ImGui.Separator();
if (quest.QuestLocks.Count > 1)
{
if (quest.QuestLockJoin == QuestInfo.QuestJoin.All)
- ImGui.Text("Blocked if all completed:");
+ ImGui.Text("Blocked by (if all completed):");
else if (quest.QuestLockJoin == QuestInfo.QuestJoin.AtLeastOne)
- ImGui.Text("Blocked if at least completed:");
+ ImGui.Text("Blocked by (if at least completed):");
}
else
ImGui.Text("Blocked by (if completed):");
{
var qInfo = _questData.GetQuestInfo(q);
var (iconColor, icon, _) = _uiUtils.GetQuestStyle(q);
- // ReSharper disable once UnusedVariable
- using (var font = _pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
- {
- if (_questRegistry.IsKnownQuest(qInfo.QuestId))
- ImGui.TextColored(iconColor, icon.ToIconString());
- else
- ImGui.TextColored(ImGuiColors.DalamudGrey, icon.ToIconString());
- }
+ if (!_questRegistry.IsKnownQuest(qInfo.QuestId))
+ iconColor = ImGuiColors.DalamudGrey;
- ImGui.SameLine();
- ImGui.TextUnformatted(FormatQuestUnlockName(qInfo));
+ _uiUtils.ChecklistItem(FormatQuestUnlockName(qInfo), iconColor, icon);
}
}
if (counter == 0 && quest.PreviousInstanceContent.Count > 0)
{
+ ImGui.Separator();
if (quest.PreviousInstanceContent.Count > 1)
{
if (quest.PreviousQuestJoin == QuestInfo.QuestJoin.All)
{
string instanceName = _territoryData.GetInstanceName(instanceId) ?? "?";
var (iconColor, icon) = UiUtils.GetInstanceStyle(instanceId);
-
- // ReSharper disable once UnusedVariable
- using (var font = _pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
- {
- ImGui.TextColored(iconColor, icon.ToIconString());
- }
-
- ImGui.SameLine();
- ImGui.TextUnformatted(instanceName);
+ _uiUtils.ChecklistItem(instanceName, iconColor, icon);
}
}
+ if (counter == 0 && quest.GrandCompany != GrandCompany.None)
+ {
+ ImGui.Separator();
+ string gcName = quest.GrandCompany switch
+ {
+ GrandCompany.Maelstrom => "Maelstrom",
+ GrandCompany.TwinAdder => "Twin Adder",
+ GrandCompany.ImmortalFlames => "Immortal Flames",
+ _ => "None",
+ };
+
+ GrandCompany currentGrandCompany = _gameFunctions.GetGrandCompany();
+ _uiUtils.ChecklistItem($"Grand Company: {gcName}", quest.GrandCompany == currentGrandCompany);
+ }
+
if (counter > 0)
ImGui.Unindent();
}