Merge pull request #769 from Lucwousin/baaaaaaaaaaaaaaaaaa
menumanager: fix menu swaps not working when left clicking items
This commit is contained in:
@@ -42,6 +42,11 @@ public class AALoad extends Instruction implements ArrayLoad
|
|||||||
super(instructions, type);
|
super(instructions, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AALoad(Instructions instructions)
|
||||||
|
{
|
||||||
|
super(instructions, InstructionType.AALOAD);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InstructionContext execute(Frame frame)
|
public InstructionContext execute(Frame frame)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -99,6 +99,11 @@ public class InjectUtil
|
|||||||
if (hint != null)
|
if (hint != null)
|
||||||
{
|
{
|
||||||
ClassFile c = inject.getDeobfuscated().findClass(hint);
|
ClassFile c = inject.getDeobfuscated().findClass(hint);
|
||||||
|
if (c == null)
|
||||||
|
{
|
||||||
|
throw new InjectionException("Class " + hint + " doesn't exist. (check capitalization)");
|
||||||
|
}
|
||||||
|
|
||||||
for (Field f : c.getFields())
|
for (Field f : c.getFields())
|
||||||
{
|
{
|
||||||
if (!f.getName().equals(name))
|
if (!f.getName().equals(name))
|
||||||
|
|||||||
@@ -70,4 +70,17 @@ public class MenuEntry
|
|||||||
* This is used for shift click
|
* This is used for shift click
|
||||||
*/
|
*/
|
||||||
private boolean forceLeftClick;
|
private boolean forceLeftClick;
|
||||||
|
|
||||||
|
public static MenuEntry copy(MenuEntry src)
|
||||||
|
{
|
||||||
|
return new MenuEntry(
|
||||||
|
src.getOption(),
|
||||||
|
src.getTarget(),
|
||||||
|
src.getIdentifier(),
|
||||||
|
src.getType(),
|
||||||
|
src.getParam0(),
|
||||||
|
src.getParam1(),
|
||||||
|
src.isForceLeftClick()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,10 +42,15 @@ import net.runelite.api.MenuEntry;
|
|||||||
@Data
|
@Data
|
||||||
public class MenuOptionClicked
|
public class MenuOptionClicked
|
||||||
{
|
{
|
||||||
|
public MenuOptionClicked(MenuEntry entry)
|
||||||
|
{
|
||||||
|
menuEntry = entry;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The actual MenuEntry object representing what was clicked
|
* The actual MenuEntry object representing what was clicked
|
||||||
*/
|
*/
|
||||||
private final MenuEntry menuEntry;
|
private MenuEntry menuEntry;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The option text added to the menu.
|
* The option text added to the menu.
|
||||||
|
|||||||
@@ -72,6 +72,16 @@ public class ComparableEntry
|
|||||||
this.strictTarget = strictTarget;
|
this.strictTarget = strictTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is only used for type checking, which is why it has everything but target
|
||||||
|
// target sometimes changes to option.
|
||||||
|
public ComparableEntry(MenuEntry e)
|
||||||
|
{
|
||||||
|
this.option = e.getOption();
|
||||||
|
this.id = e.getIdentifier();
|
||||||
|
this.type = e.getType();
|
||||||
|
this.strictOption = true;
|
||||||
|
}
|
||||||
|
|
||||||
boolean matches(MenuEntry entry)
|
boolean matches(MenuEntry entry)
|
||||||
{
|
{
|
||||||
String opt = Text.standardize(entry.getOption());
|
String opt = Text.standardize(entry.getOption());
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import java.util.Set;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.MenuAction;
|
import net.runelite.api.MenuAction;
|
||||||
@@ -96,7 +97,7 @@ public class MenuManager
|
|||||||
private final Set<ComparableEntry> hiddenEntries = new HashSet<>();
|
private final Set<ComparableEntry> hiddenEntries = new HashSet<>();
|
||||||
|
|
||||||
private final Map<ComparableEntry, ComparableEntry> swaps = new HashMap<>();
|
private final Map<ComparableEntry, ComparableEntry> swaps = new HashMap<>();
|
||||||
private final Map<MenuEntry, Integer> originalTypes = new HashMap<>();
|
private EntryTypeMapping originalType;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private MenuManager(Client client, EventBus eventBus)
|
private MenuManager(Client client, EventBus eventBus)
|
||||||
@@ -227,7 +228,7 @@ public class MenuManager
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
private void onClientTick(ClientTick event)
|
private void onClientTick(ClientTick event)
|
||||||
{
|
{
|
||||||
originalTypes.clear();
|
originalType = null;
|
||||||
client.sortMenuEntries();
|
client.sortMenuEntries();
|
||||||
|
|
||||||
final MenuEntry[] oldentries = client.getMenuEntries();
|
final MenuEntry[] oldentries = client.getMenuEntries();
|
||||||
@@ -273,8 +274,9 @@ public class MenuManager
|
|||||||
int newType = getLeftClickType(type);
|
int newType = getLeftClickType(type);
|
||||||
if (newType != -1 && newType != type)
|
if (newType != -1 && newType != type)
|
||||||
{
|
{
|
||||||
|
MenuEntry original = MenuEntry.copy(e);
|
||||||
e.setType(newType);
|
e.setType(newType);
|
||||||
originalTypes.put(e, type);
|
originalType = new EntryTypeMapping(new ComparableEntry(e), original);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -409,18 +411,18 @@ public class MenuManager
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onMenuOptionClicked(MenuOptionClicked event)
|
public void onMenuOptionClicked(MenuOptionClicked event)
|
||||||
{
|
{
|
||||||
if (originalTypes.containsKey(event.getMenuEntry()) &&
|
// Type is changed in check
|
||||||
!event.getTarget().equals("do not edit"))
|
if (originalType != null && originalType.check(event))
|
||||||
{
|
{
|
||||||
event.consume();
|
event.consume();
|
||||||
|
|
||||||
client.invokeMenuAction(
|
client.invokeMenuAction(
|
||||||
event.getActionParam0(),
|
event.getActionParam0(),
|
||||||
event.getActionParam1(),
|
event.getActionParam1(),
|
||||||
originalTypes.get(event.getMenuEntry()),
|
event.getType(),
|
||||||
event.getIdentifier(),
|
event.getIdentifier(),
|
||||||
event.getOption(),
|
|
||||||
"do not edit",
|
"do not edit",
|
||||||
|
event.getTarget(),
|
||||||
client.getMouseCanvasPosition().getX(),
|
client.getMouseCanvasPosition().getX(),
|
||||||
client.getMouseCanvasPosition().getY()
|
client.getMouseCanvasPosition().getY()
|
||||||
);
|
);
|
||||||
@@ -749,4 +751,24 @@ public class MenuManager
|
|||||||
{
|
{
|
||||||
hiddenEntries.remove(entry);
|
hiddenEntries.remove(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
private class EntryTypeMapping
|
||||||
|
{
|
||||||
|
private final ComparableEntry comparable;
|
||||||
|
private final MenuEntry target;
|
||||||
|
|
||||||
|
private boolean check(MenuOptionClicked event)
|
||||||
|
{
|
||||||
|
MenuEntry entry = event.getMenuEntry();
|
||||||
|
|
||||||
|
if (!entry.getTarget().equals(entry.getOption()) && !comparable.matches(entry))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.setMenuEntry(target);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4262,7 +4262,7 @@ public final class Client extends GameShell implements Usernamed {
|
|||||||
} else if(menuOptionsCount > 0) {
|
} else if(menuOptionsCount > 0) {
|
||||||
var3 = __client_ja;
|
var3 = __client_ja;
|
||||||
var4 = __client_je;
|
var4 = __client_je;
|
||||||
class231.method4520(UnitPriceComparator.tempMenuAction, var3, var4);
|
class231.processTempMenuAction(UnitPriceComparator.tempMenuAction, var3, var4);
|
||||||
UnitPriceComparator.tempMenuAction = null;
|
UnitPriceComparator.tempMenuAction = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6216,7 +6216,7 @@ public final class Client extends GameShell implements Usernamed {
|
|||||||
if(DevicePcmPlayerProvider.dragInventoryWidget != null && !__client_jl && menuOptionsCount > 0 && !this.shouldLeftClickOpenMenu()) {
|
if(DevicePcmPlayerProvider.dragInventoryWidget != null && !__client_jl && menuOptionsCount > 0 && !this.shouldLeftClickOpenMenu()) {
|
||||||
int var10 = __client_ja;
|
int var10 = __client_ja;
|
||||||
int var11 = __client_je;
|
int var11 = __client_je;
|
||||||
class231.method4520(UnitPriceComparator.tempMenuAction, var10, var11);
|
class231.processTempMenuAction(UnitPriceComparator.tempMenuAction, var10, var11);
|
||||||
UnitPriceComparator.tempMenuAction = null;
|
UnitPriceComparator.tempMenuAction = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6448,7 +6448,7 @@ public final class Client extends GameShell implements Usernamed {
|
|||||||
} else if(menuOptionsCount > 0) {
|
} else if(menuOptionsCount > 0) {
|
||||||
int var13 = widgetClickX + __client_nk;
|
int var13 = widgetClickX + __client_nk;
|
||||||
int var14 = widgetClickY + __client_np;
|
int var14 = widgetClickY + __client_np;
|
||||||
class231.method4520(UnitPriceComparator.tempMenuAction, var13, var14);
|
class231.processTempMenuAction(UnitPriceComparator.tempMenuAction, var13, var14);
|
||||||
UnitPriceComparator.tempMenuAction = null;
|
UnitPriceComparator.tempMenuAction = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -543,14 +543,14 @@ public class class171 {
|
|||||||
signature = "(IIIILjava/lang/String;I)V",
|
signature = "(IIIILjava/lang/String;I)V",
|
||||||
garbageValue = "49247882"
|
garbageValue = "49247882"
|
||||||
)
|
)
|
||||||
static void method3494(int var0, int var1, int var2, int var3, String var4) {
|
static void method3494(int opIndex, int parentID, int childID, int itemID, String target) {
|
||||||
Widget var5 = class204.getWidgetChild(var1, var2);
|
Widget var5 = class204.getWidgetChild(parentID, childID);
|
||||||
if(var5 != null) {
|
if(var5 != null) {
|
||||||
if(var5.onOp != null) {
|
if(var5.onOp != null) {
|
||||||
ScriptEvent var6 = new ScriptEvent();
|
ScriptEvent var6 = new ScriptEvent();
|
||||||
var6.widget = var5;
|
var6.widget = var5;
|
||||||
var6.opIndex = var0;
|
var6.opIndex = opIndex;
|
||||||
var6.targetName = var4;
|
var6.targetName = target;
|
||||||
var6.args0 = var5.onOp;
|
var6.args0 = var5.onOp;
|
||||||
AbstractIndexCache.runScript(var6);
|
AbstractIndexCache.runScript(var6);
|
||||||
}
|
}
|
||||||
@@ -562,87 +562,87 @@ public class class171 {
|
|||||||
|
|
||||||
if(var11) {
|
if(var11) {
|
||||||
int var8 = class1.getWidgetClickMask(var5);
|
int var8 = class1.getWidgetClickMask(var5);
|
||||||
int var9 = var0 - 1;
|
int var9 = opIndex - 1;
|
||||||
boolean var7 = (var8 >> var9 + 1 & 1) != 0;
|
boolean var7 = (var8 >> var9 + 1 & 1) != 0;
|
||||||
if(var7) {
|
if(var7) {
|
||||||
PacketBufferNode var10;
|
PacketBufferNode var10;
|
||||||
if(var0 == 1) {
|
if(opIndex == 1) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_bi, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_bi, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(var0 == 2) {
|
if(opIndex == 2) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_b, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_b, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(var0 == 3) {
|
if(opIndex == 3) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_aa, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_aa, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(var0 == 4) {
|
if(opIndex == 4) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_y, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_y, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(var0 == 5) {
|
if(opIndex == 5) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_ad, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_ad, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(var0 == 6) {
|
if(opIndex == 6) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_br, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_br, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(var0 == 7) {
|
if(opIndex == 7) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_cu, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_cu, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(var0 == 8) {
|
if(opIndex == 8) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_a, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_a, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(var0 == 9) {
|
if(opIndex == 9) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_cj, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_cj, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(var0 == 10) {
|
if(opIndex == 10) {
|
||||||
var10 = Interpreter.method1915(ClientPacket.__gs_m, Client.packetWriter.isaacCipher);
|
var10 = Interpreter.method1915(ClientPacket.__gs_m, Client.packetWriter.isaacCipher);
|
||||||
var10.packetBuffer.writeInt(var1);
|
var10.packetBuffer.writeInt(parentID);
|
||||||
var10.packetBuffer.writeShort(var2);
|
var10.packetBuffer.writeShort(childID);
|
||||||
var10.packetBuffer.writeShort(var3);
|
var10.packetBuffer.writeShort(itemID);
|
||||||
Client.packetWriter.__q_167(var10);
|
Client.packetWriter.__q_167(var10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -178,7 +178,8 @@ public enum class231 implements Enumerated {
|
|||||||
signature = "(Lcs;IIB)V",
|
signature = "(Lcs;IIB)V",
|
||||||
garbageValue = "1"
|
garbageValue = "1"
|
||||||
)
|
)
|
||||||
static final void method4520(MenuAction var0, int var1, int var2) {
|
@Export("processTempMenuAction")
|
||||||
|
static final void processTempMenuAction(MenuAction var0, int var1, int var2) {
|
||||||
Actor.menuAction(var0.argument1, var0.argument2, var0.opcode, var0.argument0, var0.action, var0.action, var1, var2);
|
Actor.menuAction(var0.argument1, var0.argument2, var0.opcode, var0.argument0, var0.action, var0.action, var1, var2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user