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() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) 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; } TooltipDisposable val = ImRaii.Tooltip(); try { if (((TooltipDisposable)(ref val)).Alive) { 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); } } } finally { ((TooltipDisposable)(ref val)).Dispose(); } } private void DrawAllianceRaids() { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) 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; } TooltipDisposable val = ImRaii.Tooltip(); try { if (!((TooltipDisposable)(ref val)).Alive) { 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); } } finally { ((TooltipDisposable)(ref val)).Dispose(); } } }