Move menuActionHook to mixins
Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user