diff --git a/AutoDuty/AutoDuty.cs b/AutoDuty/AutoDuty.cs index c2655515..b0f556bc 100644 --- a/AutoDuty/AutoDuty.cs +++ b/AutoDuty/AutoDuty.cs @@ -1827,7 +1827,7 @@ private void CheckRetainerWindow() return; if (Svc.Condition[ConditionFlag.OccupiedSummoningBell]) - while(!AutoRetainerHelper.Instance.CloseAddons()); + AutoRetainerHelper.Instance.CloseAddons(); } private void InteractablesCheck() diff --git a/AutoDuty/Helpers/ActiveHelperBase.cs b/AutoDuty/Helpers/ActiveHelperBase.cs index e76e6b53..d022dd2f 100644 --- a/AutoDuty/Helpers/ActiveHelperBase.cs +++ b/AutoDuty/Helpers/ActiveHelperBase.cs @@ -185,10 +185,10 @@ public unsafe bool CloseAddons() { for (int i = 0; i < this.AddonsToClose.Length; i++) { - if (GenericHelpers.TryGetAddonByName(this.AddonsToClose[i], out AtkUnitBase* atkUnitBase) && atkUnitBase->IsVisible) + if (GenericHelpers.TryGetAddonByName(this.AddonsToClose[i], out AtkUnitBase* atkUnitBase) && atkUnitBase->IsReady) { this.DebugLog("Closing Addon " + this.AddonsToClose[i]); - atkUnitBase->Close(true); + atkUnitBase->FireCallbackInt(-1); return false; } } diff --git a/AutoDuty/Windows/Config.cs b/AutoDuty/Windows/Config.cs index fdc998ac..09cba4e3 100644 --- a/AutoDuty/Windows/Config.cs +++ b/AutoDuty/Windows/Config.cs @@ -40,6 +40,7 @@ namespace AutoDuty.Windows; using System.IO.Pipes; using System.Numerics; using System.Text; +using FFXIVClientStructs.FFXIV.Client.UI.Agent; using Achievement = Lumina.Excel.Sheets.Achievement; using ExitDutyHelper = Helpers.ExitDutyHelper; using Map = Lumina.Excel.Sheets.Map; @@ -1176,7 +1177,10 @@ public bool AutoDesynthSkillUp AutoDesynth = false; } } - public int AutoDesynthSkillUpLimit = 50; + public int AutoDesynthSkillUpLimit = 50; + public bool AutoDesynthNoGearset = true; + public ulong AutoDesynthCategories = 0x1; + internal bool autoGCTurnin = false; public bool AutoGCTurnin { @@ -2702,54 +2706,70 @@ public static void Draw() ImGui.Columns(2, "##DesynthColumns"); + float columnY = ImGui.GetCursorPosY(); if (ImGui.Checkbox("Auto Desynth", ref Configuration.autoDesynth)) { Configuration.AutoDesynth = Configuration.autoDesynth; Configuration.Save(); } - ImGui.NextColumn(); - //ImGui.SameLine(0, 5); - using (ImGuiHelper.RequiresPlugin(ExternalPlugin.AutoRetainer, "GCTurnin")) + if (Configuration.AutoDesynth) { - if (ImGui.Checkbox("Auto GC Turnin", ref Configuration.autoGCTurnin)) + ImGui.Indent(); + if (ImGui.Checkbox("Only Skill Ups", ref Configuration.autoDesynthSkillUp)) { - Configuration.AutoGCTurnin = Configuration.autoGCTurnin; + Configuration.AutoDesynthSkillUp = Configuration.autoDesynthSkillUp; Configuration.Save(); } - - ImGui.NextColumn(); + if (Configuration.AutoDesynthSkillUp) + { + ImGui.Indent(); + ImGui.Text("Item Level Limit"); + ImGuiComponents.HelpMarker("Stops desynthesising an item once your desynthesis skill reaches the Item Level + this limit."); + ImGui.SameLine(); + ImGui.PushItemWidth(ImGui.GetContentRegionAvail().X); + if (ImGui.SliderInt("##AutoDesynthSkillUpLimit", ref Configuration.AutoDesynthSkillUpLimit, 0, 50)) + { + Configuration.AutoDesynthSkillUpLimit = Math.Clamp(Configuration.AutoDesynthSkillUpLimit, 0, 50); + Configuration.Save(); + } + ImGui.PopItemWidth(); + ImGui.Unindent(); + } + + if (ImGui.Checkbox($"Protect Gearsets##Desynth{nameof(Configuration.AutoDesynthNoGearset)}", ref Configuration.AutoDesynthNoGearset)) + Configuration.Save(); - //slightly cursed - using (ImRaii.Enabled()) + if (ImGui.CollapsingHeader("Desynth Categories")) { - if (Configuration.AutoDesynth) + ImGui.Indent(); + AgentSalvage.SalvageItemCategory[] values = Enum.GetValues(); + for (int index = 0; index < values.Length; index++) { - ImGui.Indent(); - if (ImGui.Checkbox("Only Skill Ups", ref Configuration.autoDesynthSkillUp)) - { - Configuration.AutoDesynthSkillUp = Configuration.autoDesynthSkillUp; - Configuration.Save(); - } - if (Configuration.AutoDesynthSkillUp) - { - ImGui.Indent(); - ImGui.Text("Item Level Limit"); - ImGuiComponents.HelpMarker("Stops desynthesising an item once your desynthesis skill reaches the Item Level + this limit."); - ImGui.SameLine(); - ImGui.PushItemWidth(ImGui.GetContentRegionAvail().X); - if (ImGui.SliderInt("##AutoDesynthSkillUpLimit", ref Configuration.AutoDesynthSkillUpLimit, 0, 50)) - { - Configuration.AutoDesynthSkillUpLimit = Math.Clamp(Configuration.AutoDesynthSkillUpLimit, 0, 50); - Configuration.Save(); - } - ImGui.PopItemWidth(); - ImGui.Unindent(); - } - ImGui.Unindent(); + bool x = Bitmask.IsBitSet(Configuration.AutoDesynthCategories, index); + string categoryName = values[index].ToCustomString(); + if (ImGui.Checkbox(categoryName + $"##DesynthCategory{categoryName}", ref x)) + if (x) + Bitmask.SetBit(ref Configuration.AutoDesynthCategories, index); + else + Bitmask.ResetBit(ref Configuration.AutoDesynthCategories, index); } + ImGui.Unindent(); + } + + ImGui.Unindent(); + } + + ImGui.NextColumn(); + ImGui.SetCursorPosY(columnY); + //ImGui.SameLine(0, 5); + using (ImGuiHelper.RequiresPlugin(ExternalPlugin.AutoRetainer, "GCTurnin")) + { + if (ImGui.Checkbox("Auto GC Turnin", ref Configuration.autoGCTurnin)) + { + Configuration.AutoGCTurnin = Configuration.autoGCTurnin; + Configuration.Save(); } - ImGui.NextColumn(); if (Configuration.AutoGCTurnin) { ImGui.Indent(); diff --git a/ECommons b/ECommons index 00823879..4f8c1101 160000 --- a/ECommons +++ b/ECommons @@ -1 +1 @@ -Subproject commit 00823879feb3d73586091493a9acd1aafc8654f4 +Subproject commit 4f8c11016b243ce4cabef7e6bf6e7c942f731f72