From 71886515a98eef22eeedf45b8d9c3ceb1c8165ff Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 20 Apr 2022 08:34:56 -0400 Subject: [PATCH] antidrag: update for if3 inv --- .../main/java/net/runelite/api/ScriptID.java | 3 + .../plugins/antidrag/AntiDragPlugin.java | 78 ++++++++++++------- 2 files changed, 55 insertions(+), 26 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/ScriptID.java b/runelite-api/src/main/java/net/runelite/api/ScriptID.java index 53348d4b3f..fc0e708290 100644 --- a/runelite-api/src/main/java/net/runelite/api/ScriptID.java +++ b/runelite-api/src/main/java/net/runelite/api/ScriptID.java @@ -405,4 +405,7 @@ public final class ScriptID @ScriptArguments(integer = 7) public static final int GROUP_IRONMAN_STORAGE_BUILD = 5269; + + @ScriptArguments(integer = 6) + public static final int INVENTORY_DRAWITEM = 6011; } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java index e1b6377612..434f77c904 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java @@ -27,9 +27,12 @@ package net.runelite.client.plugins.antidrag; import com.google.inject.Provides; import java.awt.event.KeyEvent; import javax.inject.Inject; +import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.GameState; +import net.runelite.api.ScriptID; import net.runelite.api.events.FocusChanged; +import net.runelite.api.events.ScriptPostFired; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetID; @@ -49,6 +52,7 @@ import net.runelite.client.plugins.PluginDescriptor; tags = {"antidrag", "delay", "inventory", "items"}, enabledByDefault = false ) +@Slf4j public class AntiDragPlugin extends Plugin implements KeyListener { static final String CONFIG_GROUP = "antiDrag"; @@ -182,6 +186,37 @@ public class AntiDragPlugin extends Plugin implements KeyListener { setBankDragDelay(config.dragDelay()); } + else if (widgetLoaded.getGroupId() == WidgetID.INVENTORY_GROUP_ID) + { + setInvDragDelay(config.dragDelay()); + } + } + + @Subscribe + private void onScriptPostFired(ScriptPostFired ev) + { + if (ev.getScriptId() == ScriptID.INVENTORY_DRAWITEM) + { + Widget inv = client.getWidget(WidgetInfo.INVENTORY); + final int delay = config.dragDelay(); + for (Widget child : inv.getDynamicChildren()) + { + // disable [clientscript,inventory_antidrag_update] listener + child.setOnMouseRepeatListener((Object[]) null); + child.setDragDeadTime(delay); + } + } + } + + private static void applyDragDelay(Widget widget, int delay) + { + if (widget != null) + { + for (Widget item : widget.getDynamicChildren()) + { + item.setDragDeadTime(delay); + } + } } private void setBankDragDelay(int delay) @@ -189,41 +224,32 @@ public class AntiDragPlugin extends Plugin implements KeyListener final Widget bankItemContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER); final Widget bankInventoryItemsContainer = client.getWidget(WidgetInfo.BANK_INVENTORY_ITEMS_CONTAINER); final Widget bankDepositContainer = client.getWidget(WidgetInfo.DEPOSIT_BOX_INVENTORY_ITEMS_CONTAINER); - if (bankItemContainer != null) - { - Widget[] items = bankItemContainer.getDynamicChildren(); - for (Widget item : items) - { - item.setDragDeadTime(delay); - } - } - if (bankInventoryItemsContainer != null) - { - Widget[] items = bankInventoryItemsContainer.getDynamicChildren(); - for (Widget item : items) - { - item.setDragDeadTime(delay); - } - } - if (bankDepositContainer != null) - { - Widget[] items = bankDepositContainer.getDynamicChildren(); - for (Widget item : items) - { - item.setDragDeadTime(delay); - } - } + + applyDragDelay(bankItemContainer, delay); + applyDragDelay(bankInventoryItemsContainer, delay); + applyDragDelay(bankDepositContainer, delay); + } + + private void setInvDragDelay(int delay) + { + final Widget inventory = client.getWidget(WidgetInfo.INVENTORY); + applyDragDelay(inventory, delay); } private void setDragDelay() { - client.setInventoryDragDelay(config.dragDelay()); - setBankDragDelay(config.dragDelay()); + final int delay = config.dragDelay(); + log.debug("Set delay to {}", delay); + client.setInventoryDragDelay(delay); + setInvDragDelay(delay); + setBankDragDelay(delay); } private void resetDragDelay() { + log.debug("Reset delay to {}", DEFAULT_DELAY); client.setInventoryDragDelay(DEFAULT_DELAY); + setInvDragDelay(DEFAULT_DELAY); setBankDragDelay(DEFAULT_DELAY); }