diff --git a/YesAlready/Features/AddonContentsFinderConfirmFeature.cs b/YesAlready/Features/AddonContentsFinderConfirmFeature.cs index 3fa29f3..cadf82f 100644 --- a/YesAlready/Features/AddonContentsFinderConfirmFeature.cs +++ b/YesAlready/Features/AddonContentsFinderConfirmFeature.cs @@ -23,7 +23,7 @@ protected static unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInf { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.ContentsFinderConfirmEnabled) + if (!P.Active || !P.Config.ContentsFinderConfirmEnabled) return; ClickContentsFinderConfirm.Using((nint)addon).Commence(); diff --git a/YesAlready/Features/AddonFGSEnterDialog.cs b/YesAlready/Features/AddonFGSEnterDialog.cs index 2743dc9..2ed1236 100644 --- a/YesAlready/Features/AddonFGSEnterDialog.cs +++ b/YesAlready/Features/AddonFGSEnterDialog.cs @@ -24,7 +24,7 @@ protected static unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInf { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.FallGuysRegisterConfirm) + if (!P.Active || !P.Config.FallGuysRegisterConfirm) return; Callback.Fire(addon, true, 0); diff --git a/YesAlready/Features/AddonFGSExitDialog.cs b/YesAlready/Features/AddonFGSExitDialog.cs index a70e27c..84802f8 100644 --- a/YesAlready/Features/AddonFGSExitDialog.cs +++ b/YesAlready/Features/AddonFGSExitDialog.cs @@ -25,7 +25,7 @@ protected static unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInf { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.FallGuysExitConfirm) + if (!P.Active || !P.Config.FallGuysExitConfirm) return; Callback.Fire(addon, true, 0); diff --git a/YesAlready/Features/AddonGrandCompanySupplyRewardFeature.cs b/YesAlready/Features/AddonGrandCompanySupplyRewardFeature.cs index d5648a8..dd852cb 100644 --- a/YesAlready/Features/AddonGrandCompanySupplyRewardFeature.cs +++ b/YesAlready/Features/AddonGrandCompanySupplyRewardFeature.cs @@ -26,7 +26,7 @@ protected static unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInf { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.GrandCompanySupplyReward) + if (!P.Active || !P.Config.GrandCompanySupplyReward) return; ClickGrandCompanySupplyReward.Using((IntPtr)addon).Deliver(); diff --git a/YesAlready/Features/AddonGuildLeveDifficultyFeature.cs b/YesAlready/Features/AddonGuildLeveDifficultyFeature.cs index 5f4df55..a496b7b 100644 --- a/YesAlready/Features/AddonGuildLeveDifficultyFeature.cs +++ b/YesAlready/Features/AddonGuildLeveDifficultyFeature.cs @@ -23,7 +23,7 @@ protected static unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInf { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.GuildLeveDifficultyConfirm) + if (!P.Active || !P.Config.GuildLeveDifficultyConfirm) return; Callback.Fire(addon, true, 0, addon->AtkValues[1].Int); diff --git a/YesAlready/Features/AddonInclusionShopFeature.cs b/YesAlready/Features/AddonInclusionShopFeature.cs index 28d329c..d214eeb 100644 --- a/YesAlready/Features/AddonInclusionShopFeature.cs +++ b/YesAlready/Features/AddonInclusionShopFeature.cs @@ -29,7 +29,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.InclusionShopRememberEnabled) + if (!P.Active || !P.Config.InclusionShopRememberEnabled) return; Svc.Log.Debug($"Firing 12,{P.Config.InclusionShopRememberCategory}"); diff --git a/YesAlready/Features/AddonItemInspectionResultFeature.cs b/YesAlready/Features/AddonItemInspectionResultFeature.cs index a022159..b25fbd1 100644 --- a/YesAlready/Features/AddonItemInspectionResultFeature.cs +++ b/YesAlready/Features/AddonItemInspectionResultFeature.cs @@ -29,7 +29,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.ItemInspectionResultEnabled) + if (!P.Active || !P.Config.ItemInspectionResultEnabled) return; var addonPtr = (AddonItemInspectionResult*)addon; diff --git a/YesAlready/Features/AddonJournalResultFeature.cs b/YesAlready/Features/AddonJournalResultFeature.cs index e3ca910..f782b54 100644 --- a/YesAlready/Features/AddonJournalResultFeature.cs +++ b/YesAlready/Features/AddonJournalResultFeature.cs @@ -25,7 +25,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.JournalResultCompleteEnabled) + if (!P.Active || !P.Config.JournalResultCompleteEnabled) return; var addonPtr = (AddonJournalResult*)addon; diff --git a/YesAlready/Features/AddonMateriaRetrieveDialogFeature.cs b/YesAlready/Features/AddonMateriaRetrieveDialogFeature.cs index ee3771c..e6441ed 100644 --- a/YesAlready/Features/AddonMateriaRetrieveDialogFeature.cs +++ b/YesAlready/Features/AddonMateriaRetrieveDialogFeature.cs @@ -24,7 +24,7 @@ protected static unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInf { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.MateriaRetrieveDialogEnabled) + if (!P.Active || !P.Config.MateriaRetrieveDialogEnabled) return; ClickMateriaRetrieveDialog.Using((nint)addon).Begin(); diff --git a/YesAlready/Features/AddonMaterializeDialogFeature.cs b/YesAlready/Features/AddonMaterializeDialogFeature.cs index 7902721..cc9f651 100644 --- a/YesAlready/Features/AddonMaterializeDialogFeature.cs +++ b/YesAlready/Features/AddonMaterializeDialogFeature.cs @@ -24,7 +24,7 @@ protected static unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInf { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.MaterializeDialogEnabled) + if (!P.Active || !P.Config.MaterializeDialogEnabled) return; ClickMaterializeDialog.Using((nint)addon).Materialize(); diff --git a/YesAlready/Features/AddonRetainerTaskAskFeature.cs b/YesAlready/Features/AddonRetainerTaskAskFeature.cs index 4918341..8727341 100644 --- a/YesAlready/Features/AddonRetainerTaskAskFeature.cs +++ b/YesAlready/Features/AddonRetainerTaskAskFeature.cs @@ -24,7 +24,7 @@ protected static unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInf { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.RetainerTaskAskEnabled) + if (!P.Active || !P.Config.RetainerTaskAskEnabled) return; ClickRetainerTaskAsk.Using((nint)addon).Assign(); diff --git a/YesAlready/Features/AddonRetainerTaskResultFeature.cs b/YesAlready/Features/AddonRetainerTaskResultFeature.cs index 6021d26..fa2743d 100644 --- a/YesAlready/Features/AddonRetainerTaskResultFeature.cs +++ b/YesAlready/Features/AddonRetainerTaskResultFeature.cs @@ -27,7 +27,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.RetainerTaskResultEnabled) + if (!P.Active || !P.Config.RetainerTaskResultEnabled) return; var addonPtr = (AddonRetainerTaskResult*)addon; diff --git a/YesAlready/Features/AddonSalvageDialogFeature.cs b/YesAlready/Features/AddonSalvageDialogFeature.cs index 7a88a2a..a967d0e 100644 --- a/YesAlready/Features/AddonSalvageDialogFeature.cs +++ b/YesAlready/Features/AddonSalvageDialogFeature.cs @@ -25,7 +25,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled) + if (!P.Active) return; if (P.Config.DesynthBulkDialogEnabled) diff --git a/YesAlready/Features/AddonSelectIconStringFeature.cs b/YesAlready/Features/AddonSelectIconStringFeature.cs index 06d2fbd..5eb4cfd 100644 --- a/YesAlready/Features/AddonSelectIconStringFeature.cs +++ b/YesAlready/Features/AddonSelectIconStringFeature.cs @@ -28,7 +28,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled) + if (!P.Active) return; var addonPtr = (AddonSelectIconString*)addon; diff --git a/YesAlready/Features/AddonSelectStringFeature.cs b/YesAlready/Features/AddonSelectStringFeature.cs index 0a0f999..c14a611 100644 --- a/YesAlready/Features/AddonSelectStringFeature.cs +++ b/YesAlready/Features/AddonSelectStringFeature.cs @@ -28,7 +28,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled) + if (!P.Active) return; var addonPtr = (AddonSelectString*)addon; diff --git a/YesAlready/Features/AddonSelectYesNoFeature.cs b/YesAlready/Features/AddonSelectYesNoFeature.cs index 49f9523..b3b6084 100644 --- a/YesAlready/Features/AddonSelectYesNoFeature.cs +++ b/YesAlready/Features/AddonSelectYesNoFeature.cs @@ -31,7 +31,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled) + if (!P.Active) return; var dataPtr = (AddonSelectYesNoOnSetupData*)addon; diff --git a/YesAlready/Features/AddonShopCardDialogFeature.cs b/YesAlready/Features/AddonShopCardDialogFeature.cs index 304cfba..911e297 100644 --- a/YesAlready/Features/AddonShopCardDialogFeature.cs +++ b/YesAlready/Features/AddonShopCardDialogFeature.cs @@ -25,7 +25,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.ShopCardDialog) + if (!P.Active || !P.Config.ShopCardDialog) return; var addonPtr = (AddonShopCardDialog*)addon; diff --git a/YesAlready/Features/AddonShopExchangeItemDialogFeature.cs b/YesAlready/Features/AddonShopExchangeItemDialogFeature.cs index 31aecb6..bc66dca 100644 --- a/YesAlready/Features/AddonShopExchangeItemDialogFeature.cs +++ b/YesAlready/Features/AddonShopExchangeItemDialogFeature.cs @@ -24,7 +24,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled || !P.Config.ShopExchangeItemDialogEnabled) + if (!P.Active || !P.Config.ShopExchangeItemDialogEnabled) return; Callback.Fire(addon, true, 0); diff --git a/YesAlready/Features/AddonTalkFeature.cs b/YesAlready/Features/AddonTalkFeature.cs index d926fa4..058cea5 100644 --- a/YesAlready/Features/AddonTalkFeature.cs +++ b/YesAlready/Features/AddonTalkFeature.cs @@ -32,7 +32,7 @@ protected unsafe void AddonSetup(AddonEvent eventType, AddonArgs addonInfo) { var addon = (AtkUnitBase*)addonInfo.Addon; - if (!P.Config.Enabled) + if (!P.Active) return; var addonPtr = (AddonTalk*)addon; diff --git a/YesAlready/IPC/BlockListHandler.cs b/YesAlready/IPC/BlockListHandler.cs new file mode 100644 index 0000000..60cf2db --- /dev/null +++ b/YesAlready/IPC/BlockListHandler.cs @@ -0,0 +1,22 @@ +using ECommons.DalamudServices; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace YesAlready.IPC +{ + internal class BlockListHandler + { + internal const string BlockListNamespace = "YesAlready.StopRequests"; + internal HashSet BlockList; + internal bool Locked => BlockList.Count != 0; + + internal BlockListHandler() + { + BlockList = Svc.PluginInterface.GetOrCreateData>(BlockListNamespace, () => []); + BlockList.Clear(); + } + } +} diff --git a/YesAlready/UI/MainWindow.cs b/YesAlready/UI/MainWindow.cs index 15f08dd..117bbda 100644 --- a/YesAlready/UI/MainWindow.cs +++ b/YesAlready/UI/MainWindow.cs @@ -11,6 +11,8 @@ using ClickLib.Exceptions; using System.Linq; using PunishLib.ImGuiMethods; +using Dalamud.Interface.Colors; +using ECommons; namespace YesAlready.UI; @@ -62,6 +64,15 @@ public override void Draw() if (ImGui.Button("Disable Features")) EnableFeatures(false); #endif + if (P.BlockListHandler.Locked) + { + ImGuiEx.Text(ImGuiColors.DalamudRed, $"Yes Already function is paused because following plugins have requested it: {P.BlockListHandler.BlockList.Print()}"); + if(ImGui.Button("Force unlock")) + { + P.BlockListHandler.BlockList.Clear(); + } + } + var enabled = P.Config.Enabled; if (ImGui.Checkbox("Enabled", ref enabled)) { diff --git a/YesAlready/YesAlready.cs b/YesAlready/YesAlready.cs index 51be5e0..b74c367 100644 --- a/YesAlready/YesAlready.cs +++ b/YesAlready/YesAlready.cs @@ -17,6 +17,7 @@ using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.IoC; using Dalamud.Plugin.Services; +using YesAlready.IPC; namespace YesAlready; public class YesAlready : IDalamudPlugin @@ -37,6 +38,9 @@ public class YesAlready : IDalamudPlugin internal static DalamudPluginInterface pi; private readonly DtrBarEntry dtrEntry; + internal BlockListHandler BlockListHandler; + + internal bool Active => Config.Enabled && !BlockListHandler.Locked; public YesAlready(DalamudPluginInterface pluginInterface) { @@ -46,6 +50,7 @@ public YesAlready(DalamudPluginInterface pluginInterface) Ws = new(); MainWindow = new(); Ws.AddWindow(MainWindow); + BlockListHandler = new(); Config = pi.GetPluginConfig() as Configuration ?? new Configuration(); Configuration.Initialize(Svc.PluginInterface); @@ -183,7 +188,7 @@ private void FrameworkUpdate(object framework) if (dtrEntry.Shown) { - dtrEntry.Text = new SeString(new TextPayload($"{Name}: {(P.Config.Enabled ? "On" : "Off")}")); + dtrEntry.Text = new SeString(new TextPayload($"{Name}: {(P.Config.Enabled ? (P.BlockListHandler.Locked?"Paused":"On") : "Off")}")); dtrEntry.OnClick = () => P.Config.Enabled ^= true; } } diff --git a/YesAlready/YesAlready.csproj b/YesAlready/YesAlready.csproj index 02cb5fa..4cfbcb3 100644 --- a/YesAlready/YesAlready.csproj +++ b/YesAlready/YesAlready.csproj @@ -2,7 +2,7 @@ daemitus, croizat - 1.4.0.0 + 1.4.0.1