using System.Collections.Generic; using System.Linq; using System.Numerics; using Dalamud.Bindings.ImGui; using Dalamud.Interface; using Dalamud.Interface.Colors; using Dalamud.Interface.Utility.Raii; using FFXIVClientStructs.FFXIV.Client.Game.UI; using FFXIVClientStructs.FFXIV.Common.Math; using Questionable.Data; using Questionable.Functions; using Questionable.Model.Questing; namespace Questionable.Windows.QuestComponents; internal sealed class ARealmRebornComponent { private static readonly QuestId ATimeForEveryPurpose = new QuestId(425); private static readonly QuestId TheUltimateWeapon = new QuestId(524); private static readonly QuestId GoodIntentions = new QuestId(363); private static readonly ushort[] RequiredPrimalInstances = new ushort[3] { 20004, 20006, 20005 }; private readonly QuestFunctions _questFunctions; private readonly QuestData _questData; private readonly TerritoryData _territoryData; private readonly UiUtils _uiUtils; private readonly Configuration _configuration; public bool ShouldDraw { get { if (!_questFunctions.IsQuestAcceptedOrComplete(ATimeForEveryPurpose)) { return _questFunctions.IsQuestComplete(TheUltimateWeapon); } return false; } } public ARealmRebornComponent(QuestFunctions questFunctions, QuestData questData, TerritoryData territoryData, UiUtils uiUtils, Configuration configuration) { _questFunctions = questFunctions; _questData = questData; _territoryData = territoryData; _uiUtils = uiUtils; _configuration = configuration; } public void Draw() { if (!_questFunctions.IsQuestAcceptedOrComplete(GoodIntentions)) { DrawPrimals(); } DrawAllianceRaids(); } private void DrawPrimals() { bool flag = UIState.IsInstanceContentCompleted(RequiredPrimalInstances.Last()); bool flag2 = _uiUtils.ChecklistItem("Hard Mode Primals", flag, _configuration.Advanced.SkipARealmRebornHardModePrimals ? new System.Numerics.Vector4?(ImGuiColors.DalamudGrey) : ((System.Numerics.Vector4?)null)); if (flag || !flag2) { return; } using ImRaii.IEndObject endObject = ImRaii.Tooltip(); if (!(!endObject)) { ushort[] requiredPrimalInstances = RequiredPrimalInstances; foreach (ushort instanceId in requiredPrimalInstances) { (System.Numerics.Vector4 color, FontAwesomeIcon icon) instanceStyle = UiUtils.GetInstanceStyle(instanceId); FFXIVClientStructs.FFXIV.Common.Math.Vector4 vector = instanceStyle.color; FontAwesomeIcon item = instanceStyle.icon; _uiUtils.ChecklistItem(_territoryData.GetInstanceName(instanceId) ?? "?", vector, item, ImGui.GetStyle().FramePadding.X); } } } private void DrawAllianceRaids() { QuestFunctions questFunctions = _questFunctions; IReadOnlyList crystalTowerQuests = QuestData.CrystalTowerQuests; bool flag = questFunctions.IsQuestComplete(crystalTowerQuests[crystalTowerQuests.Count - 1]); bool flag2 = _uiUtils.ChecklistItem("Crystal Tower Raids", flag, _configuration.Advanced.SkipCrystalTowerRaids ? new System.Numerics.Vector4?(ImGuiColors.DalamudGrey) : ((System.Numerics.Vector4?)null)); if (flag || !flag2) { return; } using ImRaii.IEndObject endObject = ImRaii.Tooltip(); if (!endObject) { return; } foreach (QuestId crystalTowerQuest in QuestData.CrystalTowerQuests) { (System.Numerics.Vector4 Color, FontAwesomeIcon Icon, string Status) questStyle = _uiUtils.GetQuestStyle(crystalTowerQuest); FFXIVClientStructs.FFXIV.Common.Math.Vector4 vector = questStyle.Color; FontAwesomeIcon item = questStyle.Icon; _uiUtils.ChecklistItem(_questData.GetQuestInfo(crystalTowerQuest).Name, vector, item, ImGui.GetStyle().FramePadding.X); } } }