muffin v7.5.0
This commit is contained in:
parent
afafd5e377
commit
a6481e7b9a
67 changed files with 4281 additions and 2372 deletions
|
|
@ -51,136 +51,175 @@ internal sealed class BlacklistConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem("Blacklist###QuestBlacklist");
|
||||
if (!endObject)
|
||||
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
|
||||
TabItemDisposable val = ImRaii.TabItem((ImU8String)"Blacklist###QuestBlacklist");
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
ImGui.TextWrapped("Blacklisted quests will never be automatically picked up or executed by Questionable.");
|
||||
ImGui.TextWrapped("Use this to permanently skip specific quests you don't want to do.");
|
||||
ImGui.Separator();
|
||||
DrawCurrentlyAcceptedQuests();
|
||||
HashSet<ElementId> blacklistedQuests = base.Configuration.General.BlacklistedQuests;
|
||||
ImU8String text = new ImU8String(22, 1);
|
||||
text.AppendLiteral("Blacklisted Quests (");
|
||||
text.AppendFormatted(blacklistedQuests.Count);
|
||||
text.AppendLiteral("):");
|
||||
ImGui.Text(text);
|
||||
using (ImRaii.IEndObject endObject2 = ImRaii.Child("BlacklistedQuestsList", new Vector2(-1f, 200f), border: true))
|
||||
{
|
||||
if (endObject2)
|
||||
if (!val)
|
||||
{
|
||||
if (blacklistedQuests.Count > 0)
|
||||
return;
|
||||
}
|
||||
ImGui.TextWrapped("Blacklisted quests will never be automatically picked up or executed by Questionable.");
|
||||
ImGui.TextWrapped("Use this to permanently skip specific quests you don't want to do.");
|
||||
ImGui.Separator();
|
||||
DrawCurrentlyAcceptedQuests();
|
||||
HashSet<ElementId> blacklistedQuests = base.Configuration.General.BlacklistedQuests;
|
||||
ImU8String text = new ImU8String(22, 1);
|
||||
text.AppendLiteral("Blacklisted Quests (");
|
||||
text.AppendFormatted(blacklistedQuests.Count);
|
||||
text.AppendLiteral("):");
|
||||
ImGui.Text(text);
|
||||
ChildDisposable val2 = ImRaii.Child((ImU8String)"BlacklistedQuestsList", new Vector2(-1f, 200f), true);
|
||||
try
|
||||
{
|
||||
if (ChildDisposable.op_Implicit(val2))
|
||||
{
|
||||
ElementId elementId = null;
|
||||
int num = 0;
|
||||
foreach (ElementId item in blacklistedQuests.OrderBy((ElementId x) => x.ToString()))
|
||||
if (blacklistedQuests.Count > 0)
|
||||
{
|
||||
if (!_questRegistry.TryGetQuest(item, out Quest quest))
|
||||
ElementId elementId = null;
|
||||
int num = 0;
|
||||
foreach (ElementId item in blacklistedQuests.OrderBy((ElementId x) => x.ToString()))
|
||||
{
|
||||
ImU8String id = new ImU8String(5, 1);
|
||||
id.AppendLiteral("Quest");
|
||||
id.AppendFormatted(item);
|
||||
using (ImRaii.PushId(id))
|
||||
IdDisposable val3;
|
||||
if (!_questRegistry.TryGetQuest(item, out Quest quest))
|
||||
{
|
||||
ImU8String imU8String = new ImU8String(5, 1);
|
||||
imU8String.AppendLiteral("Quest");
|
||||
imU8String.AppendFormatted(item);
|
||||
val3 = ImRaii.PushId(imU8String, true);
|
||||
try
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
Vector4 col = new Vector4(0.7f, 0.7f, 0.7f, 1f);
|
||||
ImU8String text2 = new ImU8String(16, 1);
|
||||
text2.AppendLiteral("Unknown Quest (");
|
||||
text2.AppendFormatted(item);
|
||||
text2.AppendLiteral(")");
|
||||
ImGui.TextColored(in col, text2);
|
||||
ImGui.SameLine(ImGui.GetContentRegionAvail().X - ImGui.CalcTextSize(FontAwesomeIcon.Times.ToIconString()).X - ImGui.GetStyle().FramePadding.X * 2f);
|
||||
if (ImGuiComponents.IconButton($"##Remove{num}", FontAwesomeIcon.Times))
|
||||
{
|
||||
elementId = item;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
num++;
|
||||
continue;
|
||||
}
|
||||
ImU8String imU8String2 = new ImU8String(5, 1);
|
||||
imU8String2.AppendLiteral("Quest");
|
||||
imU8String2.AppendFormatted(item);
|
||||
val3 = ImRaii.PushId(imU8String2, true);
|
||||
try
|
||||
{
|
||||
(Vector4, FontAwesomeIcon, string) questStyle = _uiUtils.GetQuestStyle(item);
|
||||
bool flag;
|
||||
using (_pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.TextColored(in questStyle.Item1, questStyle.Item2.ToIconString());
|
||||
flag = ImGui.IsItemHovered();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
Vector4 col = new Vector4(0.7f, 0.7f, 0.7f, 1f);
|
||||
ImU8String text2 = new ImU8String(16, 1);
|
||||
text2.AppendLiteral("Unknown Quest (");
|
||||
text2.AppendFormatted(item);
|
||||
text2.AppendLiteral(")");
|
||||
ImGui.TextColored(in col, text2);
|
||||
ImGui.TextUnformatted(quest.Info.Name);
|
||||
flag |= ImGui.IsItemHovered();
|
||||
if (flag)
|
||||
{
|
||||
_questTooltipComponent.Draw(quest.Info);
|
||||
}
|
||||
ImGui.SameLine(ImGui.GetContentRegionAvail().X - ImGui.CalcTextSize(FontAwesomeIcon.Times.ToIconString()).X - ImGui.GetStyle().FramePadding.X * 2f);
|
||||
if (ImGuiComponents.IconButton($"##Remove{num}", FontAwesomeIcon.Times))
|
||||
{
|
||||
elementId = item;
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
ImGui.SetTooltip("Remove from blacklist");
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
num++;
|
||||
continue;
|
||||
}
|
||||
ImU8String id2 = new ImU8String(5, 1);
|
||||
id2.AppendLiteral("Quest");
|
||||
id2.AppendFormatted(item);
|
||||
using (ImRaii.PushId(id2))
|
||||
if (elementId != null)
|
||||
{
|
||||
(Vector4, FontAwesomeIcon, string) questStyle = _uiUtils.GetQuestStyle(item);
|
||||
bool flag;
|
||||
using (_pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.TextColored(in questStyle.Item1, questStyle.Item2.ToIconString());
|
||||
flag = ImGui.IsItemHovered();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.TextUnformatted(quest.Info.Name);
|
||||
flag |= ImGui.IsItemHovered();
|
||||
if (flag)
|
||||
{
|
||||
_questTooltipComponent.Draw(quest.Info);
|
||||
}
|
||||
ImGui.SameLine(ImGui.GetContentRegionAvail().X - ImGui.CalcTextSize(FontAwesomeIcon.Times.ToIconString()).X - ImGui.GetStyle().FramePadding.X * 2f);
|
||||
if (ImGuiComponents.IconButton($"##Remove{num}", FontAwesomeIcon.Times))
|
||||
{
|
||||
elementId = item;
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
ImGui.SetTooltip("Remove from blacklist");
|
||||
}
|
||||
base.Configuration.General.BlacklistedQuests.Remove(elementId);
|
||||
Save();
|
||||
}
|
||||
num++;
|
||||
}
|
||||
if (elementId != null)
|
||||
else
|
||||
{
|
||||
base.Configuration.General.BlacklistedQuests.Remove(elementId);
|
||||
Save();
|
||||
ImGui.PushStyleColor(ImGuiCol.Text, new Vector4(0.7f, 0.7f, 0.7f, 1f));
|
||||
ImGui.TextWrapped("No quests blacklisted. Use the dropdown above or add from currently accepted quests.");
|
||||
ImGui.PopStyleColor();
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
_questSelector.DrawSelection();
|
||||
if (blacklistedQuests.Count <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
DisabledDisposable val4 = ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl));
|
||||
try
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Trash, "Clear All"))
|
||||
{
|
||||
ImGui.PushStyleColor(ImGuiCol.Text, new Vector4(0.7f, 0.7f, 0.7f, 1f));
|
||||
ImGui.TextWrapped("No quests blacklisted. Use the dropdown above or add from currently accepted quests.");
|
||||
ImGui.PopStyleColor();
|
||||
base.Configuration.General.BlacklistedQuests.Clear();
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
_questSelector.DrawSelection();
|
||||
if (blacklistedQuests.Count <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
using (ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl)))
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Trash, "Clear All"))
|
||||
finally
|
||||
{
|
||||
base.Configuration.General.BlacklistedQuests.Clear();
|
||||
Save();
|
||||
((IDisposable)val4)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
}
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
finally
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawCurrentlyAcceptedQuests()
|
||||
{
|
||||
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
|
||||
List<Quest> currentlyAcceptedQuests = GetCurrentlyAcceptedQuests();
|
||||
ImGui.Text("Currently Accepted Quests:");
|
||||
using (ImRaii.IEndObject endObject = ImRaii.Child("AcceptedQuestsList", new Vector2(-1f, 100f), border: true))
|
||||
ChildDisposable val = ImRaii.Child((ImU8String)"AcceptedQuestsList", new Vector2(-1f, 100f), true);
|
||||
try
|
||||
{
|
||||
if (endObject)
|
||||
if (ChildDisposable.op_Implicit(val))
|
||||
{
|
||||
if (currentlyAcceptedQuests.Count > 0)
|
||||
{
|
||||
foreach (Quest item in currentlyAcceptedQuests)
|
||||
{
|
||||
ImU8String id = new ImU8String(13, 1);
|
||||
id.AppendLiteral("AcceptedQuest");
|
||||
id.AppendFormatted(item.Id);
|
||||
using (ImRaii.PushId(id))
|
||||
ImU8String imU8String = new ImU8String(13, 1);
|
||||
imU8String.AppendLiteral("AcceptedQuest");
|
||||
imU8String.AppendFormatted(item.Id);
|
||||
IdDisposable val2 = ImRaii.PushId(imU8String, true);
|
||||
try
|
||||
{
|
||||
(Vector4, FontAwesomeIcon, string) questStyle = _uiUtils.GetQuestStyle(item.Id);
|
||||
bool flag = false;
|
||||
|
|
@ -199,7 +238,8 @@ internal sealed class BlacklistConfigComponent : ConfigComponent
|
|||
_questTooltipComponent.Draw(item.Info);
|
||||
}
|
||||
ImGui.SameLine(ImGui.GetContentRegionAvail().X - ImGui.CalcTextSize(FontAwesomeIcon.Ban.ToIconString()).X - ImGui.GetStyle().FramePadding.X * 2f);
|
||||
using (ImRaii.Disabled(flag2))
|
||||
DisabledDisposable val3 = ImRaii.Disabled(flag2);
|
||||
try
|
||||
{
|
||||
if (ImGuiComponents.IconButton($"##Blacklist{item.Id}", FontAwesomeIcon.Ban))
|
||||
{
|
||||
|
|
@ -207,11 +247,19 @@ internal sealed class BlacklistConfigComponent : ConfigComponent
|
|||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip(flag2 ? "Quest already blacklisted" : "Add this quest to blacklist");
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -222,6 +270,10 @@ internal sealed class BlacklistConfigComponent : ConfigComponent
|
|||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val)).Dispose();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Game.Text;
|
||||
|
|
@ -58,31 +59,52 @@ internal abstract class ConfigComponent
|
|||
|
||||
protected static void DrawNotes(bool enabledByDefault, IEnumerable<string> notes)
|
||||
{
|
||||
using ImRaii.Color color = new ImRaii.Color();
|
||||
color.Push(ImGuiCol.TextDisabled, (!enabledByDefault) ? ImGuiColors.DalamudYellow : ImGuiColors.ParsedBlue);
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0006: Expected O, but got Unknown
|
||||
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
|
||||
ColorDisposable val = new ColorDisposable();
|
||||
try
|
||||
{
|
||||
if (!enabledByDefault)
|
||||
val.Push(ImGuiCol.TextDisabled, (!enabledByDefault) ? ImGuiColors.DalamudYellow : ImGuiColors.ParsedBlue, true);
|
||||
ImGui.SameLine();
|
||||
FontDisposable val2 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.ExclamationTriangle.ToIconString());
|
||||
if (!enabledByDefault)
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.ExclamationTriangle.ToIconString());
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
}
|
||||
else
|
||||
finally
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
if (!ImGui.IsItemHovered())
|
||||
{
|
||||
return;
|
||||
}
|
||||
TooltipDisposable val3 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.TextColored(ImGuiColors.DalamudYellow, "While testing, the following issues have been found:");
|
||||
foreach (string note in notes)
|
||||
{
|
||||
ImGui.BulletText(note);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val3)).Dispose();
|
||||
}
|
||||
}
|
||||
if (!ImGui.IsItemHovered())
|
||||
finally
|
||||
{
|
||||
return;
|
||||
}
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.TextColored(ImGuiColors.DalamudYellow, "While testing, the following issues have been found:");
|
||||
foreach (string note in notes)
|
||||
{
|
||||
ImGui.BulletText(note);
|
||||
}
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using System;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface.Colors;
|
||||
using Dalamud.Interface.Components;
|
||||
|
|
@ -15,118 +16,150 @@ internal sealed class DebugConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem("Advanced###Debug");
|
||||
if (!endObject)
|
||||
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
|
||||
TabItemDisposable val = ImRaii.TabItem((ImU8String)"Advanced###Debug");
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
ImGui.TextColored(ImGuiColors.DalamudRed, "Enabling any option here may cause unexpected behavior. Use at your own risk.");
|
||||
ImGui.Separator();
|
||||
DrawChocoboSettings();
|
||||
ImGui.Separator();
|
||||
bool v = base.Configuration.Advanced.DebugOverlay;
|
||||
if (ImGui.Checkbox("Enable debug overlay", ref v))
|
||||
{
|
||||
base.Configuration.Advanced.DebugOverlay = v;
|
||||
Save();
|
||||
}
|
||||
using (ImRaii.Disabled(!v))
|
||||
{
|
||||
using (ImRaii.PushIndent())
|
||||
if (!val)
|
||||
{
|
||||
bool v2 = base.Configuration.Advanced.CombatDataOverlay;
|
||||
if (ImGui.Checkbox("Enable combat data overlay", ref v2))
|
||||
return;
|
||||
}
|
||||
ImGui.TextColored(ImGuiColors.DalamudRed, "Enabling any option here may cause unexpected behavior. Use at your own risk.");
|
||||
ImGui.Separator();
|
||||
DrawChocoboSettings();
|
||||
ImGui.Separator();
|
||||
bool v = base.Configuration.Advanced.DebugOverlay;
|
||||
if (ImGui.Checkbox("Enable debug overlay", ref v))
|
||||
{
|
||||
base.Configuration.Advanced.DebugOverlay = v;
|
||||
Save();
|
||||
}
|
||||
DisabledDisposable val2 = ImRaii.Disabled(!v);
|
||||
IndentDisposable val3;
|
||||
try
|
||||
{
|
||||
val3 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
base.Configuration.Advanced.CombatDataOverlay = v2;
|
||||
Save();
|
||||
bool v2 = base.Configuration.Advanced.CombatDataOverlay;
|
||||
if (ImGui.Checkbox("Enable combat data overlay", ref v2))
|
||||
{
|
||||
base.Configuration.Advanced.CombatDataOverlay = v2;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
bool v3 = base.Configuration.Advanced.NeverFly;
|
||||
if (ImGui.Checkbox("Disable flying (even if unlocked for the zone)", ref v3))
|
||||
{
|
||||
base.Configuration.Advanced.NeverFly = v3;
|
||||
Save();
|
||||
}
|
||||
bool v4 = base.Configuration.Advanced.AdditionalStatusInformation;
|
||||
if (ImGui.Checkbox("Draw additional status information", ref v4))
|
||||
{
|
||||
base.Configuration.Advanced.AdditionalStatusInformation = v4;
|
||||
Save();
|
||||
}
|
||||
bool v5 = base.Configuration.Advanced.DisablePartyWatchdog;
|
||||
if (ImGui.Checkbox("Disable Party Watchdog", ref v5))
|
||||
{
|
||||
base.Configuration.Advanced.DisablePartyWatchdog = v5;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("The Party Watchdog stops Questionable when entering certain zones with other party members, or when entering unsupported content. Disabling this allows Questionable to continue working while in a party, but may cause unexpected behavior in group content.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("AutoDuty Settings");
|
||||
val3 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
bool v6 = base.Configuration.Advanced.DisableAutoDutyBareMode;
|
||||
if (ImGui.Checkbox("Use Pre-Loop/Loop/Post-Loop settings", ref v6))
|
||||
{
|
||||
base.Configuration.Advanced.DisableAutoDutyBareMode = v6;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("Typically, the loop settings for AutoDuty are disabled when running dungeons with Questionable, since they can cause issues (or even shut down your PC).");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Quest/Interaction Skips");
|
||||
val3 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
bool v7 = base.Configuration.Advanced.SkipAetherCurrents;
|
||||
if (ImGui.Checkbox("Don't pick up aether currents/aether current quests", ref v7))
|
||||
{
|
||||
base.Configuration.Advanced.SkipAetherCurrents = v7;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("If not done during the MSQ by Questionable, you have to manually pick up any missed aether currents/quests. There is no way to automatically pick up all missing aether currents.");
|
||||
bool v8 = base.Configuration.Advanced.SkipClassJobQuests;
|
||||
if (ImGui.Checkbox("Don't pick up class/job/role quests", ref v8))
|
||||
{
|
||||
base.Configuration.Advanced.SkipClassJobQuests = v8;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("Class and job skills for A Realm Reborn, Heavensward and (for the Lv70 skills) Stormblood are locked behind quests. Not recommended if you plan on queueing for instances with duty finder/party finder.\n\nNote: This setting is ignored for the first class/job quest if your character is not high enough level to start the level 4 MSQ.");
|
||||
bool v9 = base.Configuration.Advanced.SkipARealmRebornHardModePrimals;
|
||||
if (ImGui.Checkbox("Don't pick up ARR hard mode primal quests", ref v9))
|
||||
{
|
||||
base.Configuration.Advanced.SkipARealmRebornHardModePrimals = v9;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("Hard mode Ifrit/Garuda/Titan are required for the Patch 2.5 quest 'Good Intentions' and to start Heavensward.");
|
||||
bool v10 = base.Configuration.Advanced.SkipCrystalTowerRaids;
|
||||
if (ImGui.Checkbox("Don't pick up Crystal Tower quests", ref v10))
|
||||
{
|
||||
base.Configuration.Advanced.SkipCrystalTowerRaids = v10;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("Crystal Tower raids are required for the Patch 2.55 quest 'A Time to Every Purpose' and to start Heavensward.");
|
||||
bool v11 = base.Configuration.Advanced.PreventQuestCompletion;
|
||||
if (ImGui.Checkbox("Prevent quest completion", ref v11))
|
||||
{
|
||||
base.Configuration.Advanced.PreventQuestCompletion = v11;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("When enabled, Questionable will not attempt to turn-in and complete quests. This will do everything automatically except the final turn-in step.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
}
|
||||
bool v3 = base.Configuration.Advanced.NeverFly;
|
||||
if (ImGui.Checkbox("Disable flying (even if unlocked for the zone)", ref v3))
|
||||
finally
|
||||
{
|
||||
base.Configuration.Advanced.NeverFly = v3;
|
||||
Save();
|
||||
}
|
||||
bool v4 = base.Configuration.Advanced.AdditionalStatusInformation;
|
||||
if (ImGui.Checkbox("Draw additional status information", ref v4))
|
||||
{
|
||||
base.Configuration.Advanced.AdditionalStatusInformation = v4;
|
||||
Save();
|
||||
}
|
||||
bool v5 = base.Configuration.Advanced.DisablePartyWatchdog;
|
||||
if (ImGui.Checkbox("Disable Party Watchdog", ref v5))
|
||||
{
|
||||
base.Configuration.Advanced.DisablePartyWatchdog = v5;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("The Party Watchdog stops Questionable when entering certain zones with other party members, or when entering unsupported content. Disabling this allows Questionable to continue working while in a party, but may cause unexpected behavior in group content.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("AutoDuty Settings");
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
bool v6 = base.Configuration.Advanced.DisableAutoDutyBareMode;
|
||||
if (ImGui.Checkbox("Use Pre-Loop/Loop/Post-Loop settings", ref v6))
|
||||
{
|
||||
base.Configuration.Advanced.DisableAutoDutyBareMode = v6;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("Typically, the loop settings for AutoDuty are disabled when running dungeons with Questionable, since they can cause issues (or even shut down your PC).");
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Quest/Interaction Skips");
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
bool v7 = base.Configuration.Advanced.SkipAetherCurrents;
|
||||
if (ImGui.Checkbox("Don't pick up aether currents/aether current quests", ref v7))
|
||||
{
|
||||
base.Configuration.Advanced.SkipAetherCurrents = v7;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("If not done during the MSQ by Questionable, you have to manually pick up any missed aether currents/quests. There is no way to automatically pick up all missing aether currents.");
|
||||
bool v8 = base.Configuration.Advanced.SkipClassJobQuests;
|
||||
if (ImGui.Checkbox("Don't pick up class/job/role quests", ref v8))
|
||||
{
|
||||
base.Configuration.Advanced.SkipClassJobQuests = v8;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("Class and job skills for A Realm Reborn, Heavensward and (for the Lv70 skills) Stormblood are locked behind quests. Not recommended if you plan on queueing for instances with duty finder/party finder.\n\nNote: This setting is ignored for the first class/job quest if your character is not high enough level to start the level 4 MSQ.");
|
||||
bool v9 = base.Configuration.Advanced.SkipARealmRebornHardModePrimals;
|
||||
if (ImGui.Checkbox("Don't pick up ARR hard mode primal quests", ref v9))
|
||||
{
|
||||
base.Configuration.Advanced.SkipARealmRebornHardModePrimals = v9;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("Hard mode Ifrit/Garuda/Titan are required for the Patch 2.5 quest 'Good Intentions' and to start Heavensward.");
|
||||
bool v10 = base.Configuration.Advanced.SkipCrystalTowerRaids;
|
||||
if (ImGui.Checkbox("Don't pick up Crystal Tower quests", ref v10))
|
||||
{
|
||||
base.Configuration.Advanced.SkipCrystalTowerRaids = v10;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("Crystal Tower raids are required for the Patch 2.55 quest 'A Time to Every Purpose' and to start Heavensward.");
|
||||
bool v11 = base.Configuration.Advanced.PreventQuestCompletion;
|
||||
if (ImGui.Checkbox("Prevent quest completion", ref v11))
|
||||
{
|
||||
base.Configuration.Advanced.PreventQuestCompletion = v11;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("When enabled, Questionable will not attempt to turn-in and complete quests. This will do everything automatically except the final turn-in step.");
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawChocoboSettings()
|
||||
{
|
||||
ImGui.Text("Chocobo Settings");
|
||||
using (ImRaii.PushIndent())
|
||||
IndentDisposable val = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.Text("Chocobo Name:");
|
||||
|
|
@ -147,6 +180,10 @@ internal sealed class DebugConfigComponent : ConfigComponent
|
|||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("The name to give your chocobo during the 'My Little Chocobo' quest.\nMust be 2-20 characters. First letter will be capitalized.\nIf left empty, defaults to 'Kweh'.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private static string FormatChocoboName(string name)
|
||||
|
|
|
|||
|
|
@ -106,285 +106,398 @@ internal sealed class DutyConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem("Duties###Duties");
|
||||
if (!endObject)
|
||||
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0260: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0265: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0267: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_027d: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0282: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0284: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02df: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0310: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0315: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0317: Unknown result type (might be due to invalid IL or missing references)
|
||||
TabItemDisposable val = ImRaii.TabItem((ImU8String)"Duties###Duties");
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
bool v = base.Configuration.Duties.RunInstancedContentWithAutoDuty;
|
||||
if (ImGui.Checkbox("Run instanced content with AutoDuty and BossMod", ref v))
|
||||
{
|
||||
base.Configuration.Duties.RunInstancedContentWithAutoDuty = v;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("The combat module used for this is configured by AutoDuty, ignoring whichever selection you've made in Questionable's \"General\" configuration.");
|
||||
using (ImRaii.Disabled(!v))
|
||||
{
|
||||
using (ImRaii.PushIndent(ImGui.GetFrameHeight() + ImGui.GetStyle().ItemInnerSpacing.X))
|
||||
if (!val)
|
||||
{
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed))
|
||||
return;
|
||||
}
|
||||
bool v = base.Configuration.Duties.RunInstancedContentWithAutoDuty;
|
||||
if (ImGui.Checkbox("Run instanced content with AutoDuty and BossMod", ref v))
|
||||
{
|
||||
base.Configuration.Duties.RunInstancedContentWithAutoDuty = v;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("The combat module used for this is configured by AutoDuty, ignoring whichever selection you've made in Questionable's \"General\" configuration.");
|
||||
DisabledDisposable val2 = ImRaii.Disabled(!v);
|
||||
try
|
||||
{
|
||||
IndentDisposable val3 = ImRaii.PushIndent(ImGui.GetFrameHeight() + ImGui.GetStyle().ItemInnerSpacing.X, true, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextUnformatted("Work in Progress:");
|
||||
ImGui.BulletText("Duty Support mode is limited.");
|
||||
ImGui.BulletText("Unsynced modes require being significantly overleveled or having a high-level party member.");
|
||||
ImGui.BulletText("Most players will need to use Duty Support mode when progressing normally through the game.");
|
||||
ColorDisposable val4 = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextUnformatted("Work in Progress:");
|
||||
ImGui.BulletText("Duty Support mode is limited.");
|
||||
ImGui.BulletText("Unsynced modes require being significantly overleveled or having a high-level party member.");
|
||||
ImGui.BulletText("Most players will need to use Duty Support mode when progressing normally through the game.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val4)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
bool v2 = base.Configuration.Duties.RunLevelingModeWhenUnderleveled;
|
||||
if (ImGui.Checkbox("Run AutoDuty Leveling mode when underleveled for MSQ", ref v2))
|
||||
{
|
||||
base.Configuration.Duties.RunLevelingModeWhenUnderleveled = v2;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("When enabled, Questionable will automatically run AutoDuty's Leveling mode when your character is underleveled for the next Main Scenario Quest.\n\nLeveling mode runs the highest available dungeon for your level to gain XP.\n\nThis is useful for characters without the Road to 90 XP buff who may not have enough XP to continue the MSQ.");
|
||||
ImGui.Spacing();
|
||||
ImGui.Text("Default duty mode:");
|
||||
ImGui.SameLine();
|
||||
int currentItem = (int)base.Configuration.Duties.DefaultDutyMode;
|
||||
ImGui.SetNextItemWidth(200f);
|
||||
if (ImGui.Combo((ImU8String)"##DefaultDutyMode", ref currentItem, (ReadOnlySpan<string>)DutyModeLabels, DutyModeLabels.Length))
|
||||
{
|
||||
base.Configuration.Duties.DefaultDutyMode = (EDutyMode)currentItem;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("\ufffd Duty Support: Run with NPC party members (level synced)\n\ufffd Unsync (Solo): Run alone at your current level (unsynced)\n\ufffd Unsync (Party): Run with your party at current level (unsynced)\n\nYou can override this setting for individual duties below.");
|
||||
}
|
||||
ImGui.Spacing();
|
||||
bool v2 = base.Configuration.Duties.RunLevelingModeWhenUnderleveled;
|
||||
if (ImGui.Checkbox("Run AutoDuty Leveling mode when underleveled for MSQ", ref v2))
|
||||
finally
|
||||
{
|
||||
base.Configuration.Duties.RunLevelingModeWhenUnderleveled = v2;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("When enabled, Questionable will automatically run AutoDuty's Leveling mode when your character is underleveled for the next Main Scenario Quest.\n\nLeveling mode runs the highest available dungeon for your level to gain XP.\n\nThis is useful for characters without the Road to 90 XP buff who may not have enough XP to continue the MSQ.");
|
||||
ImGui.Spacing();
|
||||
ImGui.Text("Default duty mode:");
|
||||
ImGui.SameLine();
|
||||
int currentItem = (int)base.Configuration.Duties.DefaultDutyMode;
|
||||
ImGui.SetNextItemWidth(200f);
|
||||
if (ImGui.Combo((ImU8String)"##DefaultDutyMode", ref currentItem, (ReadOnlySpan<string>)DutyModeLabels, DutyModeLabels.Length))
|
||||
{
|
||||
base.Configuration.Duties.DefaultDutyMode = (EDutyMode)currentItem;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("\ufffd Duty Support: Run with NPC party members (level synced)\n\ufffd Unsync (Solo): Run alone at your current level (unsynced)\n\ufffd Unsync (Party): Run with your party at current level (unsynced)\n\nYou can override this setting for individual duties below.");
|
||||
}
|
||||
ImGui.Separator();
|
||||
using (ImRaii.Disabled(!v))
|
||||
{
|
||||
ImGui.Text("Questionable includes a default list of duties that work if AutoDuty and BossMod are installed.");
|
||||
ImGui.Text("The included list of duties can change with each update, and is based on the following spreadsheet:");
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.GlobeEurope, "Open AutoDuty spreadsheet"))
|
||||
{
|
||||
Util.OpenLink("https://docs.google.com/spreadsheets/d/151RlpqRcCpiD_VbQn6Duf-u-S71EP7d0mx3j1PDNoNA/edit?pli=1#gid=0");
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("You can override the settings for each individual duty:");
|
||||
using ImRaii.IEndObject endObject2 = ImRaii.TabBar("DutyTypeTabs");
|
||||
if (endObject2)
|
||||
val2 = ImRaii.Disabled(!v);
|
||||
try
|
||||
{
|
||||
using (ImRaii.IEndObject endObject3 = ImRaii.TabItem("Dungeons"))
|
||||
ImGui.Text("Questionable includes a default list of duties that work if AutoDuty and BossMod are installed.");
|
||||
ImGui.Text("The included list of duties can change with each update, and is based on the following spreadsheet:");
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.GlobeEurope, "Open AutoDuty spreadsheet"))
|
||||
{
|
||||
if (endObject3)
|
||||
{
|
||||
DrawConfigTable(v, _contentFinderConditionNames);
|
||||
}
|
||||
Util.OpenLink("https://docs.google.com/spreadsheets/d/151RlpqRcCpiD_VbQn6Duf-u-S71EP7d0mx3j1PDNoNA/edit?pli=1#gid=0");
|
||||
}
|
||||
using (ImRaii.IEndObject endObject4 = ImRaii.TabItem("Trials"))
|
||||
ImGui.Separator();
|
||||
ImGui.Text("You can override the settings for each individual duty:");
|
||||
TabBarDisposable val5 = ImRaii.TabBar((ImU8String)"DutyTypeTabs");
|
||||
try
|
||||
{
|
||||
if (endObject4)
|
||||
if (TabBarDisposable.op_Implicit(val5))
|
||||
{
|
||||
DrawConfigTable(v, _allTrialNames);
|
||||
TabItemDisposable val6 = ImRaii.TabItem((ImU8String)"Dungeons");
|
||||
try
|
||||
{
|
||||
if (TabItemDisposable.op_Implicit(val6))
|
||||
{
|
||||
DrawConfigTable(v, _contentFinderConditionNames);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val6)).Dispose();
|
||||
}
|
||||
TabItemDisposable val7 = ImRaii.TabItem((ImU8String)"Trials");
|
||||
try
|
||||
{
|
||||
if (TabItemDisposable.op_Implicit(val7))
|
||||
{
|
||||
DrawConfigTable(v, _allTrialNames);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val7)).Dispose();
|
||||
}
|
||||
TabItemDisposable val8 = ImRaii.TabItem((ImU8String)"Normal Raids");
|
||||
try
|
||||
{
|
||||
if (TabItemDisposable.op_Implicit(val8))
|
||||
{
|
||||
DrawConfigTable(v, _allNormalRaidNames);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val8)).Dispose();
|
||||
}
|
||||
TabItemDisposable val9 = ImRaii.TabItem((ImU8String)"Alliance Raids");
|
||||
try
|
||||
{
|
||||
if (TabItemDisposable.op_Implicit(val9))
|
||||
{
|
||||
DrawConfigTable(v, _allAllianceRaidNames);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val9)).Dispose();
|
||||
}
|
||||
}
|
||||
DrawEnableAllButton();
|
||||
ImGui.SameLine();
|
||||
DrawClipboardButtons();
|
||||
ImGui.SameLine();
|
||||
DrawResetButton();
|
||||
}
|
||||
using (ImRaii.IEndObject endObject5 = ImRaii.TabItem("Normal Raids"))
|
||||
finally
|
||||
{
|
||||
if (endObject5)
|
||||
{
|
||||
DrawConfigTable(v, _allNormalRaidNames);
|
||||
}
|
||||
}
|
||||
using ImRaii.IEndObject endObject6 = ImRaii.TabItem("Alliance Raids");
|
||||
if (endObject6)
|
||||
{
|
||||
DrawConfigTable(v, _allAllianceRaidNames);
|
||||
((TabBarDisposable)(ref val5)).Dispose();
|
||||
}
|
||||
}
|
||||
DrawEnableAllButton();
|
||||
ImGui.SameLine();
|
||||
DrawClipboardButtons();
|
||||
ImGui.SameLine();
|
||||
DrawResetButton();
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawConfigTable(bool runInstancedContentWithAutoDuty, Dictionary<EExpansionVersion, List<DutyInfo>> contentByExpansion)
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.Child("DutyConfiguration", new Vector2(725f, 400f), border: true);
|
||||
if (!endObject)
|
||||
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_014f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0154: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0156: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
|
||||
ChildDisposable val = ImRaii.Child((ImU8String)"DutyConfiguration", new Vector2(725f, 400f), true);
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
EExpansionVersion[] values = Enum.GetValues<EExpansionVersion>();
|
||||
for (int i = 0; i < values.Length; i++)
|
||||
{
|
||||
EExpansionVersion eExpansionVersion = values[i];
|
||||
(int enabledCount, int totalCount) dutyCountsForExpansion = GetDutyCountsForExpansion(eExpansionVersion, contentByExpansion);
|
||||
int item = dutyCountsForExpansion.enabledCount;
|
||||
int item2 = dutyCountsForExpansion.totalCount;
|
||||
string obj = ((item2 > 0) ? $"{eExpansionVersion.ToFriendlyString()} ({item}/{item2})" : eExpansionVersion.ToFriendlyString());
|
||||
string key = eExpansionVersion.ToString();
|
||||
ImGui.SetNextItemOpen(base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
if (!val)
|
||||
{
|
||||
if (!base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
return;
|
||||
}
|
||||
EExpansionVersion[] values = Enum.GetValues<EExpansionVersion>();
|
||||
for (int i = 0; i < values.Length; i++)
|
||||
{
|
||||
EExpansionVersion eExpansionVersion = values[i];
|
||||
(int enabledCount, int totalCount) dutyCountsForExpansion = GetDutyCountsForExpansion(eExpansionVersion, contentByExpansion);
|
||||
int item = dutyCountsForExpansion.enabledCount;
|
||||
int item2 = dutyCountsForExpansion.totalCount;
|
||||
string obj = ((item2 > 0) ? $"{eExpansionVersion.ToFriendlyString()} ({item}/{item2})" : eExpansionVersion.ToFriendlyString());
|
||||
string key = eExpansionVersion.ToString();
|
||||
ImGui.SetNextItemOpen(base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
{
|
||||
base.Configuration.Duties.ExpansionHeaderStates[key] = true;
|
||||
Save();
|
||||
}
|
||||
ImU8String table = new ImU8String(6, 1);
|
||||
table.AppendLiteral("Duties");
|
||||
table.AppendFormatted(eExpansionVersion);
|
||||
using ImRaii.IEndObject endObject2 = ImRaii.Table(table, 3, ImGuiTableFlags.SizingFixedFit);
|
||||
if (!ImRaii.IEndObject.op_True(endObject2))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
ImGui.TableSetupColumn("Name", ImGuiTableColumnFlags.WidthStretch);
|
||||
ImGui.TableSetupColumn("Enabled", ImGuiTableColumnFlags.WidthFixed, 200f);
|
||||
ImGui.TableSetupColumn("Mode", ImGuiTableColumnFlags.WidthFixed, 150f);
|
||||
if (!contentByExpansion.TryGetValue(eExpansionVersion, out List<DutyInfo> value))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
foreach (DutyInfo item3 in value)
|
||||
{
|
||||
item3.Deconstruct(out uint CfcId, out uint TerritoryId, out string Name);
|
||||
uint num = CfcId;
|
||||
uint value2 = TerritoryId;
|
||||
string text = Name;
|
||||
DutyOptions dutyOptions;
|
||||
bool flag = _questRegistry.TryGetDutyByContentFinderConditionId(num, out dutyOptions);
|
||||
ImGui.TableNextRow();
|
||||
string[] array;
|
||||
int currentItem;
|
||||
if (flag)
|
||||
if (!base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
array = (dutyOptions.Enabled ? SupportedCfcOptions : UnsupportedCfcOptions);
|
||||
currentItem = 0;
|
||||
if (base.Configuration.Duties.WhitelistedDutyCfcIds.Contains(num))
|
||||
{
|
||||
currentItem = 1;
|
||||
}
|
||||
if (base.Configuration.Duties.BlacklistedDutyCfcIds.Contains(num))
|
||||
{
|
||||
currentItem = 2;
|
||||
}
|
||||
base.Configuration.Duties.ExpansionHeaderStates[key] = true;
|
||||
Save();
|
||||
}
|
||||
else
|
||||
ImU8String imU8String = new ImU8String(6, 1);
|
||||
imU8String.AppendLiteral("Duties");
|
||||
imU8String.AppendFormatted(eExpansionVersion);
|
||||
TableDisposable val2 = ImRaii.Table(imU8String, 3, ImGuiTableFlags.SizingFixedFit);
|
||||
try
|
||||
{
|
||||
array = new string[2] { "Disabled", "Enabled" };
|
||||
currentItem = (base.Configuration.Duties.WhitelistedDutyCfcIds.Contains(num) ? 1 : 0);
|
||||
}
|
||||
if (ImGui.TableNextColumn())
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.TextUnformatted(text);
|
||||
if (ImGui.IsItemHovered() && base.Configuration.Advanced.AdditionalStatusInformation)
|
||||
if (!TableDisposable.op_Implicit(val2))
|
||||
{
|
||||
using ImRaii.IEndObject endObject3 = ImRaii.Tooltip();
|
||||
if (endObject3)
|
||||
continue;
|
||||
}
|
||||
ImGui.TableSetupColumn("Name", ImGuiTableColumnFlags.WidthStretch);
|
||||
ImGui.TableSetupColumn("Enabled", ImGuiTableColumnFlags.WidthFixed, 200f);
|
||||
ImGui.TableSetupColumn("Mode", ImGuiTableColumnFlags.WidthFixed, 150f);
|
||||
if (!contentByExpansion.TryGetValue(eExpansionVersion, out List<DutyInfo> value))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
foreach (DutyInfo item3 in value)
|
||||
{
|
||||
item3.Deconstruct(out uint CfcId, out uint TerritoryId, out string Name);
|
||||
uint num = CfcId;
|
||||
uint value2 = TerritoryId;
|
||||
string text = Name;
|
||||
DutyOptions dutyOptions;
|
||||
bool flag = _questRegistry.TryGetDutyByContentFinderConditionId(num, out dutyOptions);
|
||||
ImGui.TableNextRow();
|
||||
string[] array;
|
||||
int currentItem;
|
||||
if (flag)
|
||||
{
|
||||
ImGui.TextUnformatted(text);
|
||||
ImGui.Separator();
|
||||
ImU8String text2 = new ImU8String(13, 1);
|
||||
text2.AppendLiteral("TerritoryId: ");
|
||||
text2.AppendFormatted(value2);
|
||||
ImGui.BulletText(text2);
|
||||
ImU8String text3 = new ImU8String(26, 1);
|
||||
text3.AppendLiteral("ContentFinderConditionId: ");
|
||||
text3.AppendFormatted(num);
|
||||
ImGui.BulletText(text3);
|
||||
if (flag)
|
||||
array = (dutyOptions.Enabled ? SupportedCfcOptions : UnsupportedCfcOptions);
|
||||
currentItem = 0;
|
||||
if (base.Configuration.Duties.WhitelistedDutyCfcIds.Contains(num))
|
||||
{
|
||||
ImGui.BulletText("Duty Support: Available");
|
||||
currentItem = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (runInstancedContentWithAutoDuty && !_autoDutyIpc.HasPath(num))
|
||||
{
|
||||
ImGuiComponents.HelpMarker("This duty is not supported by AutoDuty", FontAwesomeIcon.Times, ImGuiColors.DalamudRed);
|
||||
}
|
||||
else if (flag && dutyOptions.Notes.Count > 0)
|
||||
{
|
||||
ConfigComponent.DrawNotes(dutyOptions.Enabled, dutyOptions.Notes);
|
||||
}
|
||||
}
|
||||
if (ImGui.TableNextColumn())
|
||||
{
|
||||
ImU8String id = new ImU8String(16, 1);
|
||||
id.AppendLiteral("##DungeonEnabled");
|
||||
id.AppendFormatted(num);
|
||||
using (ImRaii.PushId(id))
|
||||
{
|
||||
ImGui.SetNextItemWidth(200f);
|
||||
if (ImGui.Combo((ImU8String)string.Empty, ref currentItem, (ReadOnlySpan<string>)array, array.Length))
|
||||
{
|
||||
base.Configuration.Duties.WhitelistedDutyCfcIds.Remove(num);
|
||||
base.Configuration.Duties.BlacklistedDutyCfcIds.Remove(num);
|
||||
if (flag)
|
||||
if (base.Configuration.Duties.BlacklistedDutyCfcIds.Contains(num))
|
||||
{
|
||||
switch (currentItem)
|
||||
{
|
||||
case 1:
|
||||
base.Configuration.Duties.WhitelistedDutyCfcIds.Add(num);
|
||||
break;
|
||||
case 2:
|
||||
base.Configuration.Duties.BlacklistedDutyCfcIds.Add(num);
|
||||
break;
|
||||
}
|
||||
currentItem = 2;
|
||||
}
|
||||
else if (currentItem == 1)
|
||||
{
|
||||
base.Configuration.Duties.WhitelistedDutyCfcIds.Add(num);
|
||||
}
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!ImGui.TableNextColumn())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
ImU8String id2 = new ImU8String(13, 1);
|
||||
id2.AppendLiteral("##DungeonMode");
|
||||
id2.AppendFormatted(num);
|
||||
using (ImRaii.PushId(id2))
|
||||
{
|
||||
EDutyMode value3;
|
||||
bool flag2 = base.Configuration.Duties.DutyModeOverrides.TryGetValue(num, out value3);
|
||||
EDutyMode num2 = (flag2 ? value3 : ((EDutyMode)(-1)));
|
||||
Name = "Use Default";
|
||||
string[] dutyModeLabels = DutyModeLabels;
|
||||
int num3 = 0;
|
||||
string[] array2 = new string[1 + dutyModeLabels.Length];
|
||||
array2[num3] = Name;
|
||||
num3++;
|
||||
ReadOnlySpan<string> readOnlySpan = new ReadOnlySpan<string>(dutyModeLabels);
|
||||
readOnlySpan.CopyTo(new Span<string>(array2).Slice(num3, readOnlySpan.Length));
|
||||
num3 += readOnlySpan.Length;
|
||||
string[] array3 = array2;
|
||||
int currentItem2 = (int)(num2 + 1);
|
||||
ImGui.SetNextItemWidth(150f);
|
||||
if (ImGui.Combo((ImU8String)string.Empty, ref currentItem2, (ReadOnlySpan<string>)array3, array3.Length))
|
||||
{
|
||||
if (currentItem2 == 0)
|
||||
{
|
||||
base.Configuration.Duties.DutyModeOverrides.Remove(num);
|
||||
}
|
||||
else
|
||||
{
|
||||
base.Configuration.Duties.DutyModeOverrides[num] = (EDutyMode)(currentItem2 - 1);
|
||||
array = new string[2] { "Disabled", "Enabled" };
|
||||
currentItem = (base.Configuration.Duties.WhitelistedDutyCfcIds.Contains(num) ? 1 : 0);
|
||||
}
|
||||
if (ImGui.TableNextColumn())
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.TextUnformatted(text);
|
||||
if (ImGui.IsItemHovered() && base.Configuration.Advanced.AdditionalStatusInformation)
|
||||
{
|
||||
TooltipDisposable val3 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
if (((TooltipDisposable)(ref val3)).Alive)
|
||||
{
|
||||
ImGui.TextUnformatted(text);
|
||||
ImGui.Separator();
|
||||
ImU8String text2 = new ImU8String(13, 1);
|
||||
text2.AppendLiteral("TerritoryId: ");
|
||||
text2.AppendFormatted(value2);
|
||||
ImGui.BulletText(text2);
|
||||
ImU8String text3 = new ImU8String(26, 1);
|
||||
text3.AppendLiteral("ContentFinderConditionId: ");
|
||||
text3.AppendFormatted(num);
|
||||
ImGui.BulletText(text3);
|
||||
if (flag)
|
||||
{
|
||||
ImGui.BulletText("Duty Support: Available");
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val3)).Dispose();
|
||||
}
|
||||
}
|
||||
if (runInstancedContentWithAutoDuty && !_autoDutyIpc.HasPath(num))
|
||||
{
|
||||
ImGuiComponents.HelpMarker("This duty is not supported by AutoDuty", FontAwesomeIcon.Times, (Vector4?)ImGuiColors.DalamudRed);
|
||||
}
|
||||
else if (flag && dutyOptions.Notes.Count > 0)
|
||||
{
|
||||
ConfigComponent.DrawNotes(dutyOptions.Enabled, dutyOptions.Notes);
|
||||
}
|
||||
}
|
||||
if (ImGui.TableNextColumn())
|
||||
{
|
||||
ImU8String imU8String2 = new ImU8String(16, 1);
|
||||
imU8String2.AppendLiteral("##DungeonEnabled");
|
||||
imU8String2.AppendFormatted(num);
|
||||
IdDisposable val4 = ImRaii.PushId(imU8String2, true);
|
||||
try
|
||||
{
|
||||
ImGui.SetNextItemWidth(200f);
|
||||
if (ImGui.Combo((ImU8String)string.Empty, ref currentItem, (ReadOnlySpan<string>)array, array.Length))
|
||||
{
|
||||
base.Configuration.Duties.WhitelistedDutyCfcIds.Remove(num);
|
||||
base.Configuration.Duties.BlacklistedDutyCfcIds.Remove(num);
|
||||
if (flag)
|
||||
{
|
||||
switch (currentItem)
|
||||
{
|
||||
case 1:
|
||||
base.Configuration.Duties.WhitelistedDutyCfcIds.Add(num);
|
||||
break;
|
||||
case 2:
|
||||
base.Configuration.Duties.BlacklistedDutyCfcIds.Add(num);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (currentItem == 1)
|
||||
{
|
||||
base.Configuration.Duties.WhitelistedDutyCfcIds.Add(num);
|
||||
}
|
||||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val4)?.Dispose();
|
||||
}
|
||||
}
|
||||
if (!ImGui.TableNextColumn())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
ImU8String imU8String3 = new ImU8String(13, 1);
|
||||
imU8String3.AppendLiteral("##DungeonMode");
|
||||
imU8String3.AppendFormatted(num);
|
||||
IdDisposable val5 = ImRaii.PushId(imU8String3, true);
|
||||
try
|
||||
{
|
||||
EDutyMode value3;
|
||||
bool flag2 = base.Configuration.Duties.DutyModeOverrides.TryGetValue(num, out value3);
|
||||
EDutyMode num2 = (flag2 ? value3 : ((EDutyMode)(-1)));
|
||||
Name = "Use Default";
|
||||
string[] dutyModeLabels = DutyModeLabels;
|
||||
int num3 = 0;
|
||||
string[] array2 = new string[1 + dutyModeLabels.Length];
|
||||
array2[num3] = Name;
|
||||
num3++;
|
||||
ReadOnlySpan<string> readOnlySpan = new ReadOnlySpan<string>(dutyModeLabels);
|
||||
readOnlySpan.CopyTo(new Span<string>(array2).Slice(num3, readOnlySpan.Length));
|
||||
num3 += readOnlySpan.Length;
|
||||
string[] array3 = array2;
|
||||
int currentItem2 = (int)(num2 + 1);
|
||||
ImGui.SetNextItemWidth(150f);
|
||||
if (ImGui.Combo((ImU8String)string.Empty, ref currentItem2, (ReadOnlySpan<string>)array3, array3.Length))
|
||||
{
|
||||
if (currentItem2 == 0)
|
||||
{
|
||||
base.Configuration.Duties.DutyModeOverrides.Remove(num);
|
||||
}
|
||||
else
|
||||
{
|
||||
base.Configuration.Duties.DutyModeOverrides[num] = (EDutyMode)(currentItem2 - 1);
|
||||
}
|
||||
Save();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
EDutyMode eDutyMode = (flag2 ? value3 : base.Configuration.Duties.DefaultDutyMode);
|
||||
ImGui.SetTooltip(flag2 ? ("Override: " + DutyModeLabels[(int)eDutyMode]) : ("Using default: " + DutyModeLabels[(int)eDutyMode]));
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val5)?.Dispose();
|
||||
}
|
||||
Save();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
EDutyMode eDutyMode = (flag2 ? value3 : base.Configuration.Duties.DefaultDutyMode);
|
||||
ImGui.SetTooltip(flag2 ? ("Override: " + DutyModeLabels[(int)eDutyMode]) : ("Using default: " + DutyModeLabels[(int)eDutyMode]));
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TableDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
}
|
||||
else if (base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.Duties.ExpansionHeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
else if (base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.Duties.ExpansionHeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -441,7 +554,8 @@ internal sealed class DutyConfigComponent : ConfigComponent
|
|||
|
||||
private void DrawClipboardButtons()
|
||||
{
|
||||
using (ImRaii.Disabled(base.Configuration.Duties.WhitelistedDutyCfcIds.Count + base.Configuration.Duties.BlacklistedDutyCfcIds.Count + base.Configuration.Duties.DutyModeOverrides.Count == 0))
|
||||
DisabledDisposable val = ImRaii.Disabled(base.Configuration.Duties.WhitelistedDutyCfcIds.Count + base.Configuration.Duties.BlacklistedDutyCfcIds.Count + base.Configuration.Duties.DutyModeOverrides.Count == 0);
|
||||
try
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Copy, "Export to clipboard"))
|
||||
{
|
||||
|
|
@ -451,9 +565,14 @@ internal sealed class DutyConfigComponent : ConfigComponent
|
|||
ImGui.SetClipboardText("qst:duty:" + Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Join(";", first.Concat(second).Concat(second2)))));
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
string text = ImGui.GetClipboardText().Trim();
|
||||
using (ImRaii.Disabled(string.IsNullOrEmpty(text) || !text.StartsWith("qst:duty:", StringComparison.InvariantCulture)))
|
||||
val = ImRaii.Disabled(string.IsNullOrEmpty(text) || !text.StartsWith("qst:duty:", StringComparison.InvariantCulture));
|
||||
try
|
||||
{
|
||||
if (!ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Paste, "Import from Clipboard"))
|
||||
{
|
||||
|
|
@ -492,11 +611,16 @@ internal sealed class DutyConfigComponent : ConfigComponent
|
|||
}
|
||||
Save();
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawResetButton()
|
||||
{
|
||||
using (ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl)))
|
||||
DisabledDisposable val = ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl));
|
||||
try
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Undo, "Reset to default"))
|
||||
{
|
||||
|
|
@ -507,6 +631,10 @@ internal sealed class DutyConfigComponent : ConfigComponent
|
|||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
|
|
|
|||
|
|
@ -95,384 +95,533 @@ internal sealed class GeneralConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem("General###General");
|
||||
if (!endObject)
|
||||
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0147: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_014c: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_014e: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0301: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_042d: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0432: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0434: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0737: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_073c: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_07de: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_07e3: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0885: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_088a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_09ac: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_09b1: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0ad2: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0ad7: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0c5e: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0c63: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0d05: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0d0a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0dac: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0db1: Unknown result type (might be due to invalid IL or missing references)
|
||||
TabItemDisposable val = ImRaii.TabItem((ImU8String)"General###General");
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
int currentItem = (int)base.Configuration.General.CombatModule;
|
||||
if (ImGui.Combo((ImU8String)"Preferred Combat Module", ref currentItem, (ReadOnlySpan<string>)_combatModuleNames, _combatModuleNames.Length))
|
||||
{
|
||||
base.Configuration.General.CombatModule = (Configuration.ECombatModule)currentItem;
|
||||
Save();
|
||||
}
|
||||
int num = Array.FindIndex(_mountIds, (uint x) => x == base.Configuration.General.MountId);
|
||||
if (num == -1)
|
||||
{
|
||||
num = 0;
|
||||
base.Configuration.General.MountId = _mountIds[num];
|
||||
Save();
|
||||
}
|
||||
string text = ((num >= 0 && num < _mountNames.Length) ? _mountNames[num] : "Unknown");
|
||||
if (ImGui.BeginCombo("Preferred Mount", text, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
if (!_mountComboJustOpened)
|
||||
if (!val)
|
||||
{
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_mountComboJustOpened = true;
|
||||
return;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##MountSearch", "Search mounts...", ref _mountSearchText, 256);
|
||||
ImGui.Separator();
|
||||
using (ImRaii.IEndObject endObject2 = ImRaii.Child("##MountScrollArea", new Vector2(0f, 300f), border: false))
|
||||
int currentItem = (int)base.Configuration.General.CombatModule;
|
||||
if (ImGui.Combo((ImU8String)"Preferred Combat Module", ref currentItem, (ReadOnlySpan<string>)_combatModuleNames, _combatModuleNames.Length))
|
||||
{
|
||||
if (endObject2)
|
||||
base.Configuration.General.CombatModule = (Configuration.ECombatModule)currentItem;
|
||||
Save();
|
||||
}
|
||||
int num = Array.FindIndex(_mountIds, (uint x) => x == base.Configuration.General.MountId);
|
||||
if (num == -1)
|
||||
{
|
||||
num = 0;
|
||||
base.Configuration.General.MountId = _mountIds[num];
|
||||
Save();
|
||||
}
|
||||
string text = ((num >= 0 && num < _mountNames.Length) ? _mountNames[num] : "Unknown");
|
||||
if (ImGui.BeginCombo("Preferred Mount", text, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
if (!_mountComboJustOpened)
|
||||
{
|
||||
string value = _mountSearchText.ToUpperInvariant();
|
||||
for (int num2 = 0; num2 < _mountNames.Length; num2++)
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_mountComboJustOpened = true;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##MountSearch", "Search mounts...", ref _mountSearchText, 256);
|
||||
ImGui.Separator();
|
||||
ChildDisposable val2 = ImRaii.Child((ImU8String)"##MountScrollArea", new Vector2(0f, 300f), false);
|
||||
try
|
||||
{
|
||||
if (ChildDisposable.op_Implicit(val2))
|
||||
{
|
||||
if (string.IsNullOrEmpty(_mountSearchText) || _mountNames[num2].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
string value = _mountSearchText.ToUpperInvariant();
|
||||
for (int num2 = 0; num2 < _mountNames.Length; num2++)
|
||||
{
|
||||
bool flag = num2 == num;
|
||||
if (ImGui.Selectable(_mountNames[num2], flag))
|
||||
if (string.IsNullOrEmpty(_mountSearchText) || _mountNames[num2].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
{
|
||||
base.Configuration.General.MountId = _mountIds[num2];
|
||||
Save();
|
||||
_mountSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
bool flag = num2 == num;
|
||||
if (ImGui.Selectable(_mountNames[num2], flag))
|
||||
{
|
||||
base.Configuration.General.MountId = _mountIds[num2];
|
||||
Save();
|
||||
_mountSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
else
|
||||
{
|
||||
_mountComboJustOpened = false;
|
||||
}
|
||||
int currentItem2 = (int)base.Configuration.General.GrandCompany;
|
||||
if (ImGui.Combo((ImU8String)"Preferred Grand Company", ref currentItem2, (ReadOnlySpan<string>)_grandCompanyNames, _grandCompanyNames.Length))
|
||||
{
|
||||
base.Configuration.General.GrandCompany = (FFXIVClientStructs.FFXIV.Client.UI.Agent.GrandCompany)currentItem2;
|
||||
Save();
|
||||
}
|
||||
int currentItem3 = (int)base.Configuration.General.MsqPriority;
|
||||
if (ImGui.Combo((ImU8String)"MSQ Priority", ref currentItem3, (ReadOnlySpan<string>)_msqPriorityNames, _msqPriorityNames.Length))
|
||||
{
|
||||
base.Configuration.General.MsqPriority = (Configuration.EMsqPriorityMode)currentItem3;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("Controls when the Main Scenario Quest (MSQ) is automatically accepted:");
|
||||
ImGui.Spacing();
|
||||
ImGui.BulletText("Always: Auto-accept MSQ immediately");
|
||||
ImGui.BulletText("After Tracked: Complete accepted quests first, then pick up MSQ");
|
||||
ImGui.BulletText("Manual: Never auto-accept MSQ, only do manually accepted quests");
|
||||
}
|
||||
}
|
||||
int num3 = Array.IndexOf(_classJobIds, base.Configuration.General.CombatJob);
|
||||
if (num3 == -1)
|
||||
{
|
||||
base.Configuration.General.CombatJob = EClassJob.Adventurer;
|
||||
Save();
|
||||
num3 = 0;
|
||||
}
|
||||
string text2 = ((num3 >= 0 && num3 < _classJobNames.Length) ? _classJobNames[num3] : "Unknown");
|
||||
if (ImGui.BeginCombo("Preferred Combat Job", text2, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
if (!_classJobComboJustOpened)
|
||||
{
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_classJobComboJustOpened = true;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##CombatJobSearch", "Search combat jobs...", ref _classJobSearchText, 256);
|
||||
ImGui.Separator();
|
||||
using (ImRaii.IEndObject endObject3 = ImRaii.Child("##CombatJobScrollArea", new Vector2(0f, 300f), border: false))
|
||||
{
|
||||
if (endObject3)
|
||||
finally
|
||||
{
|
||||
string value2 = _classJobSearchText.ToUpperInvariant();
|
||||
for (int num4 = 0; num4 < _classJobNames.Length; num4++)
|
||||
{
|
||||
if (string.IsNullOrEmpty(_classJobSearchText) || _classJobNames[num4].ToUpperInvariant().Contains(value2, StringComparison.Ordinal))
|
||||
{
|
||||
bool flag2 = num4 == num3;
|
||||
if (ImGui.Selectable(_classJobNames[num4], flag2))
|
||||
{
|
||||
base.Configuration.General.CombatJob = _classJobIds[num4];
|
||||
Save();
|
||||
_classJobSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag2)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
else
|
||||
{
|
||||
_classJobComboJustOpened = false;
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("UI");
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
bool v = base.Configuration.General.HideInAllInstances;
|
||||
if (ImGui.Checkbox("Hide quest window in all instanced duties", ref v))
|
||||
else
|
||||
{
|
||||
base.Configuration.General.HideInAllInstances = v;
|
||||
_mountComboJustOpened = false;
|
||||
}
|
||||
int currentItem2 = (int)base.Configuration.General.GrandCompany;
|
||||
if (ImGui.Combo((ImU8String)"Preferred Grand Company", ref currentItem2, (ReadOnlySpan<string>)_grandCompanyNames, _grandCompanyNames.Length))
|
||||
{
|
||||
base.Configuration.General.GrandCompany = (FFXIVClientStructs.FFXIV.Client.UI.Agent.GrandCompany)currentItem2;
|
||||
Save();
|
||||
}
|
||||
bool v2 = base.Configuration.General.UseEscToCancelQuesting;
|
||||
if (ImGui.Checkbox("Double tap ESC to cancel questing/movement", ref v2))
|
||||
int currentItem3 = (int)base.Configuration.General.MsqPriority;
|
||||
if (ImGui.Combo((ImU8String)"MSQ Priority", ref currentItem3, (ReadOnlySpan<string>)_msqPriorityNames, _msqPriorityNames.Length))
|
||||
{
|
||||
base.Configuration.General.UseEscToCancelQuesting = v2;
|
||||
Save();
|
||||
}
|
||||
bool v3 = base.Configuration.General.StopOnPlayerInput;
|
||||
if (ImGui.Checkbox("Stop automation when manually moving character", ref v3))
|
||||
{
|
||||
base.Configuration.General.StopOnPlayerInput = v3;
|
||||
Save();
|
||||
}
|
||||
bool v4 = base.Configuration.General.ShowIncompleteSeasonalEvents;
|
||||
if (ImGui.Checkbox("Show details for incomplete seasonal events", ref v4))
|
||||
{
|
||||
base.Configuration.General.ShowIncompleteSeasonalEvents = v4;
|
||||
Save();
|
||||
}
|
||||
bool v5 = base.Configuration.General.HideSeasonalEventsFromJournalProgress;
|
||||
if (ImGui.Checkbox("Hide Seasonal Events from Journal Progress", ref v5))
|
||||
{
|
||||
base.Configuration.General.HideSeasonalEventsFromJournalProgress = v5;
|
||||
Save();
|
||||
}
|
||||
bool v6 = base.Configuration.General.ShowChangelogOnUpdate;
|
||||
if (ImGui.Checkbox("Show changelog window when plugin updates", ref v6))
|
||||
{
|
||||
base.Configuration.General.ShowChangelogOnUpdate = v6;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Questing");
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
bool v7 = base.Configuration.General.AutoSolveQte;
|
||||
if (ImGui.Checkbox("Automatically solve Quick Time Events (QTEs)", ref v7))
|
||||
{
|
||||
base.Configuration.General.AutoSolveQte = v7;
|
||||
base.Configuration.General.MsqPriority = (Configuration.EMsqPriorityMode)currentItem3;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
FontDisposable val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
finally
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("Automatically mashes the button during Active Time Maneuver (ATM)");
|
||||
ImGui.Text("prompts that appear in certain duties and quest battles.");
|
||||
}
|
||||
}
|
||||
bool v8 = base.Configuration.General.AutoSnipe;
|
||||
if (ImGui.Checkbox("Automatically complete snipe quests", ref v8))
|
||||
{
|
||||
base.Configuration.General.AutoSnipe = v8;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
TooltipDisposable val4 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Automatically completes sniping minigames introduced in Stormblood.");
|
||||
ImGui.Text("When enabled, snipe targets are instantly hit without manual aiming.");
|
||||
}
|
||||
}
|
||||
bool v9 = base.Configuration.General.CinemaMode;
|
||||
if (ImGui.Checkbox("Cinema Mode (watch cutscenes)", ref v9))
|
||||
{
|
||||
base.Configuration.General.CinemaMode = v9;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("When enabled, cutscenes will NOT be automatically skipped.");
|
||||
ImGui.Text("This allows you to experience the story while Questionable");
|
||||
ImGui.Text("handles navigation, combat, and other gameplay automation.");
|
||||
ImGui.Text("Controls when the Main Scenario Quest (MSQ) is automatically accepted:");
|
||||
ImGui.Spacing();
|
||||
ImGui.TextColored(new Vector4(0.7f, 0.7f, 0.7f, 1f), "Recommended for first-time story playthroughs.");
|
||||
ImGui.BulletText("Always: Auto-accept MSQ immediately");
|
||||
ImGui.BulletText("After Tracked: Complete accepted quests first, then pick up MSQ");
|
||||
ImGui.BulletText("Manual: Never auto-accept MSQ, only do manually accepted quests");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val4)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v10 = base.Configuration.General.ConfigureTextAdvance;
|
||||
if (ImGui.Checkbox("Automatically configure TextAdvance with the recommended settings", ref v10))
|
||||
int num3 = Array.IndexOf(_classJobIds, base.Configuration.General.CombatJob);
|
||||
if (num3 == -1)
|
||||
{
|
||||
base.Configuration.General.ConfigureTextAdvance = v10;
|
||||
base.Configuration.General.CombatJob = EClassJob.Adventurer;
|
||||
Save();
|
||||
num3 = 0;
|
||||
}
|
||||
bool v11 = base.Configuration.General.SkipLowPriorityDuties;
|
||||
if (ImGui.Checkbox("Unlock certain optional dungeons and raids (instead of waiting for completion)", ref v11))
|
||||
string text2 = ((num3 >= 0 && num3 < _classJobNames.Length) ? _classJobNames[num3] : "Unknown");
|
||||
if (ImGui.BeginCombo("Preferred Combat Job", text2, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
base.Configuration.General.SkipLowPriorityDuties = v11;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
if (!_classJobComboJustOpened)
|
||||
{
|
||||
ImGui.Text("Questionable automatically picks up some optional quests (e.g. for aether currents, or the ARR alliance raids).");
|
||||
ImGui.Text("If this setting is enabled, Questionable will continue with other quests, instead of waiting for manual completion of the duty.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("This affects the following dungeons and raids:");
|
||||
foreach (var lowPriorityContentFinderConditionQuest in _questRegistry.LowPriorityContentFinderConditionQuests)
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_classJobComboJustOpened = true;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##CombatJobSearch", "Search combat jobs...", ref _classJobSearchText, 256);
|
||||
ImGui.Separator();
|
||||
ChildDisposable val5 = ImRaii.Child((ImU8String)"##CombatJobScrollArea", new Vector2(0f, 300f), false);
|
||||
try
|
||||
{
|
||||
if (ChildDisposable.op_Implicit(val5))
|
||||
{
|
||||
if (_territoryData.TryGetContentFinderCondition(lowPriorityContentFinderConditionQuest.ContentFinderConditionId, out TerritoryData.ContentFinderConditionData contentFinderConditionData))
|
||||
string value2 = _classJobSearchText.ToUpperInvariant();
|
||||
for (int num4 = 0; num4 < _classJobNames.Length; num4++)
|
||||
{
|
||||
ImU8String text3 = new ImU8String(0, 1);
|
||||
text3.AppendFormatted(contentFinderConditionData.Name);
|
||||
ImGui.BulletText(text3);
|
||||
if (string.IsNullOrEmpty(_classJobSearchText) || _classJobNames[num4].ToUpperInvariant().Contains(value2, StringComparison.Ordinal))
|
||||
{
|
||||
bool flag2 = num4 == num3;
|
||||
if (ImGui.Selectable(_classJobNames[num4], flag2))
|
||||
{
|
||||
base.Configuration.General.CombatJob = _classJobIds[num4];
|
||||
Save();
|
||||
_classJobSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag2)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ImGui.Spacing();
|
||||
bool v12 = base.Configuration.General.AutoStepRefreshEnabled;
|
||||
if (ImGui.Checkbox("Automatically refresh quest steps when stuck", ref v12))
|
||||
{
|
||||
base.Configuration.General.AutoStepRefreshEnabled = v12;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
finally
|
||||
{
|
||||
ImGui.Text("Questionable will automatically refresh a quest step if it appears to be stuck after the configured delay.");
|
||||
ImGui.Text("This helps resume automated quest completion when interruptions occur.");
|
||||
((ChildDisposable)(ref val5)).Dispose();
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
using (ImRaii.Disabled(!v12))
|
||||
else
|
||||
{
|
||||
ImGui.Indent();
|
||||
int v13 = base.Configuration.General.AutoStepRefreshDelaySeconds;
|
||||
ImGui.SetNextItemWidth(150f);
|
||||
if (ImGui.SliderInt("Refresh delay (seconds)", ref v13, 10, 180))
|
||||
_classJobComboJustOpened = false;
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("UI");
|
||||
IndentDisposable val6 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
bool v = base.Configuration.General.HideInAllInstances;
|
||||
if (ImGui.Checkbox("Hide quest window in all instanced duties", ref v))
|
||||
{
|
||||
base.Configuration.General.AutoStepRefreshDelaySeconds = v13;
|
||||
base.Configuration.General.HideInAllInstances = v;
|
||||
Save();
|
||||
}
|
||||
bool v2 = base.Configuration.General.UseEscToCancelQuesting;
|
||||
if (ImGui.Checkbox("Double tap ESC to cancel questing/movement", ref v2))
|
||||
{
|
||||
base.Configuration.General.UseEscToCancelQuesting = v2;
|
||||
Save();
|
||||
}
|
||||
bool v3 = base.Configuration.General.StopOnPlayerInput;
|
||||
if (ImGui.Checkbox("Stop automation when manually moving character", ref v3))
|
||||
{
|
||||
base.Configuration.General.StopOnPlayerInput = v3;
|
||||
Save();
|
||||
}
|
||||
bool v4 = base.Configuration.General.ShowIncompleteSeasonalEvents;
|
||||
if (ImGui.Checkbox("Show details for incomplete seasonal events", ref v4))
|
||||
{
|
||||
base.Configuration.General.ShowIncompleteSeasonalEvents = v4;
|
||||
Save();
|
||||
}
|
||||
bool v5 = base.Configuration.General.HideSeasonalEventsFromJournalProgress;
|
||||
if (ImGui.Checkbox("Hide Seasonal Events from Journal Progress", ref v5))
|
||||
{
|
||||
base.Configuration.General.HideSeasonalEventsFromJournalProgress = v5;
|
||||
Save();
|
||||
}
|
||||
bool v6 = base.Configuration.General.ShowChangelogOnUpdate;
|
||||
if (ImGui.Checkbox("Show changelog window when plugin updates", ref v6))
|
||||
{
|
||||
base.Configuration.General.ShowChangelogOnUpdate = v6;
|
||||
Save();
|
||||
}
|
||||
Vector4 col = new Vector4(0.7f, 0.7f, 0.7f, 1f);
|
||||
ImU8String text4 = new ImU8String(77, 1);
|
||||
text4.AppendLiteral("Quest steps will refresh automatically after ");
|
||||
text4.AppendFormatted(v13);
|
||||
text4.AppendLiteral(" seconds if no progress is made.");
|
||||
ImGui.TextColored(in col, text4);
|
||||
ImGui.Unindent();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
finally
|
||||
{
|
||||
((IDisposable)val6)?.Dispose();
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Priority Quest Management");
|
||||
bool v14 = base.Configuration.General.PersistPriorityQuestsBetweenSessions;
|
||||
if (ImGui.Checkbox("Save priority quests between sessions", ref v14))
|
||||
ImGui.Text("Questing");
|
||||
val6 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
base.Configuration.General.PersistPriorityQuestsBetweenSessions = v14;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
bool v7 = base.Configuration.General.AutoSolveQte;
|
||||
if (ImGui.Checkbox("Automatically solve Quick Time Events (QTEs)", ref v7))
|
||||
{
|
||||
ImGui.Text("When enabled, your priority quest list will be saved and restored");
|
||||
ImGui.Text("when the plugin reloads or the game restarts.");
|
||||
base.Configuration.General.AutoSolveQte = v7;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val7 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Automatically mashes the button during Active Time Maneuver (ATM)");
|
||||
ImGui.Text("prompts that appear in certain duties and quest battles.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val7)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v8 = base.Configuration.General.AutoSnipe;
|
||||
if (ImGui.Checkbox("Automatically complete snipe quests", ref v8))
|
||||
{
|
||||
base.Configuration.General.AutoSnipe = v8;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val8 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Automatically completes sniping minigames introduced in Stormblood.");
|
||||
ImGui.Text("When enabled, snipe targets are instantly hit without manual aiming.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val8)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v9 = base.Configuration.General.CinemaMode;
|
||||
if (ImGui.Checkbox("Cinema Mode (watch cutscenes)", ref v9))
|
||||
{
|
||||
base.Configuration.General.CinemaMode = v9;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val9 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("When enabled, cutscenes will NOT be automatically skipped.");
|
||||
ImGui.Text("This allows you to experience the story while Questionable");
|
||||
ImGui.Text("handles navigation, combat, and other gameplay automation.");
|
||||
ImGui.Spacing();
|
||||
ImGui.TextColored(new Vector4(0.7f, 0.7f, 0.7f, 1f), "Recommended for first-time story playthroughs.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val9)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v10 = base.Configuration.General.ConfigureTextAdvance;
|
||||
if (ImGui.Checkbox("Automatically configure TextAdvance with the recommended settings", ref v10))
|
||||
{
|
||||
base.Configuration.General.ConfigureTextAdvance = v10;
|
||||
Save();
|
||||
}
|
||||
bool v11 = base.Configuration.General.SkipLowPriorityDuties;
|
||||
if (ImGui.Checkbox("Unlock certain optional dungeons and raids (instead of waiting for completion)", ref v11))
|
||||
{
|
||||
base.Configuration.General.SkipLowPriorityDuties = v11;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val10 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Questionable automatically picks up some optional quests (e.g. for aether currents, or the ARR alliance raids).");
|
||||
ImGui.Text("If this setting is enabled, Questionable will continue with other quests, instead of waiting for manual completion of the duty.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("This affects the following dungeons and raids:");
|
||||
foreach (var lowPriorityContentFinderConditionQuest in _questRegistry.LowPriorityContentFinderConditionQuests)
|
||||
{
|
||||
if (_territoryData.TryGetContentFinderCondition(lowPriorityContentFinderConditionQuest.ContentFinderConditionId, out TerritoryData.ContentFinderConditionData contentFinderConditionData))
|
||||
{
|
||||
ImU8String text3 = new ImU8String(0, 1);
|
||||
text3.AppendFormatted(contentFinderConditionData.Name);
|
||||
ImGui.BulletText(text3);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val10)).Dispose();
|
||||
}
|
||||
}
|
||||
ImGui.Spacing();
|
||||
bool v12 = base.Configuration.General.AutoStepRefreshEnabled;
|
||||
if (ImGui.Checkbox("Automatically refresh quest steps when stuck", ref v12))
|
||||
{
|
||||
base.Configuration.General.AutoStepRefreshEnabled = v12;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val11 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Questionable will automatically refresh a quest step if it appears to be stuck after the configured delay.");
|
||||
ImGui.Text("This helps resume automated quest completion when interruptions occur.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val11)).Dispose();
|
||||
}
|
||||
}
|
||||
DisabledDisposable val12 = ImRaii.Disabled(!v12);
|
||||
try
|
||||
{
|
||||
ImGui.Indent();
|
||||
int v13 = base.Configuration.General.AutoStepRefreshDelaySeconds;
|
||||
ImGui.SetNextItemWidth(150f);
|
||||
if (ImGui.SliderInt("Refresh delay (seconds)", ref v13, 10, 180))
|
||||
{
|
||||
base.Configuration.General.AutoStepRefreshDelaySeconds = v13;
|
||||
Save();
|
||||
}
|
||||
Vector4 col = new Vector4(0.7f, 0.7f, 0.7f, 1f);
|
||||
ImU8String text4 = new ImU8String(77, 1);
|
||||
text4.AppendLiteral("Quest steps will refresh automatically after ");
|
||||
text4.AppendFormatted(v13);
|
||||
text4.AppendLiteral(" seconds if no progress is made.");
|
||||
ImGui.TextColored(in col, text4);
|
||||
ImGui.Unindent();
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val12)?.Dispose();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Priority Quest Management");
|
||||
bool v14 = base.Configuration.General.PersistPriorityQuestsBetweenSessions;
|
||||
if (ImGui.Checkbox("Save priority quests between sessions", ref v14))
|
||||
{
|
||||
base.Configuration.General.PersistPriorityQuestsBetweenSessions = v14;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val13 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("When enabled, your priority quest list will be saved and restored");
|
||||
ImGui.Text("when the plugin reloads or the game restarts.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val13)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v15 = base.Configuration.General.ClearPriorityQuestsOnLogout;
|
||||
if (ImGui.Checkbox("Clear priority quests on character logout", ref v15))
|
||||
{
|
||||
base.Configuration.General.ClearPriorityQuestsOnLogout = v15;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val14 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Clears the priority queue when your character logs out.");
|
||||
ImGui.Text("This also clears the saved list if persistence is enabled.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val14)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v16 = base.Configuration.General.ClearPriorityQuestsOnCompletion;
|
||||
if (ImGui.Checkbox("Remove priority quests when completed", ref v16))
|
||||
{
|
||||
base.Configuration.General.ClearPriorityQuestsOnCompletion = v16;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val15 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Automatically removes completed quests from your priority queue.");
|
||||
ImGui.Text("This helps keep your priority list clean without manual intervention.");
|
||||
return;
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val15)).Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
bool v15 = base.Configuration.General.ClearPriorityQuestsOnLogout;
|
||||
if (ImGui.Checkbox("Clear priority quests on character logout", ref v15))
|
||||
finally
|
||||
{
|
||||
base.Configuration.General.ClearPriorityQuestsOnLogout = v15;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("Clears the priority queue when your character logs out.");
|
||||
ImGui.Text("This also clears the saved list if persistence is enabled.");
|
||||
}
|
||||
}
|
||||
bool v16 = base.Configuration.General.ClearPriorityQuestsOnCompletion;
|
||||
if (ImGui.Checkbox("Remove priority quests when completed", ref v16))
|
||||
{
|
||||
base.Configuration.General.ClearPriorityQuestsOnCompletion = v16;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("Automatically removes completed quests from your priority queue.");
|
||||
ImGui.Text("This helps keep your priority list clean without manual intervention.");
|
||||
return;
|
||||
}
|
||||
((IDisposable)val6)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
static GeneralConfigComponent()
|
||||
|
|
|
|||
|
|
@ -30,69 +30,97 @@ internal sealed class NotificationConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem("Notifications###Notifications");
|
||||
if (!endObject)
|
||||
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0141: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0148: Unknown result type (might be due to invalid IL or missing references)
|
||||
TabItemDisposable val = ImRaii.TabItem((ImU8String)"Notifications###Notifications");
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
bool v = base.Configuration.Notifications.Enabled;
|
||||
if (ImGui.Checkbox("Enable notifications when manual interaction is required", ref v))
|
||||
{
|
||||
base.Configuration.Notifications.Enabled = v;
|
||||
Save();
|
||||
}
|
||||
using (ImRaii.Disabled(!base.Configuration.Notifications.Enabled))
|
||||
{
|
||||
using (ImRaii.PushIndent())
|
||||
if (!val)
|
||||
{
|
||||
int num = Array.IndexOf(_xivChatTypes, base.Configuration.Notifications.ChatType);
|
||||
if (num == -1)
|
||||
return;
|
||||
}
|
||||
bool v = base.Configuration.Notifications.Enabled;
|
||||
if (ImGui.Checkbox("Enable notifications when manual interaction is required", ref v))
|
||||
{
|
||||
base.Configuration.Notifications.Enabled = v;
|
||||
Save();
|
||||
}
|
||||
DisabledDisposable val2 = ImRaii.Disabled(!base.Configuration.Notifications.Enabled);
|
||||
try
|
||||
{
|
||||
IndentDisposable val3 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
num = 0;
|
||||
}
|
||||
string text = ((num >= 0 && num < _chatTypeNames.Length) ? _chatTypeNames[num] : "Unknown");
|
||||
if (ImGui.BeginCombo("Chat channel", text, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
if (!_chatChannelComboJustOpened)
|
||||
int num = Array.IndexOf(_xivChatTypes, base.Configuration.Notifications.ChatType);
|
||||
if (num == -1)
|
||||
{
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_chatChannelComboJustOpened = true;
|
||||
num = 0;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##ChatChannelSearch", "Search chat channels...", ref _chatChannelSearchText, 256);
|
||||
ImGui.Separator();
|
||||
using (ImRaii.IEndObject endObject2 = ImRaii.Child("##ChatChannelScrollArea", new Vector2(0f, 300f), border: false))
|
||||
string text = ((num >= 0 && num < _chatTypeNames.Length) ? _chatTypeNames[num] : "Unknown");
|
||||
if (ImGui.BeginCombo("Chat channel", text, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
if (endObject2)
|
||||
if (!_chatChannelComboJustOpened)
|
||||
{
|
||||
string value = _chatChannelSearchText.ToUpperInvariant();
|
||||
for (int i = 0; i < _chatTypeNames.Length; i++)
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_chatChannelComboJustOpened = true;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##ChatChannelSearch", "Search chat channels...", ref _chatChannelSearchText, 256);
|
||||
ImGui.Separator();
|
||||
ChildDisposable val4 = ImRaii.Child((ImU8String)"##ChatChannelScrollArea", new Vector2(0f, 300f), false);
|
||||
try
|
||||
{
|
||||
if (ChildDisposable.op_Implicit(val4))
|
||||
{
|
||||
if (string.IsNullOrEmpty(_chatChannelSearchText) || _chatTypeNames[i].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
string value = _chatChannelSearchText.ToUpperInvariant();
|
||||
for (int i = 0; i < _chatTypeNames.Length; i++)
|
||||
{
|
||||
bool flag = i == num;
|
||||
if (ImGui.Selectable(_chatTypeNames[i], flag))
|
||||
if (string.IsNullOrEmpty(_chatChannelSearchText) || _chatTypeNames[i].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
{
|
||||
base.Configuration.Notifications.ChatType = _xivChatTypes[i];
|
||||
Save();
|
||||
_chatChannelSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
bool flag = i == num;
|
||||
if (ImGui.Selectable(_chatTypeNames[i], flag))
|
||||
{
|
||||
base.Configuration.Notifications.ChatType = _xivChatTypes[i];
|
||||
Save();
|
||||
_chatChannelSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val4)).Dispose();
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
else
|
||||
{
|
||||
_chatChannelComboJustOpened = false;
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
else
|
||||
finally
|
||||
{
|
||||
_chatChannelComboJustOpened = false;
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,22 +74,32 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem("Dependencies###Plugins");
|
||||
if (!(!endObject))
|
||||
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
|
||||
TabItemDisposable val = ImRaii.TabItem((ImU8String)"Dependencies###Plugins");
|
||||
try
|
||||
{
|
||||
Draw(out var allRequiredInstalled);
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Spacing();
|
||||
if (allRequiredInstalled)
|
||||
if (!(!val))
|
||||
{
|
||||
ImGui.TextColored(ImGuiColors.ParsedGreen, "All required plugins are installed.");
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui.TextColored(ImGuiColors.DalamudRed, "Required plugins are missing, Questionable will not work properly.");
|
||||
Draw(out var allRequiredInstalled);
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Spacing();
|
||||
if (allRequiredInstalled)
|
||||
{
|
||||
ImGui.TextColored(ImGuiColors.ParsedGreen, "All required plugins are installed.");
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui.TextColored(ImGuiColors.DalamudRed, "Required plugins are missing, Questionable will not work properly.");
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public void Draw(out bool allRequiredInstalled)
|
||||
|
|
@ -101,20 +111,27 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
}
|
||||
ImGui.Text("Questionable requires the following plugins to work:");
|
||||
allRequiredInstalled = true;
|
||||
using (ImRaii.PushIndent())
|
||||
IndentDisposable val = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
foreach (PluginInfo requiredPlugin in RequiredPlugins)
|
||||
{
|
||||
allRequiredInstalled &= DrawPlugin(requiredPlugin, checklistPadding);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Spacing();
|
||||
ImGui.Text("Questionable supports multiple rotation/combat plugins, please pick the one\nyou want to use:");
|
||||
using (ImRaii.PushIndent())
|
||||
val = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
using (ImRaii.Disabled(_combatController.IsRunning))
|
||||
DisabledDisposable val2 = ImRaii.Disabled(_combatController.IsRunning);
|
||||
try
|
||||
{
|
||||
if (ImGui.RadioButton("No rotation/combat plugin (combat must be done manually)", _configuration.General.CombatModule == Questionable.Configuration.ECombatModule.None))
|
||||
{
|
||||
|
|
@ -125,23 +142,37 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
allRequiredInstalled &= DrawCombatPlugin(Questionable.Configuration.ECombatModule.RotationSolverReborn, checklistPadding);
|
||||
allRequiredInstalled &= DrawCombatPlugin(Questionable.Configuration.ECombatModule.WrathCombo, checklistPadding);
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Spacing();
|
||||
ImGui.Text("The following plugins are recommended, but not required:");
|
||||
using (ImRaii.PushIndent())
|
||||
val = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
foreach (PluginInfo recommendedPlugin in _recommendedPlugins)
|
||||
{
|
||||
DrawPlugin(recommendedPlugin, checklistPadding);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private bool DrawPlugin(PluginInfo plugin, float checklistPadding)
|
||||
{
|
||||
using (ImRaii.PushId("plugin_" + plugin.DisplayName))
|
||||
IdDisposable val = ImRaii.PushId((ImU8String)("plugin_" + plugin.DisplayName), true);
|
||||
try
|
||||
{
|
||||
IExposedPlugin exposedPlugin = FindInstalledPlugin(plugin);
|
||||
bool flag = exposedPlugin != null;
|
||||
|
|
@ -154,13 +185,18 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
DrawPluginDetails(plugin, checklistPadding, flag);
|
||||
return flag;
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private bool DrawCombatPlugin(Configuration.ECombatModule combatModule, float checklistPadding)
|
||||
{
|
||||
ImGui.Spacing();
|
||||
PluginInfo pluginInfo = CombatPlugins[combatModule];
|
||||
using (ImRaii.PushId("plugin_" + pluginInfo.DisplayName))
|
||||
IdDisposable val = ImRaii.PushId((ImU8String)("plugin_" + pluginInfo.DisplayName), true);
|
||||
try
|
||||
{
|
||||
IExposedPlugin exposedPlugin = FindInstalledPlugin(pluginInfo);
|
||||
bool flag = exposedPlugin != null;
|
||||
|
|
@ -185,11 +221,16 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
DrawPluginDetails(pluginInfo, checklistPadding, flag);
|
||||
return flag || _configuration.General.CombatModule != combatModule;
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawPluginDetails(PluginInfo plugin, float checklistPadding, bool isInstalled)
|
||||
{
|
||||
using (ImRaii.PushIndent(checklistPadding))
|
||||
IndentDisposable val = ImRaii.PushIndent(checklistPadding, true, true);
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(plugin.Details))
|
||||
{
|
||||
|
|
@ -205,10 +246,15 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
_uiUtils.ChecklistItem(item.DisplayName, isInstalled && flag2);
|
||||
if (!string.IsNullOrEmpty(item.Details))
|
||||
{
|
||||
using (ImRaii.PushIndent(checklistPadding))
|
||||
IndentDisposable val2 = ImRaii.PushIndent(checklistPadding, true, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextUnformatted(item.Details);
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -239,6 +285,10 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
ImGuiComponents.HelpMarker("Available on official Dalamud Repository");
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private IExposedPlugin? FindInstalledPlugin(PluginInfo pluginInfo)
|
||||
|
|
|
|||
|
|
@ -289,431 +289,576 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem("Quest Battles###QuestBattles");
|
||||
if (!endObject)
|
||||
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0135: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_013a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_013c: Unknown result type (might be due to invalid IL or missing references)
|
||||
TabItemDisposable val = ImRaii.TabItem((ImU8String)"Quest Battles###QuestBattles");
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
bool v = base.Configuration.SinglePlayerDuties.RunSoloInstancesWithBossMod;
|
||||
if (ImGui.Checkbox("Run quest battles with BossMod", ref v))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.RunSoloInstancesWithBossMod = v;
|
||||
Save();
|
||||
}
|
||||
using (ImRaii.PushIndent(ImGui.GetFrameHeight() + ImGui.GetStyle().ItemInnerSpacing.X))
|
||||
{
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed))
|
||||
if (!val)
|
||||
{
|
||||
ImGui.TextUnformatted("Work in Progress:");
|
||||
ImGui.BulletText("Will always use BossMod for combat (ignoring the configured combat module).");
|
||||
ImGui.BulletText("Only a small subset of quest battles have been tested - most of which are in the MSQ.");
|
||||
ImGui.BulletText("When retrying a failed battle, it will always start at 'Normal' difficulty.");
|
||||
ImGui.BulletText("Please don't enable this option when using a BossMod fork (such as Reborn);\nwith the missing combat module configuration, it is unlikely to be compatible.");
|
||||
return;
|
||||
}
|
||||
bool v = base.Configuration.SinglePlayerDuties.RunSoloInstancesWithBossMod;
|
||||
if (ImGui.Checkbox("Run quest battles with BossMod", ref v))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.RunSoloInstancesWithBossMod = v;
|
||||
Save();
|
||||
}
|
||||
IndentDisposable val2 = ImRaii.PushIndent(ImGui.GetFrameHeight() + ImGui.GetStyle().ItemInnerSpacing.X, true, true);
|
||||
try
|
||||
{
|
||||
ColorDisposable val3 = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextUnformatted("Work in Progress:");
|
||||
ImGui.BulletText("Will always use BossMod for combat (ignoring the configured combat module).");
|
||||
ImGui.BulletText("Only a small subset of quest battles have been tested - most of which are in the MSQ.");
|
||||
ImGui.BulletText("When retrying a failed battle, it will always start at 'Normal' difficulty.");
|
||||
ImGui.BulletText("Please don't enable this option when using a BossMod fork (such as Reborn);\nwith the missing combat module configuration, it is unlikely to be compatible.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
ImGui.Separator();
|
||||
using (ImRaii.Disabled(!v))
|
||||
{
|
||||
ImGui.Text("Questionable includes a default list of quest battles that work if BossMod is installed.");
|
||||
ImGui.Text("The included list of quest battles can change with each update.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("You can override the settings for each individual quest battle:");
|
||||
using ImRaii.IEndObject endObject2 = ImRaii.TabBar("QuestionableConfigTabs");
|
||||
if (endObject2)
|
||||
DisabledDisposable val4 = ImRaii.Disabled(!v);
|
||||
try
|
||||
{
|
||||
DrawMainScenarioConfigTable();
|
||||
DrawJobQuestConfigTable();
|
||||
DrawRoleQuestConfigTable();
|
||||
DrawOtherQuestConfigTable();
|
||||
ImGui.Text("Questionable includes a default list of quest battles that work if BossMod is installed.");
|
||||
ImGui.Text("The included list of quest battles can change with each update.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("You can override the settings for each individual quest battle:");
|
||||
TabBarDisposable val5 = ImRaii.TabBar((ImU8String)"QuestionableConfigTabs");
|
||||
try
|
||||
{
|
||||
if (TabBarDisposable.op_Implicit(val5))
|
||||
{
|
||||
DrawMainScenarioConfigTable();
|
||||
DrawJobQuestConfigTable();
|
||||
DrawRoleQuestConfigTable();
|
||||
DrawOtherQuestConfigTable();
|
||||
}
|
||||
DrawEnableAllButton();
|
||||
ImGui.SameLine();
|
||||
DrawClipboardButtons();
|
||||
ImGui.SameLine();
|
||||
DrawResetButton();
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabBarDisposable)(ref val5)).Dispose();
|
||||
}
|
||||
}
|
||||
DrawEnableAllButton();
|
||||
ImGui.SameLine();
|
||||
DrawClipboardButtons();
|
||||
ImGui.SameLine();
|
||||
DrawResetButton();
|
||||
finally
|
||||
{
|
||||
((IDisposable)val4)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawMainScenarioConfigTable()
|
||||
{
|
||||
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
|
||||
(int enabledCount, int totalCount) mainScenarioQuestCounts = GetMainScenarioQuestCounts();
|
||||
int item = mainScenarioQuestCounts.enabledCount;
|
||||
int item2 = mainScenarioQuestCounts.totalCount;
|
||||
ImU8String label = new ImU8String(30, 2);
|
||||
label.AppendLiteral("Main Scenario Quests (");
|
||||
label.AppendFormatted(item);
|
||||
label.AppendLiteral("/");
|
||||
label.AppendFormatted(item2);
|
||||
label.AppendLiteral(")###MSQ");
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem(label);
|
||||
if (!endObject)
|
||||
ImU8String imU8String = new ImU8String(30, 2);
|
||||
imU8String.AppendLiteral("Main Scenario Quests (");
|
||||
imU8String.AppendFormatted(item);
|
||||
imU8String.AppendLiteral("/");
|
||||
imU8String.AppendFormatted(item2);
|
||||
imU8String.AppendLiteral(")###MSQ");
|
||||
TabItemDisposable val = ImRaii.TabItem(imU8String);
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
using ImRaii.IEndObject endObject2 = BeginChildArea();
|
||||
if (!endObject2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts = GetQuestBattleCounts(_startingCityBattles[EAetheryteLocation.Limsa]);
|
||||
int item3 = questBattleCounts.enabledCount;
|
||||
int item4 = questBattleCounts.totalCount;
|
||||
string obj = $"Limsa Lominsa ({ConfigComponent.FormatLevel(5)} - {ConfigComponent.FormatLevel(14)}) ({item3}/{item4})";
|
||||
string key = "Limsa";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
if (!val)
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = true;
|
||||
Save();
|
||||
return;
|
||||
}
|
||||
DrawQuestTable("LimsaLominsa", _startingCityBattles[EAetheryteLocation.Limsa]);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts2 = GetQuestBattleCounts(_startingCityBattles[EAetheryteLocation.Gridania]);
|
||||
int item5 = questBattleCounts2.enabledCount;
|
||||
int item6 = questBattleCounts2.totalCount;
|
||||
string obj2 = $"Gridania ({ConfigComponent.FormatLevel(5)} - {ConfigComponent.FormatLevel(14)}) ({item5}/{item6})";
|
||||
string key2 = "Gridania";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj2))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false))
|
||||
ChildDisposable val2 = BeginChildArea();
|
||||
try
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key2] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable("Gridania", _startingCityBattles[EAetheryteLocation.Gridania]);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key2] = false;
|
||||
Save();
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts3 = GetQuestBattleCounts(_startingCityBattles[EAetheryteLocation.Uldah]);
|
||||
int item7 = questBattleCounts3.enabledCount;
|
||||
int item8 = questBattleCounts3.totalCount;
|
||||
string obj3 = $"Ul'dah ({ConfigComponent.FormatLevel(4)} - {ConfigComponent.FormatLevel(14)}) ({item7}/{item8})";
|
||||
string key3 = "Uldah";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key3, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj3))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key3, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key3] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable("Uldah", _startingCityBattles[EAetheryteLocation.Uldah]);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key3, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key3] = false;
|
||||
Save();
|
||||
}
|
||||
EExpansionVersion[] values = Enum.GetValues<EExpansionVersion>();
|
||||
for (int i = 0; i < values.Length; i++)
|
||||
{
|
||||
EExpansionVersion eExpansionVersion = values[i];
|
||||
if (!_mainScenarioBattles.TryGetValue(eExpansionVersion, out List<SinglePlayerDutyInfo> value))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts4 = GetQuestBattleCounts(value);
|
||||
int item9 = questBattleCounts4.enabledCount;
|
||||
int item10 = questBattleCounts4.totalCount;
|
||||
string obj4 = $"{eExpansionVersion.ToFriendlyString()} ({item9}/{item10})";
|
||||
string key4 = eExpansionVersion.ToString();
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key4, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj4))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key4, defaultValue: false))
|
||||
if (!val2)
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key4] = true;
|
||||
return;
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts = GetQuestBattleCounts(_startingCityBattles[EAetheryteLocation.Limsa]);
|
||||
int item3 = questBattleCounts.enabledCount;
|
||||
int item4 = questBattleCounts.totalCount;
|
||||
string obj = $"Limsa Lominsa ({ConfigComponent.FormatLevel(5)} - {ConfigComponent.FormatLevel(14)}) ({item3}/{item4})";
|
||||
string key = "Limsa";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable("LimsaLominsa", _startingCityBattles[EAetheryteLocation.Limsa]);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable($"Duties{eExpansionVersion}", value);
|
||||
(int enabledCount, int totalCount) questBattleCounts2 = GetQuestBattleCounts(_startingCityBattles[EAetheryteLocation.Gridania]);
|
||||
int item5 = questBattleCounts2.enabledCount;
|
||||
int item6 = questBattleCounts2.totalCount;
|
||||
string obj2 = $"Gridania ({ConfigComponent.FormatLevel(5)} - {ConfigComponent.FormatLevel(14)}) ({item5}/{item6})";
|
||||
string key2 = "Gridania";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj2))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key2] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable("Gridania", _startingCityBattles[EAetheryteLocation.Gridania]);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key2] = false;
|
||||
Save();
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts3 = GetQuestBattleCounts(_startingCityBattles[EAetheryteLocation.Uldah]);
|
||||
int item7 = questBattleCounts3.enabledCount;
|
||||
int item8 = questBattleCounts3.totalCount;
|
||||
string obj3 = $"Ul'dah ({ConfigComponent.FormatLevel(4)} - {ConfigComponent.FormatLevel(14)}) ({item7}/{item8})";
|
||||
string key3 = "Uldah";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key3, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj3))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key3, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key3] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable("Uldah", _startingCityBattles[EAetheryteLocation.Uldah]);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key3, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key3] = false;
|
||||
Save();
|
||||
}
|
||||
EExpansionVersion[] values = Enum.GetValues<EExpansionVersion>();
|
||||
for (int i = 0; i < values.Length; i++)
|
||||
{
|
||||
EExpansionVersion eExpansionVersion = values[i];
|
||||
if (!_mainScenarioBattles.TryGetValue(eExpansionVersion, out List<SinglePlayerDutyInfo> value))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts4 = GetQuestBattleCounts(value);
|
||||
int item9 = questBattleCounts4.enabledCount;
|
||||
int item10 = questBattleCounts4.totalCount;
|
||||
string obj4 = $"{eExpansionVersion.ToFriendlyString()} ({item9}/{item10})";
|
||||
string key4 = eExpansionVersion.ToString();
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key4, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj4))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key4, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key4] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable($"Duties{eExpansionVersion}", value);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key4, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key4] = false;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key4, defaultValue: false))
|
||||
finally
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key4] = false;
|
||||
Save();
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawJobQuestConfigTable()
|
||||
{
|
||||
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
|
||||
(int enabledCount, int totalCount) jobQuestCounts = GetJobQuestCounts();
|
||||
int item = jobQuestCounts.enabledCount;
|
||||
int item2 = jobQuestCounts.totalCount;
|
||||
ImU8String label = new ImU8String(32, 2);
|
||||
label.AppendLiteral("Class/Job Quests (");
|
||||
label.AppendFormatted(item);
|
||||
label.AppendLiteral("/");
|
||||
label.AppendFormatted(item2);
|
||||
label.AppendLiteral(")###JobQuests");
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem(label);
|
||||
if (!endObject)
|
||||
ImU8String imU8String = new ImU8String(32, 2);
|
||||
imU8String.AppendLiteral("Class/Job Quests (");
|
||||
imU8String.AppendFormatted(item);
|
||||
imU8String.AppendLiteral("/");
|
||||
imU8String.AppendFormatted(item2);
|
||||
imU8String.AppendLiteral(")###JobQuests");
|
||||
TabItemDisposable val = ImRaii.TabItem(imU8String);
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
using ImRaii.IEndObject endObject2 = BeginChildArea();
|
||||
if (!endObject2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
int num = 0;
|
||||
foreach (var (eClassJob, num2) in _classJobUtils.SortedClassJobs)
|
||||
{
|
||||
if (eClassJob.IsCrafter() || eClassJob.IsGatherer() || !_jobQuestBattles.TryGetValue(eClassJob, out List<SinglePlayerDutyInfo> value))
|
||||
if (!val)
|
||||
{
|
||||
continue;
|
||||
return;
|
||||
}
|
||||
if (num2 != num)
|
||||
ChildDisposable val2 = BeginChildArea();
|
||||
try
|
||||
{
|
||||
num = num2;
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Spacing();
|
||||
}
|
||||
string text = eClassJob.ToFriendlyString();
|
||||
if (eClassJob.IsClass())
|
||||
{
|
||||
text = text + " / " + eClassJob.AsJob().ToFriendlyString();
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts = GetQuestBattleCounts(value);
|
||||
int item3 = questBattleCounts.enabledCount;
|
||||
int item4 = questBattleCounts.totalCount;
|
||||
string obj = $"{text} ({item3}/{item4})";
|
||||
string key = eClassJob.ToString();
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
if (!val2)
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = true;
|
||||
Save();
|
||||
return;
|
||||
}
|
||||
int num = 0;
|
||||
foreach (var (eClassJob, num2) in _classJobUtils.SortedClassJobs)
|
||||
{
|
||||
if (eClassJob.IsCrafter() || eClassJob.IsGatherer() || !_jobQuestBattles.TryGetValue(eClassJob, out List<SinglePlayerDutyInfo> value))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (num2 != num)
|
||||
{
|
||||
num = num2;
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Spacing();
|
||||
}
|
||||
string text = eClassJob.ToFriendlyString();
|
||||
if (eClassJob.IsClass())
|
||||
{
|
||||
text = text + " / " + eClassJob.AsJob().ToFriendlyString();
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts = GetQuestBattleCounts(value);
|
||||
int item3 = questBattleCounts.enabledCount;
|
||||
int item4 = questBattleCounts.totalCount;
|
||||
string obj = $"{text} ({item3}/{item4})";
|
||||
string key = eClassJob.ToString();
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable($"JobQuests{eClassJob}", value);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
DrawQuestTable($"JobQuests{eClassJob}", value);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
finally
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = false;
|
||||
Save();
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawRoleQuestConfigTable()
|
||||
{
|
||||
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
|
||||
(int enabledCount, int totalCount) roleQuestCounts = GetRoleQuestCounts();
|
||||
int item = roleQuestCounts.enabledCount;
|
||||
int item2 = roleQuestCounts.totalCount;
|
||||
ImU8String label = new ImU8String(28, 2);
|
||||
label.AppendLiteral("Role Quests (");
|
||||
label.AppendFormatted(item);
|
||||
label.AppendLiteral("/");
|
||||
label.AppendFormatted(item2);
|
||||
label.AppendLiteral(")###RoleQuests");
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem(label);
|
||||
if (!endObject)
|
||||
ImU8String imU8String = new ImU8String(28, 2);
|
||||
imU8String.AppendLiteral("Role Quests (");
|
||||
imU8String.AppendFormatted(item);
|
||||
imU8String.AppendLiteral("/");
|
||||
imU8String.AppendFormatted(item2);
|
||||
imU8String.AppendLiteral(")###RoleQuests");
|
||||
TabItemDisposable val = ImRaii.TabItem(imU8String);
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
using ImRaii.IEndObject endObject2 = BeginChildArea();
|
||||
if (!endObject2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach (var (eClassJob, value) in RoleQuestCategories)
|
||||
{
|
||||
if (!_roleQuestBattles.TryGetValue(eClassJob, out List<SinglePlayerDutyInfo> value2))
|
||||
if (!val)
|
||||
{
|
||||
continue;
|
||||
return;
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts = GetQuestBattleCounts(value2);
|
||||
int item3 = questBattleCounts.enabledCount;
|
||||
int item4 = questBattleCounts.totalCount;
|
||||
string obj = $"{value} ({item3}/{item4})";
|
||||
string key = $"Role_{eClassJob}";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
ChildDisposable val2 = BeginChildArea();
|
||||
try
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
if (!val2)
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = true;
|
||||
return;
|
||||
}
|
||||
foreach (var (eClassJob, value) in RoleQuestCategories)
|
||||
{
|
||||
if (!_roleQuestBattles.TryGetValue(eClassJob, out List<SinglePlayerDutyInfo> value2))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts = GetQuestBattleCounts(value2);
|
||||
int item3 = questBattleCounts.enabledCount;
|
||||
int item4 = questBattleCounts.totalCount;
|
||||
string obj = $"{value} ({item3}/{item4})";
|
||||
string key = $"Role_{eClassJob}";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable($"RoleQuests{eClassJob}", value2);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts2 = GetQuestBattleCounts(_otherRoleQuestBattles);
|
||||
int item5 = questBattleCounts2.enabledCount;
|
||||
int item6 = questBattleCounts2.totalCount;
|
||||
string obj2 = $"General Role Quests ({item5}/{item6})";
|
||||
string key2 = "Role_General";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj2))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key2] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable("RoleQuestsGeneral", _otherRoleQuestBattles);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key2] = false;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable($"RoleQuests{eClassJob}", value2);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
finally
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = false;
|
||||
Save();
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
}
|
||||
(int enabledCount, int totalCount) questBattleCounts2 = GetQuestBattleCounts(_otherRoleQuestBattles);
|
||||
int item5 = questBattleCounts2.enabledCount;
|
||||
int item6 = questBattleCounts2.totalCount;
|
||||
string obj2 = $"General Role Quests ({item5}/{item6})";
|
||||
string key2 = "Role_General";
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj2))
|
||||
finally
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key2] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable("RoleQuestsGeneral", _otherRoleQuestBattles);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key2, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key2] = false;
|
||||
Save();
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawOtherQuestConfigTable()
|
||||
{
|
||||
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
|
||||
(int enabledCount, int totalCount) otherQuestCounts = GetOtherQuestCounts();
|
||||
int item = otherQuestCounts.enabledCount;
|
||||
int item2 = otherQuestCounts.totalCount;
|
||||
ImU8String label = new ImU8String(29, 2);
|
||||
label.AppendLiteral("Other Quests (");
|
||||
label.AppendFormatted(item);
|
||||
label.AppendLiteral("/");
|
||||
label.AppendFormatted(item2);
|
||||
label.AppendLiteral(")###MiscQuests");
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem(label);
|
||||
if (!endObject)
|
||||
ImU8String imU8String = new ImU8String(29, 2);
|
||||
imU8String.AppendLiteral("Other Quests (");
|
||||
imU8String.AppendFormatted(item);
|
||||
imU8String.AppendLiteral("/");
|
||||
imU8String.AppendFormatted(item2);
|
||||
imU8String.AppendLiteral(")###MiscQuests");
|
||||
TabItemDisposable val = ImRaii.TabItem(imU8String);
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
using ImRaii.IEndObject endObject2 = BeginChildArea();
|
||||
if (!endObject2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach (var otherQuestBattle in _otherQuestBattles)
|
||||
{
|
||||
string item3 = otherQuestBattle.Label;
|
||||
List<SinglePlayerDutyInfo> item4 = otherQuestBattle.Item2;
|
||||
(int enabledCount, int totalCount) questBattleCounts = GetQuestBattleCounts(item4);
|
||||
int item5 = questBattleCounts.enabledCount;
|
||||
int item6 = questBattleCounts.totalCount;
|
||||
string obj = $"{item3} ({item5}/{item6})";
|
||||
string key = "Other_" + item3;
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
if (!val)
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
return;
|
||||
}
|
||||
ChildDisposable val2 = BeginChildArea();
|
||||
try
|
||||
{
|
||||
if (!val2)
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = true;
|
||||
Save();
|
||||
return;
|
||||
}
|
||||
foreach (var otherQuestBattle in _otherQuestBattles)
|
||||
{
|
||||
string item3 = otherQuestBattle.Label;
|
||||
List<SinglePlayerDutyInfo> item4 = otherQuestBattle.Item2;
|
||||
(int enabledCount, int totalCount) questBattleCounts = GetQuestBattleCounts(item4);
|
||||
int item5 = questBattleCounts.enabledCount;
|
||||
int item6 = questBattleCounts.totalCount;
|
||||
string obj = $"{item3} ({item5}/{item6})";
|
||||
string key = "Other_" + item3;
|
||||
ImGui.SetNextItemOpen(base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false), ImGuiCond.Always);
|
||||
if (ImGui.CollapsingHeader(obj))
|
||||
{
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable("Other" + item3, item4);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
DrawQuestTable("Other" + item3, item4);
|
||||
}
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
finally
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = false;
|
||||
Save();
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawQuestTable(string label, IReadOnlyList<SinglePlayerDutyInfo> dutyInfos)
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.Table(label, 2, ImGuiTableFlags.SizingFixedFit);
|
||||
if (!ImRaii.IEndObject.op_True(endObject))
|
||||
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
|
||||
TableDisposable val = ImRaii.Table((ImU8String)label, 2, ImGuiTableFlags.SizingFixedFit);
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
ImGui.TableSetupColumn("Quest", ImGuiTableColumnFlags.WidthStretch);
|
||||
ImGui.TableSetupColumn("Options", ImGuiTableColumnFlags.WidthFixed, 200f);
|
||||
foreach (SinglePlayerDutyInfo dutyInfo in dutyInfos)
|
||||
{
|
||||
ImGui.TableNextRow();
|
||||
string[] array = (dutyInfo.EnabledByDefault ? SupportedCfcOptions : UnsupportedCfcOptions);
|
||||
int currentItem = 0;
|
||||
if (base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Contains(dutyInfo.ContentFinderConditionId))
|
||||
if (!TableDisposable.op_Implicit(val))
|
||||
{
|
||||
currentItem = 1;
|
||||
return;
|
||||
}
|
||||
if (base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Contains(dutyInfo.ContentFinderConditionId))
|
||||
ImGui.TableSetupColumn("Quest", ImGuiTableColumnFlags.WidthStretch);
|
||||
ImGui.TableSetupColumn("Options", ImGuiTableColumnFlags.WidthFixed, 200f);
|
||||
foreach (SinglePlayerDutyInfo dutyInfo in dutyInfos)
|
||||
{
|
||||
currentItem = 2;
|
||||
}
|
||||
if (ImGui.TableNextColumn())
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.TextUnformatted(dutyInfo.Name);
|
||||
if (ImGui.IsItemHovered() && base.Configuration.Advanced.AdditionalStatusInformation)
|
||||
ImGui.TableNextRow();
|
||||
string[] array = (dutyInfo.EnabledByDefault ? SupportedCfcOptions : UnsupportedCfcOptions);
|
||||
int currentItem = 0;
|
||||
if (base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Contains(dutyInfo.ContentFinderConditionId))
|
||||
{
|
||||
using ImRaii.IEndObject endObject2 = ImRaii.Tooltip();
|
||||
if (endObject2)
|
||||
currentItem = 1;
|
||||
}
|
||||
if (base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Contains(dutyInfo.ContentFinderConditionId))
|
||||
{
|
||||
currentItem = 2;
|
||||
}
|
||||
if (ImGui.TableNextColumn())
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.TextUnformatted(dutyInfo.Name);
|
||||
if (ImGui.IsItemHovered() && base.Configuration.Advanced.AdditionalStatusInformation)
|
||||
{
|
||||
ImGui.TextUnformatted(dutyInfo.Name);
|
||||
ImGui.Separator();
|
||||
ImU8String text = new ImU8String(13, 1);
|
||||
text.AppendLiteral("TerritoryId: ");
|
||||
text.AppendFormatted(dutyInfo.TerritoryId);
|
||||
ImGui.BulletText(text);
|
||||
ImU8String text2 = new ImU8String(26, 1);
|
||||
text2.AppendLiteral("ContentFinderConditionId: ");
|
||||
text2.AppendFormatted(dutyInfo.ContentFinderConditionId);
|
||||
ImGui.BulletText(text2);
|
||||
}
|
||||
}
|
||||
if (!dutyInfo.Enabled)
|
||||
{
|
||||
ImGuiComponents.HelpMarker("Questionable doesn't include support for this quest.", FontAwesomeIcon.Times, ImGuiColors.DalamudRed);
|
||||
}
|
||||
else if (dutyInfo.Notes.Count > 0)
|
||||
{
|
||||
ConfigComponent.DrawNotes(dutyInfo.EnabledByDefault, dutyInfo.Notes);
|
||||
}
|
||||
}
|
||||
if (!ImGui.TableNextColumn())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
ImU8String id = new ImU8String(6, 1);
|
||||
id.AppendLiteral("##Duty");
|
||||
id.AppendFormatted(dutyInfo.ContentFinderConditionId);
|
||||
using (ImRaii.PushId(id))
|
||||
{
|
||||
using (ImRaii.Disabled(!dutyInfo.Enabled))
|
||||
{
|
||||
ImGui.SetNextItemWidth(200f);
|
||||
if (ImGui.Combo((ImU8String)string.Empty, ref currentItem, (ReadOnlySpan<string>)array, array.Length))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Remove(dutyInfo.ContentFinderConditionId);
|
||||
base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Remove(dutyInfo.ContentFinderConditionId);
|
||||
switch (currentItem)
|
||||
TooltipDisposable val2 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
case 1:
|
||||
base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Add(dutyInfo.ContentFinderConditionId);
|
||||
break;
|
||||
case 2:
|
||||
base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Add(dutyInfo.ContentFinderConditionId);
|
||||
break;
|
||||
if (((TooltipDisposable)(ref val2)).Alive)
|
||||
{
|
||||
ImGui.TextUnformatted(dutyInfo.Name);
|
||||
ImGui.Separator();
|
||||
ImU8String text = new ImU8String(13, 1);
|
||||
text.AppendLiteral("TerritoryId: ");
|
||||
text.AppendFormatted(dutyInfo.TerritoryId);
|
||||
ImGui.BulletText(text);
|
||||
ImU8String text2 = new ImU8String(26, 1);
|
||||
text2.AppendLiteral("ContentFinderConditionId: ");
|
||||
text2.AppendFormatted(dutyInfo.ContentFinderConditionId);
|
||||
ImGui.BulletText(text2);
|
||||
}
|
||||
}
|
||||
Save();
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
}
|
||||
if (!dutyInfo.Enabled)
|
||||
{
|
||||
ImGuiComponents.HelpMarker("Questionable doesn't include support for this quest.", FontAwesomeIcon.Times, (Vector4?)ImGuiColors.DalamudRed);
|
||||
}
|
||||
else if (dutyInfo.Notes.Count > 0)
|
||||
{
|
||||
ConfigComponent.DrawNotes(dutyInfo.EnabledByDefault, dutyInfo.Notes);
|
||||
}
|
||||
}
|
||||
if (!ImGui.TableNextColumn())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
ImU8String imU8String = new ImU8String(6, 1);
|
||||
imU8String.AppendLiteral("##Duty");
|
||||
imU8String.AppendFormatted(dutyInfo.ContentFinderConditionId);
|
||||
IdDisposable val3 = ImRaii.PushId(imU8String, true);
|
||||
try
|
||||
{
|
||||
DisabledDisposable val4 = ImRaii.Disabled(!dutyInfo.Enabled);
|
||||
try
|
||||
{
|
||||
ImGui.SetNextItemWidth(200f);
|
||||
if (ImGui.Combo((ImU8String)string.Empty, ref currentItem, (ReadOnlySpan<string>)array, array.Length))
|
||||
{
|
||||
base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Remove(dutyInfo.ContentFinderConditionId);
|
||||
base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Remove(dutyInfo.ContentFinderConditionId);
|
||||
switch (currentItem)
|
||||
{
|
||||
case 1:
|
||||
base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Add(dutyInfo.ContentFinderConditionId);
|
||||
break;
|
||||
case 2:
|
||||
base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Add(dutyInfo.ContentFinderConditionId);
|
||||
break;
|
||||
}
|
||||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val4)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TableDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private static ImRaii.IEndObject BeginChildArea()
|
||||
private static ChildDisposable BeginChildArea()
|
||||
{
|
||||
return ImRaii.Child("DutyConfiguration", new Vector2(725f, 400f), border: true);
|
||||
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
|
||||
return ImRaii.Child((ImU8String)"DutyConfiguration", new Vector2(725f, 400f), true);
|
||||
}
|
||||
|
||||
private void DrawEnableAllButton()
|
||||
|
|
@ -736,7 +881,8 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
|
|||
|
||||
private void DrawClipboardButtons()
|
||||
{
|
||||
using (ImRaii.Disabled(base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Count + base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Count == 0))
|
||||
DisabledDisposable val = ImRaii.Disabled(base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Count + base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Count == 0);
|
||||
try
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Copy, "Export to clipboard"))
|
||||
{
|
||||
|
|
@ -745,9 +891,14 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
|
|||
ImGui.SetClipboardText("qst:single:" + Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Join(";", first.Concat(second)))));
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
string text = ImGui.GetClipboardText().Trim();
|
||||
using (ImRaii.Disabled(string.IsNullOrEmpty(text) || !text.StartsWith("qst:single:", StringComparison.InvariantCulture)))
|
||||
val = ImRaii.Disabled(string.IsNullOrEmpty(text) || !text.StartsWith("qst:single:", StringComparison.InvariantCulture));
|
||||
try
|
||||
{
|
||||
if (!ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Paste, "Import from Clipboard"))
|
||||
{
|
||||
|
|
@ -771,11 +922,16 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
|
|||
}
|
||||
Save();
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawResetButton()
|
||||
{
|
||||
using (ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl)))
|
||||
DisabledDisposable val = ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl));
|
||||
try
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Undo, "Reset to default"))
|
||||
{
|
||||
|
|
@ -784,6 +940,10 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
|
|||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
|
|
|
|||
|
|
@ -67,112 +67,142 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem("Stop###StopConditionns");
|
||||
if (!endObject)
|
||||
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
|
||||
TabItemDisposable val = ImRaii.TabItem((ImU8String)"Stop###StopConditionns");
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
bool v = base.Configuration.Stop.Enabled;
|
||||
if (ImGui.Checkbox("Enable stop conditions", ref v))
|
||||
{
|
||||
base.Configuration.Stop.Enabled = v;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
ImGuiComponents.HelpMarker("Pause: Stops automation when condition is met, but allows resuming past it.\nStop: True stop, blocks automation from starting/resuming if condition is already met.");
|
||||
ImGui.Separator();
|
||||
using (ImRaii.Disabled(!v))
|
||||
{
|
||||
ImGui.Text("Stop when character level reaches:");
|
||||
int currentItem = (int)base.Configuration.Stop.LevelStopMode;
|
||||
ImGui.SetNextItemWidth(100f);
|
||||
if (ImGui.Combo((ImU8String)"##LevelMode", ref currentItem, (ReadOnlySpan<string>)StopModeNames, StopModeNames.Length))
|
||||
if (!val)
|
||||
{
|
||||
base.Configuration.Stop.LevelStopMode = (Configuration.EStopConditionMode)currentItem;
|
||||
return;
|
||||
}
|
||||
bool v = base.Configuration.Stop.Enabled;
|
||||
if (ImGui.Checkbox("Enable stop conditions", ref v))
|
||||
{
|
||||
base.Configuration.Stop.Enabled = v;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.Disabled(base.Configuration.Stop.LevelStopMode == Questionable.Configuration.EStopConditionMode.Off))
|
||||
ImGuiComponents.HelpMarker("Pause: Stops automation when condition is met, but allows resuming past it.\nStop: True stop, blocks automation from starting/resuming if condition is already met.");
|
||||
ImGui.Separator();
|
||||
DisabledDisposable val2 = ImRaii.Disabled(!v);
|
||||
try
|
||||
{
|
||||
int data = base.Configuration.Stop.TargetLevel;
|
||||
ImGui.Text("Stop when character level reaches:");
|
||||
int currentItem = (int)base.Configuration.Stop.LevelStopMode;
|
||||
ImGui.SetNextItemWidth(100f);
|
||||
if (ImGui.InputInt("Target level", ref data, 1, 5))
|
||||
if (ImGui.Combo((ImU8String)"##LevelMode", ref currentItem, (ReadOnlySpan<string>)StopModeNames, StopModeNames.Length))
|
||||
{
|
||||
base.Configuration.Stop.TargetLevel = Math.Max(1, Math.Min(100, data));
|
||||
base.Configuration.Stop.LevelStopMode = (Configuration.EStopConditionMode)currentItem;
|
||||
Save();
|
||||
}
|
||||
int num = _objectTable.LocalPlayer?.Level ?? 0;
|
||||
if (num > 0)
|
||||
ImGui.SameLine();
|
||||
DisabledDisposable val3 = ImRaii.Disabled(base.Configuration.Stop.LevelStopMode == Questionable.Configuration.EStopConditionMode.Off);
|
||||
try
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImU8String text = new ImU8String(11, 1);
|
||||
text.AppendLiteral("(Current: ");
|
||||
text.AppendFormatted(num);
|
||||
text.AppendLiteral(")");
|
||||
ImGui.TextDisabled(text);
|
||||
}
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Stop on quest sequence (global):");
|
||||
int currentItem2 = (int)base.Configuration.Stop.SequenceStopMode;
|
||||
ImGui.SetNextItemWidth(100f);
|
||||
if (ImGui.Combo((ImU8String)"##SequenceMode", ref currentItem2, (ReadOnlySpan<string>)StopModeNames, StopModeNames.Length))
|
||||
{
|
||||
base.Configuration.Stop.SequenceStopMode = (Configuration.EStopConditionMode)currentItem2;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.Disabled(base.Configuration.Stop.SequenceStopMode == Questionable.Configuration.EStopConditionMode.Off))
|
||||
{
|
||||
int data2 = base.Configuration.Stop.TargetSequence;
|
||||
ImGui.SetNextItemWidth(100f);
|
||||
if (ImGui.InputInt("Target sequence", ref data2, 1, 1))
|
||||
{
|
||||
base.Configuration.Stop.TargetSequence = Math.Max(0, Math.Min(255, data2));
|
||||
Save();
|
||||
}
|
||||
QuestController.QuestProgress currentQuest = _questController.CurrentQuest;
|
||||
if (currentQuest != null)
|
||||
{
|
||||
int sequence = currentQuest.Sequence;
|
||||
ImGui.SameLine();
|
||||
ImU8String text2 = new ImU8String(11, 1);
|
||||
text2.AppendLiteral("(Current: ");
|
||||
text2.AppendFormatted(sequence);
|
||||
text2.AppendLiteral(")");
|
||||
ImGui.TextDisabled(text2);
|
||||
}
|
||||
}
|
||||
ImGui.TextWrapped("Note: Individual quest sequences below override this global setting.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Stop when completing quests (or reaching specific sequences):");
|
||||
DrawCurrentlyAcceptedQuests();
|
||||
_questSelector.DrawSelection();
|
||||
List<ElementId> questsToStopAfter = base.Configuration.Stop.QuestsToStopAfter;
|
||||
if (questsToStopAfter.Count > 0)
|
||||
{
|
||||
using (ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl)))
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Trash, "Clear All"))
|
||||
int data = base.Configuration.Stop.TargetLevel;
|
||||
ImGui.SetNextItemWidth(100f);
|
||||
if (ImGui.InputInt("Target level", ref data, 1, 5))
|
||||
{
|
||||
foreach (ElementId item in questsToStopAfter)
|
||||
{
|
||||
string key = item.ToString();
|
||||
base.Configuration.Stop.QuestSequences.Remove(key);
|
||||
base.Configuration.Stop.QuestStopModes.Remove(key);
|
||||
}
|
||||
base.Configuration.Stop.QuestsToStopAfter.Clear();
|
||||
base.Configuration.Stop.TargetLevel = Math.Max(1, Math.Min(100, data));
|
||||
Save();
|
||||
}
|
||||
int num = _objectTable.LocalPlayer?.Level ?? 0;
|
||||
if (num > 0)
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImU8String text = new ImU8String(11, 1);
|
||||
text.AppendLiteral("(Current: ");
|
||||
text.AppendFormatted(num);
|
||||
text.AppendLiteral(")");
|
||||
ImGui.TextDisabled(text);
|
||||
}
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
finally
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("(Drag arrow buttons to reorder)");
|
||||
ImGui.Text("Stop on quest sequence (global):");
|
||||
int currentItem2 = (int)base.Configuration.Stop.SequenceStopMode;
|
||||
ImGui.SetNextItemWidth(100f);
|
||||
if (ImGui.Combo((ImU8String)"##SequenceMode", ref currentItem2, (ReadOnlySpan<string>)StopModeNames, StopModeNames.Length))
|
||||
{
|
||||
base.Configuration.Stop.SequenceStopMode = (Configuration.EStopConditionMode)currentItem2;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.Disabled(base.Configuration.Stop.SequenceStopMode == Questionable.Configuration.EStopConditionMode.Off);
|
||||
try
|
||||
{
|
||||
int data2 = base.Configuration.Stop.TargetSequence;
|
||||
ImGui.SetNextItemWidth(100f);
|
||||
if (ImGui.InputInt("Target sequence", ref data2, 1, 1))
|
||||
{
|
||||
base.Configuration.Stop.TargetSequence = Math.Max(0, Math.Min(255, data2));
|
||||
Save();
|
||||
}
|
||||
QuestController.QuestProgress currentQuest = _questController.CurrentQuest;
|
||||
if (currentQuest != null)
|
||||
{
|
||||
int sequence = currentQuest.Sequence;
|
||||
ImGui.SameLine();
|
||||
ImU8String text2 = new ImU8String(11, 1);
|
||||
text2.AppendLiteral("(Current: ");
|
||||
text2.AppendFormatted(sequence);
|
||||
text2.AppendLiteral(")");
|
||||
ImGui.TextDisabled(text2);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
ImGui.TextWrapped("Note: Individual quest sequences below override this global setting.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Stop when completing quests (or reaching specific sequences):");
|
||||
DrawCurrentlyAcceptedQuests();
|
||||
_questSelector.DrawSelection();
|
||||
List<ElementId> questsToStopAfter = base.Configuration.Stop.QuestsToStopAfter;
|
||||
if (questsToStopAfter.Count > 0)
|
||||
{
|
||||
val3 = ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl));
|
||||
try
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Trash, "Clear All"))
|
||||
{
|
||||
foreach (ElementId item in questsToStopAfter)
|
||||
{
|
||||
string key = item.ToString();
|
||||
base.Configuration.Stop.QuestSequences.Remove(key);
|
||||
base.Configuration.Stop.QuestStopModes.Remove(key);
|
||||
}
|
||||
base.Configuration.Stop.QuestsToStopAfter.Clear();
|
||||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("(Drag arrow buttons to reorder)");
|
||||
}
|
||||
DrawStopQuestList(questsToStopAfter);
|
||||
}
|
||||
DrawStopQuestList(questsToStopAfter);
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -191,10 +221,11 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
{
|
||||
continue;
|
||||
}
|
||||
ImU8String id = new ImU8String(5, 1);
|
||||
id.AppendLiteral("Quest");
|
||||
id.AppendFormatted(elementId);
|
||||
using (ImRaii.PushId(id))
|
||||
ImU8String imU8String = new ImU8String(5, 1);
|
||||
imU8String.AppendLiteral("Quest");
|
||||
imU8String.AppendFormatted(elementId);
|
||||
IdDisposable val = ImRaii.PushId(imU8String, true);
|
||||
try
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImU8String text = new ImU8String(1, 1);
|
||||
|
|
@ -252,7 +283,8 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
{
|
||||
ImGui.SetTooltip("Stop at specific sequence (unchecked = stop on quest completion)");
|
||||
}
|
||||
using (ImRaii.Disabled(!v))
|
||||
DisabledDisposable val2 = ImRaii.Disabled(!v);
|
||||
try
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.Text("Seq:");
|
||||
|
|
@ -268,12 +300,21 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
if (questsToStopAfter.Count > 1)
|
||||
{
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
FontDisposable val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.SameLine(ImGui.GetContentRegionAvail().X + ImGui.GetStyle().WindowPadding.X - ImGui.CalcTextSize(FontAwesomeIcon.ArrowsUpDown.ToIconString()).X - ImGui.CalcTextSize(FontAwesomeIcon.Times.ToIconString()).X - ImGui.GetStyle().FramePadding.X * 4f - ImGui.GetStyle().ItemSpacing.X);
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (_draggedItem == elementId)
|
||||
{
|
||||
ImGuiComponents.IconButton("##Move", FontAwesomeIcon.ArrowsUpDown, ImGui.ColorConvertU32ToFloat4(ImGui.GetColorU32(ImGuiCol.ButtonActive)));
|
||||
|
|
@ -290,16 +331,25 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
}
|
||||
else
|
||||
{
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
FontDisposable val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.SameLine(ImGui.GetContentRegionAvail().X + ImGui.GetStyle().WindowPadding.X - ImGui.CalcTextSize(FontAwesomeIcon.Times.ToIconString()).X - ImGui.GetStyle().FramePadding.X * 2f);
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
}
|
||||
if (ImGuiComponents.IconButton($"##Remove{i}", FontAwesomeIcon.Times))
|
||||
{
|
||||
quest = quest3;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
Vector2 item2 = new Vector2(item.X + x, ImGui.GetCursorScreenPos().Y - ImGui.GetStyle().ItemSpacing.Y + 2f);
|
||||
list.Add((item, item2));
|
||||
}
|
||||
|
|
@ -340,20 +390,25 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
|
||||
private void DrawCurrentlyAcceptedQuests()
|
||||
{
|
||||
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
|
||||
List<Quest> currentlyAcceptedQuests = GetCurrentlyAcceptedQuests();
|
||||
ImGui.Text("Currently Accepted Quests:");
|
||||
using (ImRaii.IEndObject endObject = ImRaii.Child("AcceptedQuestsList", new Vector2(-1f, 120f), border: true))
|
||||
ChildDisposable val = ImRaii.Child((ImU8String)"AcceptedQuestsList", new Vector2(-1f, 120f), true);
|
||||
try
|
||||
{
|
||||
if (endObject)
|
||||
if (ChildDisposable.op_Implicit(val))
|
||||
{
|
||||
if (currentlyAcceptedQuests.Count > 0)
|
||||
{
|
||||
foreach (Quest item in currentlyAcceptedQuests)
|
||||
{
|
||||
ImU8String id = new ImU8String(13, 1);
|
||||
id.AppendLiteral("AcceptedQuest");
|
||||
id.AppendFormatted(item.Id);
|
||||
using (ImRaii.PushId(id))
|
||||
ImU8String imU8String = new ImU8String(13, 1);
|
||||
imU8String.AppendLiteral("AcceptedQuest");
|
||||
imU8String.AppendFormatted(item.Id);
|
||||
IdDisposable val2 = ImRaii.PushId(imU8String, true);
|
||||
try
|
||||
{
|
||||
(Vector4, FontAwesomeIcon, string) questStyle = _uiUtils.GetQuestStyle(item.Id);
|
||||
bool flag = false;
|
||||
|
|
@ -371,11 +426,17 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
{
|
||||
_questTooltipComponent.Draw(item.Info);
|
||||
}
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
FontDisposable val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.SameLine(ImGui.GetContentRegionAvail().X + ImGui.GetStyle().WindowPadding.X - ImGui.CalcTextSize(FontAwesomeIcon.Plus.ToIconString()).X - ImGui.GetStyle().FramePadding.X * 2f);
|
||||
}
|
||||
using (ImRaii.Disabled(flag2))
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
DisabledDisposable val4 = ImRaii.Disabled(flag2);
|
||||
try
|
||||
{
|
||||
if (ImGuiComponents.IconButton($"##Add{item.Id}", FontAwesomeIcon.Plus))
|
||||
{
|
||||
|
|
@ -384,11 +445,19 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val4)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip(flag2 ? "Quest already added to stop conditions" : "Add this quest to stop conditions");
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -399,6 +468,10 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val)).Dispose();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue