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 java.awt.image.VolatileImage;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.MainBufferProvider;
|
import net.runelite.api.MainBufferProvider;
|
||||||
import net.runelite.api.MenuAction;
|
|
||||||
import net.runelite.api.RenderOverview;
|
import net.runelite.api.RenderOverview;
|
||||||
import net.runelite.api.WorldMapManager;
|
import net.runelite.api.WorldMapManager;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.MenuOptionClicked;
|
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import static net.runelite.api.widgets.WidgetInfo.WORLD_MAP_VIEW;
|
import static net.runelite.api.widgets.WidgetInfo.WORLD_MAP_VIEW;
|
||||||
import net.runelite.client.Notifier;
|
import net.runelite.client.Notifier;
|
||||||
@@ -266,7 +264,7 @@ public class Hooks
|
|||||||
stretchedGraphics = (Graphics2D) stretchedImage.getGraphics();
|
stretchedGraphics = (Graphics2D) stretchedImage.getGraphics();
|
||||||
|
|
||||||
lastStretchedDimensions = stretchedDimensions;
|
lastStretchedDimensions = stretchedDimensions;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Fill Canvas before drawing stretched image to prevent artifacts.
|
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()
|
public static void updateNpcs()
|
||||||
{
|
{
|
||||||
// The NPC update event seem to run every server tick,
|
// The NPC update event seem to run every server tick,
|
||||||
|
|||||||
@@ -123,9 +123,4 @@ public class Hooks
|
|||||||
{
|
{
|
||||||
throw new RuntimeException();
|
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.GrandExchangeOfferChanged;
|
||||||
import net.runelite.api.events.MenuEntryAdded;
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
import net.runelite.api.events.MenuOpened;
|
import net.runelite.api.events.MenuOpened;
|
||||||
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
import net.runelite.api.events.NpcSpawned;
|
import net.runelite.api.events.NpcSpawned;
|
||||||
import net.runelite.api.events.PlayerDespawned;
|
import net.runelite.api.events.PlayerDespawned;
|
||||||
import net.runelite.api.events.PlayerMenuOptionsChanged;
|
import net.runelite.api.events.PlayerMenuOptionsChanged;
|
||||||
@@ -983,13 +984,31 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Replace("menuAction")
|
@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;
|
return;
|
||||||
}
|
}
|
||||||
rs$menuAction(var0, var1, var2, var3, var4, var5, var6, var7);
|
|
||||||
|
rs$menuAction(actionParam, widgetId, menuAction, id, menuOption, menuTarget, var6, var7);
|
||||||
}
|
}
|
||||||
|
|
||||||
@FieldHook("username")
|
@FieldHook("username")
|
||||||
|
|||||||
Reference in New Issue
Block a user