Allow MenuOptionClicked events to be consumed

This commit is contained in:
Max Weber
2018-04-12 05:52:12 -06:00
parent 0680fe5940
commit 39a78166dc
4 changed files with 31 additions and 1 deletions

View File

@@ -36,4 +36,10 @@ public class MenuOptionClicked
private MenuAction menuAction;
private int id;
private int widgetId;
private boolean consumed;
public void consume()
{
this.consumed = true;
}
}

View File

@@ -339,7 +339,7 @@ public class Hooks
}
}
public static void menuActionHook(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7)
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.
@@ -360,6 +360,8 @@ public class Hooks
log.debug("Menu action clicked: {}", menuOptionClicked);
eventBus.post(menuOptionClicked);
return menuOptionClicked.isConsumed();
}
public static void addChatMessage(int type, String name, String message, String sender)

View File

@@ -102,4 +102,9 @@ 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();
}
}

View File

@@ -77,6 +77,7 @@ import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.callback.Hooks;
import static net.runelite.client.callback.Hooks.eventBus;
import net.runelite.rs.api.RSClanMemberManager;
import net.runelite.rs.api.RSClient;
@@ -786,4 +787,20 @@ public abstract class RSClientMixin implements RSClient
client.setHintArrowX(point.getX());
client.setHintArrowY(point.getY());
}
@Copy("menuAction")
static void rs$menuAction(int var0, int var1, int var2, int var3, String var4, String var5, int var6, int var7)
{
throw new RuntimeException();
}
@Replace("menuAction")
static void rl$menuAction(int var0, int var1, int var2, int var3, String var4, String var5, int var6, int var7)
{
if (Hooks.menuActionHook(var0, var1, var2, var3, var4, var5, var6, var7))
{
return;
}
rs$menuAction(var0, var1, var2, var3, var4, var5, var6, var7);
}
}