From ffbc89a8010388f04aa1e7acbd9165818d6ce055 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Fri, 22 Jun 2018 11:24:52 +0200 Subject: [PATCH] Move menuActionHook to mixins Signed-off-by: Tomas Slusny --- .../net/runelite/client/callback/Hooks.java | 29 +------------------ .../net/runelite/client/callback/Hooks.java | 5 ---- .../net/runelite/mixins/RSClientMixin.java | 25 ++++++++++++++-- 3 files changed, 23 insertions(+), 36 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java index 7204fd4d4e..1ad07b523a 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java @@ -40,11 +40,9 @@ import java.awt.image.BufferedImage; import java.awt.image.VolatileImage; import net.runelite.api.Client; import net.runelite.api.MainBufferProvider; -import net.runelite.api.MenuAction; import net.runelite.api.RenderOverview; import net.runelite.api.WorldMapManager; import net.runelite.api.events.GameTick; -import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.widgets.Widget; import static net.runelite.api.widgets.WidgetInfo.WORLD_MAP_VIEW; import net.runelite.client.Notifier; @@ -266,7 +264,7 @@ public class Hooks stretchedGraphics = (Graphics2D) stretchedImage.getGraphics(); lastStretchedDimensions = stretchedDimensions; - + /* Fill Canvas before drawing stretched image to prevent artifacts. */ @@ -337,31 +335,6 @@ public class Hooks } } - public static boolean menuActionHook(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7) - { - /* Along the way, the RuneScape client may change a menuAction by incrementing it with 2000. - * I have no idea why, but it does. Their code contains the same conditional statement. - */ - if (menuAction >= 2000) - { - menuAction -= 2000; - } - - MenuOptionClicked menuOptionClicked = new MenuOptionClicked(); - menuOptionClicked.setActionParam(actionParam); - menuOptionClicked.setMenuOption(menuOption); - menuOptionClicked.setMenuTarget(menuTarget); - menuOptionClicked.setMenuAction(MenuAction.of(menuAction)); - menuOptionClicked.setId(id); - menuOptionClicked.setWidgetId(widgetId); - - log.debug("Menu action clicked: {}", menuOptionClicked); - - eventBus.post(menuOptionClicked); - - return menuOptionClicked.isConsumed(); - } - public static void updateNpcs() { // The NPC update event seem to run every server tick, diff --git a/runelite-mixins/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-mixins/src/main/java/net/runelite/client/callback/Hooks.java index 04dc015362..9f71c83cb8 100644 --- a/runelite-mixins/src/main/java/net/runelite/client/callback/Hooks.java +++ b/runelite-mixins/src/main/java/net/runelite/client/callback/Hooks.java @@ -123,9 +123,4 @@ public class Hooks { throw new RuntimeException(); } - - public static boolean menuActionHook(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7) - { - throw new RuntimeException(); - } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index e4451a1890..b8fe5826f7 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -72,6 +72,7 @@ import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GrandExchangeOfferChanged; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuOpened; +import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.PlayerDespawned; import net.runelite.api.events.PlayerMenuOptionsChanged; @@ -983,13 +984,31 @@ public abstract class RSClientMixin implements RSClient } @Replace("menuAction") - static void rl$menuAction(int var0, int var1, int var2, int var3, String var4, String var5, int var6, int var7) + static void rl$menuAction(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7) { - if (Hooks.menuActionHook(var0, var1, var2, var3, var4, var5, var6, var7)) + /* Along the way, the RuneScape client may change a menuAction by incrementing it with 2000. + * I have no idea why, but it does. Their code contains the same conditional statement. + */ + if (menuAction >= 2000) + { + menuAction -= 2000; + } + + final MenuOptionClicked menuOptionClicked = new MenuOptionClicked(); + menuOptionClicked.setActionParam(actionParam); + menuOptionClicked.setMenuOption(menuOption); + menuOptionClicked.setMenuTarget(menuTarget); + menuOptionClicked.setMenuAction(MenuAction.of(menuAction)); + menuOptionClicked.setId(id); + menuOptionClicked.setWidgetId(widgetId); + eventBus.post(menuOptionClicked); + + if (menuOptionClicked.isConsumed()) { return; } - rs$menuAction(var0, var1, var2, var3, var4, var5, var6, var7); + + rs$menuAction(actionParam, widgetId, menuAction, id, menuOption, menuTarget, var6, var7); } @FieldHook("username")