muffin v7.5.1
This commit is contained in:
parent
a6481e7b9a
commit
965a736f84
59 changed files with 4112 additions and 5059 deletions
|
|
@ -51,175 +51,136 @@ internal sealed class BlacklistConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
//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
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem("Blacklist###QuestBlacklist");
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
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.ChildDisposable childDisposable = ImRaii.Child("BlacklistedQuestsList", new Vector2(-1f, 200f), border: true))
|
||||
{
|
||||
if ((bool)childDisposable)
|
||||
{
|
||||
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))
|
||||
if (blacklistedQuests.Count > 0)
|
||||
{
|
||||
if (blacklistedQuests.Count > 0)
|
||||
ElementId elementId = null;
|
||||
int num = 0;
|
||||
foreach (ElementId item in blacklistedQuests.OrderBy((ElementId x) => x.ToString()))
|
||||
{
|
||||
ElementId elementId = null;
|
||||
int num = 0;
|
||||
foreach (ElementId item in blacklistedQuests.OrderBy((ElementId x) => x.ToString()))
|
||||
if (!_questRegistry.TryGetQuest(item, out Quest quest))
|
||||
{
|
||||
IdDisposable val3;
|
||||
if (!_questRegistry.TryGetQuest(item, out Quest quest))
|
||||
ImU8String id = new ImU8String(5, 1);
|
||||
id.AppendLiteral("Quest");
|
||||
id.AppendFormatted(item);
|
||||
using (ImRaii.PushId(id))
|
||||
{
|
||||
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();
|
||||
ImGui.TextUnformatted(quest.Info.Name);
|
||||
flag |= ImGui.IsItemHovered();
|
||||
if (flag)
|
||||
{
|
||||
_questTooltipComponent.Draw(quest.Info);
|
||||
}
|
||||
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;
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
ImGui.SetTooltip("Remove from blacklist");
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
num++;
|
||||
continue;
|
||||
}
|
||||
if (elementId != null)
|
||||
ImU8String id2 = new ImU8String(5, 1);
|
||||
id2.AppendLiteral("Quest");
|
||||
id2.AppendFormatted(item);
|
||||
using (ImRaii.PushId(id2))
|
||||
{
|
||||
base.Configuration.General.BlacklistedQuests.Remove(elementId);
|
||||
Save();
|
||||
(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");
|
||||
}
|
||||
}
|
||||
num++;
|
||||
}
|
||||
else
|
||||
if (elementId != null)
|
||||
{
|
||||
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.Remove(elementId);
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
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"))
|
||||
else
|
||||
{
|
||||
base.Configuration.General.BlacklistedQuests.Clear();
|
||||
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();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val4)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
}
|
||||
}
|
||||
finally
|
||||
_questSelector.DrawSelection();
|
||||
if (blacklistedQuests.Count <= 0)
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
return;
|
||||
}
|
||||
using (ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl)))
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Trash, "Clear All"))
|
||||
{
|
||||
base.Configuration.General.BlacklistedQuests.Clear();
|
||||
Save();
|
||||
}
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
}
|
||||
}
|
||||
|
||||
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:");
|
||||
ChildDisposable val = ImRaii.Child((ImU8String)"AcceptedQuestsList", new Vector2(-1f, 100f), true);
|
||||
try
|
||||
using (ImRaii.ChildDisposable childDisposable = ImRaii.Child("AcceptedQuestsList", new Vector2(-1f, 100f), border: true))
|
||||
{
|
||||
if (ChildDisposable.op_Implicit(val))
|
||||
if ((bool)childDisposable)
|
||||
{
|
||||
if (currentlyAcceptedQuests.Count > 0)
|
||||
{
|
||||
foreach (Quest item in currentlyAcceptedQuests)
|
||||
{
|
||||
ImU8String imU8String = new ImU8String(13, 1);
|
||||
imU8String.AppendLiteral("AcceptedQuest");
|
||||
imU8String.AppendFormatted(item.Id);
|
||||
IdDisposable val2 = ImRaii.PushId(imU8String, true);
|
||||
try
|
||||
ImU8String id = new ImU8String(13, 1);
|
||||
id.AppendLiteral("AcceptedQuest");
|
||||
id.AppendFormatted(item.Id);
|
||||
using (ImRaii.PushId(id))
|
||||
{
|
||||
(Vector4, FontAwesomeIcon, string) questStyle = _uiUtils.GetQuestStyle(item.Id);
|
||||
bool flag = false;
|
||||
|
|
@ -238,8 +199,7 @@ 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);
|
||||
DisabledDisposable val3 = ImRaii.Disabled(flag2);
|
||||
try
|
||||
using (ImRaii.Disabled(flag2))
|
||||
{
|
||||
if (ImGuiComponents.IconButton($"##Blacklist{item.Id}", FontAwesomeIcon.Ban))
|
||||
{
|
||||
|
|
@ -247,19 +207,11 @@ 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
|
||||
|
|
@ -270,10 +222,6 @@ internal sealed class BlacklistConfigComponent : ConfigComponent
|
|||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val)).Dispose();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Game.Text;
|
||||
|
|
@ -59,52 +58,31 @@ internal abstract class ConfigComponent
|
|||
|
||||
protected static void DrawNotes(bool enabledByDefault, IEnumerable<string> notes)
|
||||
{
|
||||
//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
|
||||
using ImRaii.ColorDisposable colorDisposable = new ImRaii.ColorDisposable();
|
||||
colorDisposable.Push(ImGuiCol.TextDisabled, (!enabledByDefault) ? ImGuiColors.DalamudYellow : ImGuiColors.ParsedBlue);
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
val.Push(ImGuiCol.TextDisabled, (!enabledByDefault) ? ImGuiColors.DalamudYellow : ImGuiColors.ParsedBlue, true);
|
||||
ImGui.SameLine();
|
||||
FontDisposable val2 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
if (!enabledByDefault)
|
||||
{
|
||||
if (!enabledByDefault)
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.ExclamationTriangle.ToIconString());
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
ImGui.TextDisabled(FontAwesomeIcon.ExclamationTriangle.ToIconString());
|
||||
}
|
||||
finally
|
||||
else
|
||||
{
|
||||
((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();
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
}
|
||||
finally
|
||||
if (!ImGui.IsItemHovered())
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
return;
|
||||
}
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.TextColored(ImGuiColors.DalamudYellow, "While testing, the following issues have been found:");
|
||||
foreach (string note in notes)
|
||||
{
|
||||
ImGui.BulletText(note);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
using System;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface.Colors;
|
||||
using Dalamud.Interface.Components;
|
||||
|
|
@ -16,150 +15,118 @@ internal sealed class DebugConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
//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
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem("Advanced###Debug");
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
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())
|
||||
{
|
||||
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
|
||||
bool v2 = base.Configuration.Advanced.CombatDataOverlay;
|
||||
if (ImGui.Checkbox("Enable combat data overlay", ref v2))
|
||||
{
|
||||
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();
|
||||
base.Configuration.Advanced.CombatDataOverlay = v2;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
}
|
||||
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");
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
bool v6 = base.Configuration.Advanced.DisableAutoDutyBareMode;
|
||||
if (ImGui.Checkbox("Use Pre-Loop/Loop/Post-Loop settings", ref v6))
|
||||
{
|
||||
((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;
|
||||
base.Configuration.Advanced.DisableAutoDutyBareMode = v6;
|
||||
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();
|
||||
}
|
||||
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
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Quest/Interaction Skips");
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
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.");
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawChocoboSettings()
|
||||
{
|
||||
ImGui.Text("Chocobo Settings");
|
||||
IndentDisposable val = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.Text("Chocobo Name:");
|
||||
|
|
@ -180,10 +147,6 @@ 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,398 +106,285 @@ internal sealed class DutyConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
//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
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem("Duties###Duties");
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
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))
|
||||
{
|
||||
return;
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed))
|
||||
{
|
||||
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.");
|
||||
}
|
||||
}
|
||||
bool v = base.Configuration.Duties.RunInstancedContentWithAutoDuty;
|
||||
if (ImGui.Checkbox("Run instanced content with AutoDuty and BossMod", ref v))
|
||||
ImGui.Spacing();
|
||||
bool v2 = base.Configuration.Duties.RunLevelingModeWhenUnderleveled;
|
||||
if (ImGui.Checkbox("Run AutoDuty Leveling mode when underleveled for MSQ", ref v2))
|
||||
{
|
||||
base.Configuration.Duties.RunInstancedContentWithAutoDuty = v;
|
||||
base.Configuration.Duties.RunLevelingModeWhenUnderleveled = v2;
|
||||
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
|
||||
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))
|
||||
{
|
||||
IndentDisposable val3 = ImRaii.PushIndent(ImGui.GetFrameHeight() + ImGui.GetStyle().ItemInnerSpacing.X, true, true);
|
||||
try
|
||||
{
|
||||
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.");
|
||||
base.Configuration.Duties.DefaultDutyMode = (EDutyMode)currentItem;
|
||||
Save();
|
||||
}
|
||||
finally
|
||||
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"))
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
Util.OpenLink("https://docs.google.com/spreadsheets/d/151RlpqRcCpiD_VbQn6Duf-u-S71EP7d0mx3j1PDNoNA/edit?pli=1#gid=0");
|
||||
}
|
||||
ImGui.Separator();
|
||||
val2 = ImRaii.Disabled(!v);
|
||||
try
|
||||
ImGui.Text("You can override the settings for each individual duty:");
|
||||
using ImRaii.TabBarDisposable tabBarDisposable = ImRaii.TabBar("DutyTypeTabs");
|
||||
if ((bool)tabBarDisposable)
|
||||
{
|
||||
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"))
|
||||
using (ImRaii.TabItemDisposable tabItemDisposable2 = ImRaii.TabItem("Dungeons"))
|
||||
{
|
||||
Util.OpenLink("https://docs.google.com/spreadsheets/d/151RlpqRcCpiD_VbQn6Duf-u-S71EP7d0mx3j1PDNoNA/edit?pli=1#gid=0");
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("You can override the settings for each individual duty:");
|
||||
TabBarDisposable val5 = ImRaii.TabBar((ImU8String)"DutyTypeTabs");
|
||||
try
|
||||
{
|
||||
if (TabBarDisposable.op_Implicit(val5))
|
||||
if ((bool)tabItemDisposable2)
|
||||
{
|
||||
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();
|
||||
}
|
||||
DrawConfigTable(v, _contentFinderConditionNames);
|
||||
}
|
||||
DrawEnableAllButton();
|
||||
ImGui.SameLine();
|
||||
DrawClipboardButtons();
|
||||
ImGui.SameLine();
|
||||
DrawResetButton();
|
||||
}
|
||||
finally
|
||||
using (ImRaii.TabItemDisposable tabItemDisposable3 = ImRaii.TabItem("Trials"))
|
||||
{
|
||||
((TabBarDisposable)(ref val5)).Dispose();
|
||||
if ((bool)tabItemDisposable3)
|
||||
{
|
||||
DrawConfigTable(v, _allTrialNames);
|
||||
}
|
||||
}
|
||||
using (ImRaii.TabItemDisposable tabItemDisposable4 = ImRaii.TabItem("Normal Raids"))
|
||||
{
|
||||
if ((bool)tabItemDisposable4)
|
||||
{
|
||||
DrawConfigTable(v, _allNormalRaidNames);
|
||||
}
|
||||
}
|
||||
using ImRaii.TabItemDisposable tabItemDisposable5 = ImRaii.TabItem("Alliance Raids");
|
||||
if ((bool)tabItemDisposable5)
|
||||
{
|
||||
DrawConfigTable(v, _allAllianceRaidNames);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
DrawEnableAllButton();
|
||||
ImGui.SameLine();
|
||||
DrawClipboardButtons();
|
||||
ImGui.SameLine();
|
||||
DrawResetButton();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawConfigTable(bool runInstancedContentWithAutoDuty, Dictionary<EExpansionVersion, List<DutyInfo>> contentByExpansion)
|
||||
{
|
||||
//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
|
||||
using ImRaii.ChildDisposable childDisposable = ImRaii.Child("DutyConfiguration", new Vector2(725f, 400f), border: true);
|
||||
if (!childDisposable)
|
||||
{
|
||||
if (!val)
|
||||
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))
|
||||
{
|
||||
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 (!base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
if (!base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
base.Configuration.Duties.ExpansionHeaderStates[key] = true;
|
||||
Save();
|
||||
}
|
||||
ImU8String table = new ImU8String(6, 1);
|
||||
table.AppendLiteral("Duties");
|
||||
table.AppendFormatted(eExpansionVersion);
|
||||
using ImRaii.TableDisposable tableDisposable = ImRaii.Table(table, 3, ImGuiTableFlags.SizingFixedFit);
|
||||
if (!(bool)tableDisposable)
|
||||
{
|
||||
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)
|
||||
{
|
||||
base.Configuration.Duties.ExpansionHeaderStates[key] = true;
|
||||
Save();
|
||||
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;
|
||||
}
|
||||
}
|
||||
ImU8String imU8String = new ImU8String(6, 1);
|
||||
imU8String.AppendLiteral("Duties");
|
||||
imU8String.AppendFormatted(eExpansionVersion);
|
||||
TableDisposable val2 = ImRaii.Table(imU8String, 3, ImGuiTableFlags.SizingFixedFit);
|
||||
try
|
||||
else
|
||||
{
|
||||
if (!TableDisposable.op_Implicit(val2))
|
||||
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)
|
||||
{
|
||||
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)
|
||||
using ImRaii.TooltipDisposable tooltipDisposable = ImRaii.Tooltip();
|
||||
if (tooltipDisposable.Alive)
|
||||
{
|
||||
array = (dutyOptions.Enabled ? SupportedCfcOptions : UnsupportedCfcOptions);
|
||||
currentItem = 0;
|
||||
if (base.Configuration.Duties.WhitelistedDutyCfcIds.Contains(num))
|
||||
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)
|
||||
{
|
||||
currentItem = 1;
|
||||
ImGui.BulletText("Duty Support: Available");
|
||||
}
|
||||
if (base.Configuration.Duties.BlacklistedDutyCfcIds.Contains(num))
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
currentItem = 2;
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
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
|
||||
{
|
||||
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();
|
||||
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
|
||||
{
|
||||
((TableDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
}
|
||||
else if (base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.Duties.ExpansionHeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val)).Dispose();
|
||||
else if (base.Configuration.Duties.ExpansionHeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
base.Configuration.Duties.ExpansionHeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -554,8 +441,7 @@ internal sealed class DutyConfigComponent : ConfigComponent
|
|||
|
||||
private void DrawClipboardButtons()
|
||||
{
|
||||
DisabledDisposable val = ImRaii.Disabled(base.Configuration.Duties.WhitelistedDutyCfcIds.Count + base.Configuration.Duties.BlacklistedDutyCfcIds.Count + base.Configuration.Duties.DutyModeOverrides.Count == 0);
|
||||
try
|
||||
using (ImRaii.Disabled(base.Configuration.Duties.WhitelistedDutyCfcIds.Count + base.Configuration.Duties.BlacklistedDutyCfcIds.Count + base.Configuration.Duties.DutyModeOverrides.Count == 0))
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Copy, "Export to clipboard"))
|
||||
{
|
||||
|
|
@ -565,14 +451,9 @@ 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();
|
||||
val = ImRaii.Disabled(string.IsNullOrEmpty(text) || !text.StartsWith("qst:duty:", StringComparison.InvariantCulture));
|
||||
try
|
||||
using (ImRaii.Disabled(string.IsNullOrEmpty(text) || !text.StartsWith("qst:duty:", StringComparison.InvariantCulture)))
|
||||
{
|
||||
if (!ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Paste, "Import from Clipboard"))
|
||||
{
|
||||
|
|
@ -611,16 +492,11 @@ internal sealed class DutyConfigComponent : ConfigComponent
|
|||
}
|
||||
Save();
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawResetButton()
|
||||
{
|
||||
DisabledDisposable val = ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl));
|
||||
try
|
||||
using (ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl)))
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Undo, "Reset to default"))
|
||||
{
|
||||
|
|
@ -631,10 +507,6 @@ internal sealed class DutyConfigComponent : ConfigComponent
|
|||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
|
|
|
|||
|
|
@ -95,532 +95,383 @@ internal sealed class GeneralConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
//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
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem("General###General");
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
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)
|
||||
{
|
||||
return;
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_mountComboJustOpened = true;
|
||||
}
|
||||
int currentItem = (int)base.Configuration.General.CombatModule;
|
||||
if (ImGui.Combo((ImU8String)"Preferred Combat Module", ref currentItem, (ReadOnlySpan<string>)_combatModuleNames, _combatModuleNames.Length))
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##MountSearch", "Search mounts...", ref _mountSearchText, 256);
|
||||
ImGui.Separator();
|
||||
using (ImRaii.ChildDisposable childDisposable = ImRaii.Child("##MountScrollArea", new Vector2(0f, 300f), border: false))
|
||||
{
|
||||
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 ((bool)childDisposable)
|
||||
{
|
||||
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))
|
||||
string value = _mountSearchText.ToUpperInvariant();
|
||||
for (int num2 = 0; num2 < _mountNames.Length; num2++)
|
||||
{
|
||||
string value = _mountSearchText.ToUpperInvariant();
|
||||
for (int num2 = 0; num2 < _mountNames.Length; num2++)
|
||||
if (string.IsNullOrEmpty(_mountSearchText) || _mountNames[num2].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
{
|
||||
if (string.IsNullOrEmpty(_mountSearchText) || _mountNames[num2].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
bool flag = num2 == num;
|
||||
if (ImGui.Selectable(_mountNames[num2], flag))
|
||||
{
|
||||
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();
|
||||
}
|
||||
base.Configuration.General.MountId = _mountIds[num2];
|
||||
Save();
|
||||
_mountSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
}
|
||||
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.ChildDisposable childDisposable2 = ImRaii.Child("##CombatJobScrollArea", new Vector2(0f, 300f), border: false))
|
||||
{
|
||||
if ((bool)childDisposable2)
|
||||
{
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
else
|
||||
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))
|
||||
{
|
||||
_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;
|
||||
base.Configuration.General.HideInAllInstances = v;
|
||||
Save();
|
||||
}
|
||||
int currentItem3 = (int)base.Configuration.General.MsqPriority;
|
||||
if (ImGui.Combo((ImU8String)"MSQ Priority", ref currentItem3, (ReadOnlySpan<string>)_msqPriorityNames, _msqPriorityNames.Length))
|
||||
bool v2 = base.Configuration.General.UseEscToCancelQuesting;
|
||||
if (ImGui.Checkbox("Double tap ESC to cancel questing/movement", ref v2))
|
||||
{
|
||||
base.Configuration.General.MsqPriority = (Configuration.EMsqPriorityMode)currentItem3;
|
||||
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;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
FontDisposable val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
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());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val4 = ImRaii.Tooltip();
|
||||
try
|
||||
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");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val4)).Dispose();
|
||||
ImGui.Text("Automatically completes sniping minigames introduced in Stormblood.");
|
||||
ImGui.Text("When enabled, snipe targets are instantly hit without manual aiming.");
|
||||
}
|
||||
}
|
||||
int num3 = Array.IndexOf(_classJobIds, base.Configuration.General.CombatJob);
|
||||
if (num3 == -1)
|
||||
bool v9 = base.Configuration.General.CinemaMode;
|
||||
if (ImGui.Checkbox("Cinema Mode (watch cutscenes)", ref v9))
|
||||
{
|
||||
base.Configuration.General.CombatJob = EClassJob.Adventurer;
|
||||
base.Configuration.General.CinemaMode = v9;
|
||||
Save();
|
||||
num3 = 0;
|
||||
}
|
||||
string text2 = ((num3 >= 0 && num3 < _classJobNames.Length) ? _classJobNames[num3] : "Unknown");
|
||||
if (ImGui.BeginCombo("Preferred Combat Job", text2, ImGuiComboFlags.HeightLarge))
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
if (!_classJobComboJustOpened)
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_classJobComboJustOpened = true;
|
||||
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.");
|
||||
}
|
||||
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
|
||||
}
|
||||
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();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
if (ChildDisposable.op_Implicit(val5))
|
||||
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)
|
||||
{
|
||||
string value2 = _classJobSearchText.ToUpperInvariant();
|
||||
for (int num4 = 0; num4 < _classJobNames.Length; num4++)
|
||||
if (_territoryData.TryGetContentFinderCondition(lowPriorityContentFinderConditionQuest.ContentFinderConditionId, out TerritoryData.ContentFinderConditionData contentFinderConditionData))
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
ImU8String text3 = new ImU8String(0, 1);
|
||||
text3.AppendFormatted(contentFinderConditionData.Name);
|
||||
ImGui.BulletText(text3);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val5)).Dispose();
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
else
|
||||
ImGui.Spacing();
|
||||
bool v12 = base.Configuration.General.AutoStepRefreshEnabled;
|
||||
if (ImGui.Checkbox("Automatically refresh quest steps when stuck", ref v12))
|
||||
{
|
||||
_classJobComboJustOpened = false;
|
||||
base.Configuration.General.AutoStepRefreshEnabled = v12;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
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.");
|
||||
}
|
||||
}
|
||||
using (ImRaii.Disabled(!v12))
|
||||
{
|
||||
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();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Text("UI");
|
||||
IndentDisposable val6 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
ImGui.Text("Priority Quest Management");
|
||||
bool v14 = base.Configuration.General.PersistPriorityQuestsBetweenSessions;
|
||||
if (ImGui.Checkbox("Save priority quests between sessions", ref v14))
|
||||
{
|
||||
bool v = base.Configuration.General.HideInAllInstances;
|
||||
if (ImGui.Checkbox("Hide quest window in all instanced duties", ref v))
|
||||
base.Configuration.General.PersistPriorityQuestsBetweenSessions = v14;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
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();
|
||||
ImGui.Text("When enabled, your priority quest list will be saved and restored");
|
||||
ImGui.Text("when the plugin reloads or the game restarts.");
|
||||
}
|
||||
}
|
||||
finally
|
||||
bool v15 = base.Configuration.General.ClearPriorityQuestsOnLogout;
|
||||
if (ImGui.Checkbox("Clear priority quests on character logout", ref v15))
|
||||
{
|
||||
((IDisposable)val6)?.Dispose();
|
||||
base.Configuration.General.ClearPriorityQuestsOnLogout = v15;
|
||||
Save();
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Questing");
|
||||
val6 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
bool v7 = base.Configuration.General.AutoSolveQte;
|
||||
if (ImGui.Checkbox("Automatically solve Quick Time Events (QTEs)", ref v7))
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
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();
|
||||
}
|
||||
ImGui.Text("Clears the priority queue when your character logs out.");
|
||||
ImGui.Text("This also clears the saved list if persistence is enabled.");
|
||||
}
|
||||
}
|
||||
finally
|
||||
bool v16 = base.Configuration.General.ClearPriorityQuestsOnCompletion;
|
||||
if (ImGui.Checkbox("Remove priority quests when completed", ref v16))
|
||||
{
|
||||
((IDisposable)val6)?.Dispose();
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,97 +30,69 @@ internal sealed class NotificationConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
//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
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem("Notifications###Notifications");
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
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())
|
||||
{
|
||||
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
|
||||
int num = Array.IndexOf(_xivChatTypes, base.Configuration.Notifications.ChatType);
|
||||
if (num == -1)
|
||||
{
|
||||
int num = Array.IndexOf(_xivChatTypes, base.Configuration.Notifications.ChatType);
|
||||
if (num == -1)
|
||||
num = 0;
|
||||
}
|
||||
string text = ((num >= 0 && num < _chatTypeNames.Length) ? _chatTypeNames[num] : "Unknown");
|
||||
if (ImGui.BeginCombo("Chat channel", text, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
if (!_chatChannelComboJustOpened)
|
||||
{
|
||||
num = 0;
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_chatChannelComboJustOpened = true;
|
||||
}
|
||||
string text = ((num >= 0 && num < _chatTypeNames.Length) ? _chatTypeNames[num] : "Unknown");
|
||||
if (ImGui.BeginCombo("Chat channel", text, ImGuiComboFlags.HeightLarge))
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##ChatChannelSearch", "Search chat channels...", ref _chatChannelSearchText, 256);
|
||||
ImGui.Separator();
|
||||
using (ImRaii.ChildDisposable childDisposable = ImRaii.Child("##ChatChannelScrollArea", new Vector2(0f, 300f), border: false))
|
||||
{
|
||||
if (!_chatChannelComboJustOpened)
|
||||
if ((bool)childDisposable)
|
||||
{
|
||||
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))
|
||||
string value = _chatChannelSearchText.ToUpperInvariant();
|
||||
for (int i = 0; i < _chatTypeNames.Length; i++)
|
||||
{
|
||||
string value = _chatChannelSearchText.ToUpperInvariant();
|
||||
for (int i = 0; i < _chatTypeNames.Length; i++)
|
||||
if (string.IsNullOrEmpty(_chatChannelSearchText) || _chatTypeNames[i].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
{
|
||||
if (string.IsNullOrEmpty(_chatChannelSearchText) || _chatTypeNames[i].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
bool flag = i == num;
|
||||
if (ImGui.Selectable(_chatTypeNames[i], flag))
|
||||
{
|
||||
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();
|
||||
}
|
||||
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();
|
||||
}
|
||||
finally
|
||||
else
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
_chatChannelComboJustOpened = false;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,31 +74,21 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
//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
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem("Dependencies###Plugins");
|
||||
if (!(!tabItemDisposable))
|
||||
{
|
||||
if (!(!val))
|
||||
Draw(out var allRequiredInstalled);
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Spacing();
|
||||
if (allRequiredInstalled)
|
||||
{
|
||||
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.");
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -111,27 +101,20 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
}
|
||||
ImGui.Text("Questionable requires the following plugins to work:");
|
||||
allRequiredInstalled = true;
|
||||
IndentDisposable val = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
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:");
|
||||
val = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
DisabledDisposable val2 = ImRaii.Disabled(_combatController.IsRunning);
|
||||
try
|
||||
using (ImRaii.Disabled(_combatController.IsRunning))
|
||||
{
|
||||
if (ImGui.RadioButton("No rotation/combat plugin (combat must be done manually)", _configuration.General.CombatModule == Questionable.Configuration.ECombatModule.None))
|
||||
{
|
||||
|
|
@ -142,37 +125,23 @@ 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:");
|
||||
val = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
foreach (PluginInfo recommendedPlugin in _recommendedPlugins)
|
||||
{
|
||||
DrawPlugin(recommendedPlugin, checklistPadding);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private bool DrawPlugin(PluginInfo plugin, float checklistPadding)
|
||||
{
|
||||
IdDisposable val = ImRaii.PushId((ImU8String)("plugin_" + plugin.DisplayName), true);
|
||||
try
|
||||
using (ImRaii.PushId("plugin_" + plugin.DisplayName))
|
||||
{
|
||||
IExposedPlugin exposedPlugin = FindInstalledPlugin(plugin);
|
||||
bool flag = exposedPlugin != null;
|
||||
|
|
@ -185,18 +154,13 @@ 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];
|
||||
IdDisposable val = ImRaii.PushId((ImU8String)("plugin_" + pluginInfo.DisplayName), true);
|
||||
try
|
||||
using (ImRaii.PushId("plugin_" + pluginInfo.DisplayName))
|
||||
{
|
||||
IExposedPlugin exposedPlugin = FindInstalledPlugin(pluginInfo);
|
||||
bool flag = exposedPlugin != null;
|
||||
|
|
@ -221,16 +185,11 @@ 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)
|
||||
{
|
||||
IndentDisposable val = ImRaii.PushIndent(checklistPadding, true, true);
|
||||
try
|
||||
using (ImRaii.PushIndent(checklistPadding))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(plugin.Details))
|
||||
{
|
||||
|
|
@ -246,15 +205,10 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
_uiUtils.ChecklistItem(item.DisplayName, isInstalled && flag2);
|
||||
if (!string.IsNullOrEmpty(item.Details))
|
||||
{
|
||||
IndentDisposable val2 = ImRaii.PushIndent(checklistPadding, true, true);
|
||||
try
|
||||
using (ImRaii.PushIndent(checklistPadding))
|
||||
{
|
||||
ImGui.TextUnformatted(item.Details);
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -285,10 +239,6 @@ internal sealed class PluginConfigComponent : ConfigComponent
|
|||
ImGuiComponents.HelpMarker("Available on official Dalamud Repository");
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private IExposedPlugin? FindInstalledPlugin(PluginInfo pluginInfo)
|
||||
|
|
|
|||
|
|
@ -289,576 +289,431 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
//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
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem("Quest Battles###QuestBattles");
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
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))
|
||||
{
|
||||
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();
|
||||
DisabledDisposable val4 = ImRaii.Disabled(!v);
|
||||
try
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val4)?.Dispose();
|
||||
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
|
||||
ImGui.Separator();
|
||||
using (ImRaii.Disabled(!v))
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
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.TabBarDisposable tabBarDisposable = ImRaii.TabBar("QuestionableConfigTabs");
|
||||
if ((bool)tabBarDisposable)
|
||||
{
|
||||
DrawMainScenarioConfigTable();
|
||||
DrawJobQuestConfigTable();
|
||||
DrawRoleQuestConfigTable();
|
||||
DrawOtherQuestConfigTable();
|
||||
}
|
||||
DrawEnableAllButton();
|
||||
ImGui.SameLine();
|
||||
DrawClipboardButtons();
|
||||
ImGui.SameLine();
|
||||
DrawResetButton();
|
||||
}
|
||||
}
|
||||
|
||||
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 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
|
||||
ImU8String label = new ImU8String(30, 2);
|
||||
label.AppendLiteral("Main Scenario Quests (");
|
||||
label.AppendFormatted(item);
|
||||
label.AppendLiteral("/");
|
||||
label.AppendFormatted(item2);
|
||||
label.AppendLiteral(")###MSQ");
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem(label);
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ChildDisposable val2 = BeginChildArea();
|
||||
try
|
||||
{
|
||||
if (!val2)
|
||||
{
|
||||
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();
|
||||
}
|
||||
(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
return;
|
||||
}
|
||||
finally
|
||||
using ImRaii.ChildDisposable childDisposable = BeginChildArea();
|
||||
if (!childDisposable)
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
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();
|
||||
}
|
||||
(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 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
|
||||
ImU8String label = new ImU8String(32, 2);
|
||||
label.AppendLiteral("Class/Job Quests (");
|
||||
label.AppendFormatted(item);
|
||||
label.AppendLiteral("/");
|
||||
label.AppendFormatted(item2);
|
||||
label.AppendLiteral(")###JobQuests");
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem(label);
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ChildDisposable val2 = BeginChildArea();
|
||||
try
|
||||
{
|
||||
if (!val2)
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
return;
|
||||
}
|
||||
finally
|
||||
using ImRaii.ChildDisposable childDisposable = BeginChildArea();
|
||||
if (!childDisposable)
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 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
|
||||
ImU8String label = new ImU8String(28, 2);
|
||||
label.AppendLiteral("Role Quests (");
|
||||
label.AppendFormatted(item);
|
||||
label.AppendLiteral("/");
|
||||
label.AppendFormatted(item2);
|
||||
label.AppendLiteral(")###RoleQuests");
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem(label);
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
return;
|
||||
}
|
||||
using ImRaii.ChildDisposable childDisposable = BeginChildArea();
|
||||
if (!childDisposable)
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach (var (eClassJob, value) in RoleQuestCategories)
|
||||
{
|
||||
if (!_roleQuestBattles.TryGetValue(eClassJob, out List<SinglePlayerDutyInfo> value2))
|
||||
{
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
ChildDisposable val2 = BeginChildArea();
|
||||
try
|
||||
(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 (!val2)
|
||||
if (!base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
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;
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = true;
|
||||
Save();
|
||||
}
|
||||
DrawQuestTable($"RoleQuests{eClassJob}", value2);
|
||||
}
|
||||
finally
|
||||
else if (base.Configuration.SinglePlayerDuties.HeaderStates.GetValueOrDefault(key, defaultValue: false))
|
||||
{
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
base.Configuration.SinglePlayerDuties.HeaderStates[key] = false;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
(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))
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
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 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
|
||||
ImU8String label = new ImU8String(29, 2);
|
||||
label.AppendLiteral("Other Quests (");
|
||||
label.AppendFormatted(item);
|
||||
label.AppendLiteral("/");
|
||||
label.AppendFormatted(item2);
|
||||
label.AppendLiteral(")###MiscQuests");
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem(label);
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ChildDisposable val2 = BeginChildArea();
|
||||
try
|
||||
{
|
||||
if (!val2)
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
return;
|
||||
}
|
||||
finally
|
||||
using ImRaii.ChildDisposable childDisposable = BeginChildArea();
|
||||
if (!childDisposable)
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawQuestTable(string label, IReadOnlyList<SinglePlayerDutyInfo> dutyInfos)
|
||||
{
|
||||
//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
|
||||
using ImRaii.TableDisposable tableDisposable = ImRaii.Table(label, 2, ImGuiTableFlags.SizingFixedFit);
|
||||
if (!(bool)tableDisposable)
|
||||
{
|
||||
if (!TableDisposable.op_Implicit(val))
|
||||
{
|
||||
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))
|
||||
{
|
||||
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)
|
||||
{
|
||||
TooltipDisposable val2 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
finally
|
||||
ImGui.TableSetupColumn("Quest", ImGuiTableColumnFlags.WidthStretch);
|
||||
ImGui.TableSetupColumn("Options", ImGuiTableColumnFlags.WidthFixed, 200f);
|
||||
foreach (SinglePlayerDutyInfo dutyInfo in dutyInfos)
|
||||
{
|
||||
((TableDisposable)(ref val)).Dispose();
|
||||
ImGui.TableNextRow();
|
||||
string[] array = (dutyInfo.EnabledByDefault ? SupportedCfcOptions : UnsupportedCfcOptions);
|
||||
int currentItem = 0;
|
||||
if (base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Contains(dutyInfo.ContentFinderConditionId))
|
||||
{
|
||||
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)
|
||||
{
|
||||
using ImRaii.TooltipDisposable tooltipDisposable = ImRaii.Tooltip();
|
||||
if (tooltipDisposable.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);
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
case 1:
|
||||
base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Add(dutyInfo.ContentFinderConditionId);
|
||||
break;
|
||||
case 2:
|
||||
base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Add(dutyInfo.ContentFinderConditionId);
|
||||
break;
|
||||
}
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static ChildDisposable BeginChildArea()
|
||||
private static ImRaii.ChildDisposable BeginChildArea()
|
||||
{
|
||||
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
|
||||
return ImRaii.Child((ImU8String)"DutyConfiguration", new Vector2(725f, 400f), true);
|
||||
return ImRaii.Child("DutyConfiguration", new Vector2(725f, 400f), border: true);
|
||||
}
|
||||
|
||||
private void DrawEnableAllButton()
|
||||
|
|
@ -881,8 +736,7 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
|
|||
|
||||
private void DrawClipboardButtons()
|
||||
{
|
||||
DisabledDisposable val = ImRaii.Disabled(base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Count + base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Count == 0);
|
||||
try
|
||||
using (ImRaii.Disabled(base.Configuration.SinglePlayerDuties.WhitelistedSinglePlayerDutyCfcIds.Count + base.Configuration.SinglePlayerDuties.BlacklistedSinglePlayerDutyCfcIds.Count == 0))
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Copy, "Export to clipboard"))
|
||||
{
|
||||
|
|
@ -891,14 +745,9 @@ 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();
|
||||
val = ImRaii.Disabled(string.IsNullOrEmpty(text) || !text.StartsWith("qst:single:", StringComparison.InvariantCulture));
|
||||
try
|
||||
using (ImRaii.Disabled(string.IsNullOrEmpty(text) || !text.StartsWith("qst:single:", StringComparison.InvariantCulture)))
|
||||
{
|
||||
if (!ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Paste, "Import from Clipboard"))
|
||||
{
|
||||
|
|
@ -922,16 +771,11 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
|
|||
}
|
||||
Save();
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawResetButton()
|
||||
{
|
||||
DisabledDisposable val = ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl));
|
||||
try
|
||||
using (ImRaii.Disabled(!ImGui.IsKeyDown(ImGuiKey.ModCtrl)))
|
||||
{
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Undo, "Reset to default"))
|
||||
{
|
||||
|
|
@ -940,10 +784,6 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
|
|||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
|
|
|
|||
|
|
@ -67,142 +67,112 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
//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
|
||||
using ImRaii.TabItemDisposable tabItemDisposable = ImRaii.TabItem("Stop###StopConditionns");
|
||||
if (!tabItemDisposable)
|
||||
{
|
||||
if (!val)
|
||||
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))
|
||||
{
|
||||
return;
|
||||
}
|
||||
bool v = base.Configuration.Stop.Enabled;
|
||||
if (ImGui.Checkbox("Enable stop conditions", ref v))
|
||||
{
|
||||
base.Configuration.Stop.Enabled = v;
|
||||
base.Configuration.Stop.LevelStopMode = (Configuration.EStopConditionMode)currentItem;
|
||||
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.");
|
||||
using (ImRaii.Disabled(base.Configuration.Stop.LevelStopMode == Questionable.Configuration.EStopConditionMode.Off))
|
||||
{
|
||||
int data = base.Configuration.Stop.TargetLevel;
|
||||
ImGui.SetNextItemWidth(100f);
|
||||
if (ImGui.InputInt("Target level", ref data, 1, 5))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
ImGui.Separator();
|
||||
DisabledDisposable val2 = ImRaii.Disabled(!v);
|
||||
try
|
||||
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))
|
||||
{
|
||||
ImGui.Text("Stop when character level reaches:");
|
||||
int currentItem = (int)base.Configuration.Stop.LevelStopMode;
|
||||
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.Combo((ImU8String)"##LevelMode", ref currentItem, (ReadOnlySpan<string>)StopModeNames, StopModeNames.Length))
|
||||
if (ImGui.InputInt("Target sequence", ref data2, 1, 1))
|
||||
{
|
||||
base.Configuration.Stop.LevelStopMode = (Configuration.EStopConditionMode)currentItem;
|
||||
base.Configuration.Stop.TargetSequence = Math.Max(0, Math.Min(255, data2));
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
DisabledDisposable val3 = ImRaii.Disabled(base.Configuration.Stop.LevelStopMode == Questionable.Configuration.EStopConditionMode.Off);
|
||||
try
|
||||
QuestController.QuestProgress currentQuest = _questController.CurrentQuest;
|
||||
if (currentQuest != null)
|
||||
{
|
||||
int data = base.Configuration.Stop.TargetLevel;
|
||||
ImGui.SetNextItemWidth(100f);
|
||||
if (ImGui.InputInt("Target level", ref data, 1, 5))
|
||||
{
|
||||
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);
|
||||
}
|
||||
int sequence = currentQuest.Sequence;
|
||||
ImGui.SameLine();
|
||||
ImU8String text2 = new ImU8String(11, 1);
|
||||
text2.AppendLiteral("(Current: ");
|
||||
text2.AppendFormatted(sequence);
|
||||
text2.AppendLiteral(")");
|
||||
ImGui.TextDisabled(text2);
|
||||
}
|
||||
finally
|
||||
}
|
||||
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)))
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
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();
|
||||
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))
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Trash, "Clear All"))
|
||||
{
|
||||
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)
|
||||
{
|
||||
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();
|
||||
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);
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
ImGui.SetTooltip("Hold CTRL to enable this button.");
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("(Drag arrow buttons to reorder)");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
DrawStopQuestList(questsToStopAfter);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -221,11 +191,10 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
{
|
||||
continue;
|
||||
}
|
||||
ImU8String imU8String = new ImU8String(5, 1);
|
||||
imU8String.AppendLiteral("Quest");
|
||||
imU8String.AppendFormatted(elementId);
|
||||
IdDisposable val = ImRaii.PushId(imU8String, true);
|
||||
try
|
||||
ImU8String id = new ImU8String(5, 1);
|
||||
id.AppendLiteral("Quest");
|
||||
id.AppendFormatted(elementId);
|
||||
using (ImRaii.PushId(id))
|
||||
{
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImU8String text = new ImU8String(1, 1);
|
||||
|
|
@ -283,8 +252,7 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
{
|
||||
ImGui.SetTooltip("Stop at specific sequence (unchecked = stop on quest completion)");
|
||||
}
|
||||
DisabledDisposable val2 = ImRaii.Disabled(!v);
|
||||
try
|
||||
using (ImRaii.Disabled(!v))
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.Text("Seq:");
|
||||
|
|
@ -300,21 +268,12 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
Save();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val2)?.Dispose();
|
||||
}
|
||||
if (questsToStopAfter.Count > 1)
|
||||
{
|
||||
FontDisposable val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
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)));
|
||||
|
|
@ -331,25 +290,16 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
}
|
||||
else
|
||||
{
|
||||
FontDisposable val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
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));
|
||||
}
|
||||
|
|
@ -390,25 +340,20 @@ 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:");
|
||||
ChildDisposable val = ImRaii.Child((ImU8String)"AcceptedQuestsList", new Vector2(-1f, 120f), true);
|
||||
try
|
||||
using (ImRaii.ChildDisposable childDisposable = ImRaii.Child("AcceptedQuestsList", new Vector2(-1f, 120f), border: true))
|
||||
{
|
||||
if (ChildDisposable.op_Implicit(val))
|
||||
if ((bool)childDisposable)
|
||||
{
|
||||
if (currentlyAcceptedQuests.Count > 0)
|
||||
{
|
||||
foreach (Quest item in currentlyAcceptedQuests)
|
||||
{
|
||||
ImU8String imU8String = new ImU8String(13, 1);
|
||||
imU8String.AppendLiteral("AcceptedQuest");
|
||||
imU8String.AppendFormatted(item.Id);
|
||||
IdDisposable val2 = ImRaii.PushId(imU8String, true);
|
||||
try
|
||||
ImU8String id = new ImU8String(13, 1);
|
||||
id.AppendLiteral("AcceptedQuest");
|
||||
id.AppendFormatted(item.Id);
|
||||
using (ImRaii.PushId(id))
|
||||
{
|
||||
(Vector4, FontAwesomeIcon, string) questStyle = _uiUtils.GetQuestStyle(item.Id);
|
||||
bool flag = false;
|
||||
|
|
@ -426,17 +371,11 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
{
|
||||
_questTooltipComponent.Draw(item.Info);
|
||||
}
|
||||
FontDisposable val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.SameLine(ImGui.GetContentRegionAvail().X + ImGui.GetStyle().WindowPadding.X - ImGui.CalcTextSize(FontAwesomeIcon.Plus.ToIconString()).X - ImGui.GetStyle().FramePadding.X * 2f);
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
DisabledDisposable val4 = ImRaii.Disabled(flag2);
|
||||
try
|
||||
using (ImRaii.Disabled(flag2))
|
||||
{
|
||||
if (ImGuiComponents.IconButton($"##Add{item.Id}", FontAwesomeIcon.Plus))
|
||||
{
|
||||
|
|
@ -445,19 +384,11 @@ 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
|
||||
|
|
@ -468,10 +399,6 @@ internal sealed class StopConditionComponent : ConfigComponent
|
|||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((ChildDisposable)(ref val)).Dispose();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue