Client: menu changes (#1553)
* Remove sortMenuEntries as it is called before it would be used anyway * Modify the menuentries in MenuOpened rather than setting twice * menus: Corp, Devtools, Friend notes/tags, Grand exchange * menus: Manager, ground items
This commit is contained in:
@@ -1743,12 +1743,6 @@ public interface Client extends GameShell
|
||||
*/
|
||||
void setUnhiddenCasts(Set<String> casts);
|
||||
|
||||
/**
|
||||
* Sorts the current menu entries in the same way the client does this.
|
||||
* The last entry will be the left click one after this.
|
||||
*/
|
||||
void sortMenuEntries();
|
||||
|
||||
/**
|
||||
* Add player to friendlist
|
||||
*/
|
||||
|
||||
@@ -33,6 +33,13 @@ import lombok.Data;
|
||||
@Data
|
||||
public class MenuOpened implements Event
|
||||
{
|
||||
/**
|
||||
* This should be set to true if anything about the menu
|
||||
* in menuEntries is changed, so the changes can be
|
||||
* propagated through to the client.
|
||||
*/
|
||||
private boolean modified;
|
||||
|
||||
/**
|
||||
* The menu entries in the newly opened menu.
|
||||
* <p>
|
||||
|
||||
@@ -240,7 +240,7 @@ public class MenuManager
|
||||
|
||||
// Need to set the event entries to prevent conflicts
|
||||
event.setMenuEntries(arrayEntries);
|
||||
client.setMenuEntries(arrayEntries);
|
||||
event.setModified(true);
|
||||
}
|
||||
|
||||
private void onMenuEntryAdded(MenuEntryAdded event)
|
||||
@@ -256,21 +256,20 @@ public class MenuManager
|
||||
|
||||
int widgetId = event.getActionParam1();
|
||||
Collection<WidgetMenuOption> options = managedMenuOptions.get(widgetId);
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
|
||||
for (WidgetMenuOption currentMenu : options)
|
||||
{
|
||||
if (!menuContainsCustomMenu(currentMenu))//Don't add if we have already added it to this widget
|
||||
{
|
||||
menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1);
|
||||
|
||||
MenuEntry menuEntry = menuEntries[menuEntries.length - 1] = new MenuEntry();
|
||||
menuEntry.setOption(currentMenu.getMenuOption());
|
||||
menuEntry.setParam1(widgetId);
|
||||
menuEntry.setTarget(currentMenu.getMenuTarget());
|
||||
menuEntry.setOpcode(MenuOpcode.RUNELITE.getId());
|
||||
|
||||
client.setMenuEntries(menuEntries);
|
||||
client.insertMenuItem(
|
||||
currentMenu.getMenuOption(),
|
||||
currentMenu.getMenuTarget(),
|
||||
MenuOpcode.RUNELITE.getId(),
|
||||
0,
|
||||
0,
|
||||
widgetId,
|
||||
false
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -293,8 +292,6 @@ public class MenuManager
|
||||
return null;
|
||||
}
|
||||
|
||||
client.sortMenuEntries();
|
||||
|
||||
firstEntry = null;
|
||||
MenuEntry[] entries = new MenuEntry[menuOptionCount + priorityEntries.size()];
|
||||
System.arraycopy(client.getMenuEntries(), 0, entries, 0, menuOptionCount);
|
||||
@@ -873,7 +870,6 @@ public class MenuManager
|
||||
|
||||
// Backwards so we swap with the otherwise highest one
|
||||
// Count - 2 so we don't compare the entry against itself
|
||||
outer:
|
||||
for (int i = menuOptionCount - 2; i > 0; i--)
|
||||
{
|
||||
final MenuEntry entry = entries[i];
|
||||
@@ -887,7 +883,7 @@ public class MenuManager
|
||||
entries[i] = first;
|
||||
entries[menuOptionCount - 1] = entry;
|
||||
firstEntry = entry;
|
||||
break outer;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,9 +35,8 @@ import net.runelite.api.Actor;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.MenuOpcode;
|
||||
import static net.runelite.api.MenuOpcode.MENU_ACTION_DEPRIORITIZE_OFFSET;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import static net.runelite.api.MenuOpcode.NPC_SECOND_OPTION;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.NpcID;
|
||||
import net.runelite.api.Varbits;
|
||||
@@ -66,7 +65,6 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
||||
@Slf4j
|
||||
public class CorpPlugin extends Plugin
|
||||
{
|
||||
private static final int NPC_SECTION_ACTION = MenuOpcode.NPC_SECOND_OPTION.getId();
|
||||
private static final String ATTACK = "Attack";
|
||||
private static final String DARK_ENERGY_CORE = "Dark energy core";
|
||||
|
||||
@@ -244,27 +242,23 @@ public class CorpPlugin extends Plugin
|
||||
players.add(source);
|
||||
}
|
||||
|
||||
private void onMenuEntryAdded(MenuEntryAdded menuEntryAdded)
|
||||
private void onMenuEntryAdded(MenuEntryAdded event)
|
||||
{
|
||||
if (menuEntryAdded.getType() != NPC_SECTION_ACTION
|
||||
|| !this.leftClickCore || !menuEntryAdded.getOption().equals(ATTACK))
|
||||
if (event.getType() != NPC_SECOND_OPTION.getId()
|
||||
|| !this.leftClickCore || !event.getOption().equals(ATTACK))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final int npcIndex = menuEntryAdded.getIdentifier();
|
||||
final int npcIndex = event.getIdentifier();
|
||||
final NPC npc = client.getCachedNPCs()[npcIndex];
|
||||
if (npc == null || !npc.getName().equals(DARK_ENERGY_CORE))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// since this is the menu entry add event, this is the last menu entry
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
MenuEntry menuEntry = menuEntries[menuEntries.length - 1];
|
||||
|
||||
menuEntry.setOpcode(NPC_SECTION_ACTION + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
||||
client.setMenuEntries(menuEntries);
|
||||
event.getMenuEntry().setOpcode(NPC_SECOND_OPTION.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET);
|
||||
event.setWasModified(true);
|
||||
}
|
||||
|
||||
private void onConfigChanged(ConfigChanged configChanged)
|
||||
|
||||
@@ -388,8 +388,7 @@ public class DevToolsPlugin extends Plugin
|
||||
|
||||
if (EXAMINE_MENU_ACTIONS.contains(action))
|
||||
{
|
||||
MenuEntry[] entries = client.getMenuEntries();
|
||||
MenuEntry entry = entries[entries.length - 1];
|
||||
final MenuEntry entry = event.getMenuEntry();
|
||||
|
||||
final int identifier = event.getIdentifier();
|
||||
String info = "ID: ";
|
||||
@@ -411,7 +410,7 @@ public class DevToolsPlugin extends Plugin
|
||||
}
|
||||
|
||||
entry.setTarget(entry.getTarget() + " " + ColorUtil.prependColorTag("(" + info + ")", JagexColors.MENU_TARGET));
|
||||
client.setMenuEntries(entries);
|
||||
event.setWasModified(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
package net.runelite.client.plugins.friendnotes;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.ObjectArrays;
|
||||
import java.awt.Color;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
@@ -38,7 +37,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Friend;
|
||||
import net.runelite.api.MenuOpcode;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.Nameable;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
import net.runelite.api.events.MenuOptionClicked;
|
||||
@@ -185,16 +183,16 @@ public class FriendNotesPlugin extends Plugin
|
||||
setHoveredFriend(Text.toJagexName(Text.removeTags(event.getTarget())));
|
||||
|
||||
// Build "Add Note" or "Edit Note" menu entry
|
||||
final MenuEntry addNote = new MenuEntry();
|
||||
addNote.setOption(hoveredFriend == null || hoveredFriend.getNote() == null ? ADD_NOTE : EDIT_NOTE);
|
||||
addNote.setOpcode(MenuOpcode.RUNELITE.getId());
|
||||
addNote.setTarget(event.getTarget()); //Preserve color codes here
|
||||
addNote.setParam0(event.getActionParam0());
|
||||
addNote.setParam1(event.getActionParam1());
|
||||
|
||||
// Add menu entry
|
||||
final MenuEntry[] menuEntries = ObjectArrays.concat(client.getMenuEntries(), addNote);
|
||||
client.setMenuEntries(menuEntries);
|
||||
client.insertMenuItem(
|
||||
hoveredFriend == null || hoveredFriend.getNote() == null ? ADD_NOTE : EDIT_NOTE,
|
||||
event.getTarget(),
|
||||
MenuOpcode.RUNELITE.getId(),
|
||||
0,
|
||||
event.getActionParam0(),
|
||||
event.getActionParam1(),
|
||||
false
|
||||
);
|
||||
}
|
||||
else if (hoveredFriend != null)
|
||||
{
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
package net.runelite.client.plugins.friendtagging;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.ObjectArrays;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.util.Arrays;
|
||||
@@ -25,7 +24,6 @@ import net.runelite.api.Client;
|
||||
import net.runelite.api.Friend;
|
||||
import net.runelite.api.Ignore;
|
||||
import net.runelite.api.MenuOpcode;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.Nameable;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
import net.runelite.api.events.MenuOptionClicked;
|
||||
@@ -129,16 +127,17 @@ public class FriendTaggingPlugin extends Plugin
|
||||
String friendName = Text.removeTags(event.getTarget());
|
||||
|
||||
// Build "Add Note" or "Edit Note" menu entry
|
||||
final MenuEntry entry = new MenuEntry();
|
||||
entry.setOption(friendName == null || getTag(friendName) == null ? ADD_TAG : DELETE_TAG);
|
||||
entry.setOpcode(MenuOpcode.RUNELITE.getId());
|
||||
entry.setTarget(event.getTarget()); //Preserve color codes here
|
||||
entry.setParam0(event.getActionParam0());
|
||||
entry.setParam1(event.getActionParam1());
|
||||
|
||||
client.insertMenuItem(
|
||||
friendName == null || getTag(friendName) == null ? ADD_TAG : DELETE_TAG,
|
||||
event.getTarget(),
|
||||
MenuOpcode.RUNELITE.getId(),
|
||||
0,
|
||||
event.getActionParam0(),
|
||||
event.getActionParam1(),
|
||||
false
|
||||
);
|
||||
// Add menu entry
|
||||
final MenuEntry[] menuEntries = ObjectArrays.concat(client.getMenuEntries(), entry);
|
||||
client.setMenuEntries(menuEntries);
|
||||
// jk it is already added
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -431,8 +431,7 @@ public class GrandExchangePlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
final MenuEntry[] entries = client.getMenuEntries();
|
||||
final MenuEntry menuEntry = entries[entries.length - 1];
|
||||
final MenuEntry menuEntry = event.getMenuEntry();
|
||||
final int widgetId = menuEntry.getParam1();
|
||||
final int groupId = WidgetInfo.TO_GROUP(widgetId);
|
||||
|
||||
@@ -450,7 +449,7 @@ public class GrandExchangePlugin extends Plugin
|
||||
case WidgetID.SHOP_INVENTORY_GROUP_ID:
|
||||
menuEntry.setOption(SEARCH_GRAND_EXCHANGE);
|
||||
menuEntry.setOpcode(MenuOpcode.RUNELITE.getId());
|
||||
client.setMenuEntries(entries);
|
||||
event.setWasModified(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -951,8 +951,7 @@ public class GroundItemsPlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
MenuEntry lastEntry = menuEntries[menuEntries.length - 1];
|
||||
final MenuEntry lastEntry = event.getMenuEntry();
|
||||
|
||||
int quantity = 1;
|
||||
Node current = tileItemPile.getBottom();
|
||||
@@ -986,6 +985,7 @@ public class GroundItemsPlugin extends Plugin
|
||||
{
|
||||
final String optionText = telegrabEntry ? "Cast" : "Take";
|
||||
lastEntry.setOption(ColorUtil.prependColorTag(optionText, color));
|
||||
event.setWasModified(true);
|
||||
}
|
||||
|
||||
if (mode == BOTH || mode == NAME)
|
||||
@@ -1005,43 +1005,20 @@ public class GroundItemsPlugin extends Plugin
|
||||
}
|
||||
|
||||
lastEntry.setTarget(target);
|
||||
event.setWasModified(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.showMenuItemQuantities && itemComposition.isStackable() && quantity > 1)
|
||||
{
|
||||
lastEntry.setTarget(lastEntry.getTarget() + " (" + quantity + ")");
|
||||
event.setWasModified(true);
|
||||
}
|
||||
|
||||
if (this.removeIgnored && event.getOption().equals("Take") && hiddenItemList.contains(Text.removeTags(event.getTarget())))
|
||||
{
|
||||
menuEntries = removeOption(event.getOption(), event.getTarget());
|
||||
client.setMenuOptionCount(client.getMenuOptionCount() - 1);
|
||||
}
|
||||
|
||||
client.setMenuEntries(menuEntries);
|
||||
}
|
||||
}
|
||||
|
||||
private MenuEntry[] removeOption(String option, String target)
|
||||
{
|
||||
MenuEntry[] entries = client.getMenuEntries();
|
||||
int j = 0;
|
||||
if (entries.length > 1)
|
||||
{
|
||||
MenuEntry[] newEntries = new MenuEntry[entries.length - 1];
|
||||
for (MenuEntry entry : entries)
|
||||
{
|
||||
if (!(entry.getOption().equals(option) && entry.getTarget().equals(target)))
|
||||
{
|
||||
newEntries[j++] = entry;
|
||||
}
|
||||
}
|
||||
|
||||
return newEntries;
|
||||
}
|
||||
else
|
||||
{
|
||||
return entries;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ import java.awt.Color;
|
||||
import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.MenuOpcode;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
@@ -92,9 +91,6 @@ public class InventoryTagsPlugin extends Plugin
|
||||
private static final List<String> GROUPS = ImmutableList.of(SETNAME_GROUP_8, SETNAME_GROUP_7, SETNAME_GROUP_6,
|
||||
SETNAME_GROUP_5, SETNAME_GROUP_4, SETNAME_GROUP_3, SETNAME_GROUP_2, SETNAME_GROUP_1);
|
||||
|
||||
@Inject
|
||||
private Client client;
|
||||
|
||||
@Inject
|
||||
private ConfigManager configManager;
|
||||
|
||||
@@ -254,7 +250,7 @@ public class InventoryTagsPlugin extends Plugin
|
||||
|
||||
// Need to set the event entries to prevent conflicts
|
||||
event.setMenuEntries(menuList);
|
||||
client.setMenuEntries(menuList);
|
||||
event.setModified(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -424,6 +424,7 @@ public class MenuEntrySwapperPlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Remove this? This makes everything here only work in wildy lol
|
||||
if (!(MiscUtils.getWildernessLevelFrom(client, localPlayer.getWorldLocation()) >= 0))
|
||||
{
|
||||
return;
|
||||
@@ -508,9 +509,8 @@ public class MenuEntrySwapperPlugin extends Plugin
|
||||
menu_entries.add(entry);
|
||||
}
|
||||
|
||||
MenuEntry[] updated_menu_entries = new MenuEntry[menu_entries.size()];
|
||||
updated_menu_entries = menu_entries.toArray(updated_menu_entries);
|
||||
client.setMenuEntries(updated_menu_entries);
|
||||
event.setMenuEntries(menu_entries.toArray(new MenuEntry[0]));
|
||||
event.setModified(true);
|
||||
}
|
||||
|
||||
public void onMenuEntryAdded(MenuEntryAdded event)
|
||||
|
||||
@@ -109,47 +109,4 @@ public abstract class MenuMixin implements RSClient
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Inject
|
||||
@Override
|
||||
public void sortMenuEntries()
|
||||
{
|
||||
int count = getMenuOptionCount() - 1;
|
||||
int[] menuOpcodes = getMenuOpcodes();
|
||||
String[] menuTargetNames = getMenuTargets();
|
||||
String[] menuActions = getMenuOptions();
|
||||
int[] menuArguments0 = getMenuIdentifiers();
|
||||
int[] menuArguments1 = getMenuArguments1();
|
||||
int[] menuArguments2 = getMenuArguments2();
|
||||
boolean[] menuShiftClick = getMenuForceLeftClick();
|
||||
|
||||
int tmp;
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
if (menuOpcodes[i] < 1000 && menuOpcodes[i + 1] > 1000)
|
||||
{
|
||||
String var3 = menuTargetNames[i];
|
||||
menuTargetNames[i] = menuTargetNames[i + 1];
|
||||
menuTargetNames[i + 1] = var3;
|
||||
String var4 = menuActions[i];
|
||||
menuActions[i] = menuActions[i + 1];
|
||||
menuActions[i + 1] = var4;
|
||||
tmp = menuOpcodes[i];
|
||||
menuOpcodes[i] = menuOpcodes[i + 1];
|
||||
menuOpcodes[i + 1] = tmp;
|
||||
tmp = menuArguments1[i];
|
||||
menuArguments1[i] = menuArguments1[i + 1];
|
||||
menuArguments1[i + 1] = tmp;
|
||||
tmp = menuArguments2[i];
|
||||
menuArguments2[i] = menuArguments2[i + 1];
|
||||
menuArguments2[i + 1] = tmp;
|
||||
tmp = menuArguments0[i];
|
||||
menuArguments0[i] = menuArguments0[i + 1];
|
||||
menuArguments0[i + 1] = tmp;
|
||||
boolean var6 = menuShiftClick[i];
|
||||
menuShiftClick[i] = menuShiftClick[i + 1];
|
||||
menuShiftClick[i + 1] = var6;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1419,10 +1419,14 @@ public abstract class RSClientMixin implements RSClient
|
||||
@MethodHook("openMenu")
|
||||
public void menuOpened(int x, int y)
|
||||
{
|
||||
sortMenuEntries();
|
||||
final MenuOpened event = new MenuOpened();
|
||||
event.setMenuEntries(getMenuEntries());
|
||||
callbacks.post(MenuOpened.class, event);
|
||||
|
||||
if (event.isModified())
|
||||
{
|
||||
setMenuEntries(event.getMenuEntries());
|
||||
}
|
||||
}
|
||||
|
||||
@Inject
|
||||
|
||||
@@ -5411,131 +5411,133 @@ public final class Client extends GameShell implements Usernamed {
|
||||
garbageValue = "1"
|
||||
)
|
||||
final void method1293() {
|
||||
WorldMapID.method537();
|
||||
if (class188.dragInventoryWidget == null) {
|
||||
if (clickedWidget == null) {
|
||||
int var2;
|
||||
int var4;
|
||||
int var5;
|
||||
int var10;
|
||||
int var19;
|
||||
label274: {
|
||||
int var1 = MouseHandler.MouseHandler_lastButton;
|
||||
int var3;
|
||||
int var6;
|
||||
int var8;
|
||||
if (isMenuOpen) {
|
||||
if (var1 != 1 && (FriendSystem.mouseCam || var1 != 4)) {
|
||||
var2 = MouseHandler.MouseHandler_x;
|
||||
var3 = MouseHandler.MouseHandler_y;
|
||||
if (var2 < MilliClock.menuX - 10 || var2 > World.menuWidth + MilliClock.menuX + 10 || var3 < class96.menuY - 10 || var3 > class1.menuHeight + class96.menuY + 10) {
|
||||
isMenuOpen = false;
|
||||
FloorDecoration.method2786(MilliClock.menuX, class96.menuY, World.menuWidth, class1.menuHeight);
|
||||
}
|
||||
}
|
||||
WorldMapID.sortMenuEntries();
|
||||
if (class188.dragInventoryWidget != null) {
|
||||
return;
|
||||
}
|
||||
if (clickedWidget != null) {
|
||||
return;
|
||||
}
|
||||
int var2;
|
||||
int var4;
|
||||
int var5;
|
||||
int var10;
|
||||
int var19;
|
||||
label274: {
|
||||
int var1 = MouseHandler.MouseHandler_lastButton;
|
||||
int var3;
|
||||
int var6;
|
||||
int var8;
|
||||
if (isMenuOpen) {
|
||||
if (var1 != 1 && (FriendSystem.mouseCam || var1 != 4)) {
|
||||
var2 = MouseHandler.MouseHandler_x;
|
||||
var3 = MouseHandler.MouseHandler_y;
|
||||
if (var2 < MilliClock.menuX - 10 || var2 > World.menuWidth + MilliClock.menuX + 10 || var3 < class96.menuY - 10 || var3 > class1.menuHeight + class96.menuY + 10) {
|
||||
isMenuOpen = false;
|
||||
FloorDecoration.method2786(MilliClock.menuX, class96.menuY, World.menuWidth, class1.menuHeight);
|
||||
}
|
||||
}
|
||||
|
||||
if (var1 == 1 || !FriendSystem.mouseCam && var1 == 4) {
|
||||
var2 = MilliClock.menuX;
|
||||
var3 = class96.menuY;
|
||||
var4 = World.menuWidth;
|
||||
var5 = MouseHandler.MouseHandler_lastPressedX;
|
||||
var6 = MouseHandler.MouseHandler_lastPressedY;
|
||||
int var18 = -1;
|
||||
if (var1 == 1 || !FriendSystem.mouseCam && var1 == 4) {
|
||||
var2 = MilliClock.menuX;
|
||||
var3 = class96.menuY;
|
||||
var4 = World.menuWidth;
|
||||
var5 = MouseHandler.MouseHandler_lastPressedX;
|
||||
var6 = MouseHandler.MouseHandler_lastPressedY;
|
||||
int var18 = -1;
|
||||
|
||||
for (var8 = 0; var8 < menuOptionsCount; ++var8) {
|
||||
var19 = var3 + (menuOptionsCount - 1 - var8) * 15 + 31;
|
||||
if (var5 > var2 && var5 < var4 + var2 && var6 > var19 - 13 && var6 < var19 + 3) {
|
||||
var18 = var8;
|
||||
}
|
||||
}
|
||||
|
||||
if (var18 != -1 && var18 >= 0) {
|
||||
var8 = menuArguments1[var18];
|
||||
var19 = menuArguments2[var18];
|
||||
var10 = menuOpcodes[var18];
|
||||
int var17 = menuIdentifiers[var18];
|
||||
String var12 = menuActions[var18];
|
||||
String var13 = menuTargets[var18];
|
||||
SecureRandomFuture.menuAction(var8, var19, var10, var17, var12, var13, MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
||||
}
|
||||
|
||||
isMenuOpen = false;
|
||||
FloorDecoration.method2786(MilliClock.menuX, class96.menuY, World.menuWidth, class1.menuHeight);
|
||||
}
|
||||
} else {
|
||||
var2 = Player.getNewestMenuIdx();
|
||||
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && var2 >= 0) {
|
||||
var3 = menuOpcodes[var2];
|
||||
if (var3 == 39 || var3 == 40 || var3 == 41 || var3 == 42 || var3 == 43 || var3 == 33 || var3 == 34 || var3 == 35 || var3 == 36 || var3 == 37 || var3 == 38 || var3 == 1005) {
|
||||
var4 = menuArguments1[var2];
|
||||
var5 = menuArguments2[var2];
|
||||
Widget var14 = WorldMapElement.getWidget(var5);
|
||||
var8 = ParamDefinition.getWidgetClickMask(var14);
|
||||
boolean var7 = (var8 >> 28 & 1) != 0;
|
||||
if (var7) {
|
||||
break label274;
|
||||
}
|
||||
|
||||
var10 = ParamDefinition.getWidgetClickMask(var14);
|
||||
boolean var9 = (var10 >> 29 & 1) != 0;
|
||||
if (var9) {
|
||||
break label274;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && this.shouldLeftClickOpenMenu()) {
|
||||
var1 = 2;
|
||||
}
|
||||
|
||||
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && menuOptionsCount > 0 && var2 >= 0) {
|
||||
var3 = menuArguments1[var2];
|
||||
var4 = menuArguments2[var2];
|
||||
var5 = menuOpcodes[var2];
|
||||
var6 = menuIdentifiers[var2];
|
||||
String var15 = menuActions[var2];
|
||||
String var16 = menuTargets[var2];
|
||||
SecureRandomFuture.menuAction(var3, var4, var5, var6, var15, var16, MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
||||
}
|
||||
|
||||
if (var1 == 2 && menuOptionsCount > 0) {
|
||||
this.openMenu(MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
||||
for (var8 = 0; var8 < menuOptionsCount; ++var8) {
|
||||
var19 = var3 + (menuOptionsCount - 1 - var8) * 15 + 31;
|
||||
if (var5 > var2 && var5 < var4 + var2 && var6 > var19 - 13 && var6 < var19 + 3) {
|
||||
var18 = var8;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
if (var18 != -1 && var18 >= 0) {
|
||||
var8 = menuArguments1[var18];
|
||||
var19 = menuArguments2[var18];
|
||||
var10 = menuOpcodes[var18];
|
||||
int var17 = menuIdentifiers[var18];
|
||||
String var12 = menuActions[var18];
|
||||
String var13 = menuTargets[var18];
|
||||
SecureRandomFuture.menuAction(var8, var19, var10, var17, var12, var13, MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
||||
}
|
||||
|
||||
isMenuOpen = false;
|
||||
FloorDecoration.method2786(MilliClock.menuX, class96.menuY, World.menuWidth, class1.menuHeight);
|
||||
}
|
||||
} else {
|
||||
var2 = Player.getNewestMenuIdx();
|
||||
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && var2 >= 0) {
|
||||
var3 = menuOpcodes[var2];
|
||||
if (var3 == 39 || var3 == 40 || var3 == 41 || var3 == 42 || var3 == 43 || var3 == 33 || var3 == 34 || var3 == 35 || var3 == 36 || var3 == 37 || var3 == 38 || var3 == 1005) {
|
||||
var4 = menuArguments1[var2];
|
||||
var5 = menuArguments2[var2];
|
||||
Widget var14 = WorldMapElement.getWidget(var5);
|
||||
var8 = ParamDefinition.getWidgetClickMask(var14);
|
||||
boolean var7 = (var8 >> 28 & 1) != 0;
|
||||
if (var7) {
|
||||
break label274;
|
||||
}
|
||||
|
||||
var10 = ParamDefinition.getWidgetClickMask(var14);
|
||||
boolean var9 = (var10 >> 29 & 1) != 0;
|
||||
if (var9) {
|
||||
break label274;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (class188.dragInventoryWidget != null && !field867 && menuOptionsCount > 0 && !this.shouldLeftClickOpenMenu()) {
|
||||
var19 = field732;
|
||||
var10 = field744;
|
||||
MenuAction var11 = class1.tempMenuAction;
|
||||
SecureRandomFuture.menuAction(var11.argument1, var11.argument2, var11.opcode, var11.argument0, var11.action, var11.action, var19, var10);
|
||||
class1.tempMenuAction = null;
|
||||
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && this.shouldLeftClickOpenMenu()) {
|
||||
var1 = 2;
|
||||
}
|
||||
|
||||
field867 = false;
|
||||
itemDragDuration = 0;
|
||||
if (class188.dragInventoryWidget != null) {
|
||||
FriendSystem.invalidateWidget(class188.dragInventoryWidget);
|
||||
if ((var1 == 1 || !FriendSystem.mouseCam && var1 == 4) && menuOptionsCount > 0 && var2 >= 0) {
|
||||
var3 = menuArguments1[var2];
|
||||
var4 = menuArguments2[var2];
|
||||
var5 = menuOpcodes[var2];
|
||||
var6 = menuIdentifiers[var2];
|
||||
String var15 = menuActions[var2];
|
||||
String var16 = menuTargets[var2];
|
||||
SecureRandomFuture.menuAction(var3, var4, var5, var6, var15, var16, MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
||||
}
|
||||
|
||||
class188.dragInventoryWidget = WorldMapElement.getWidget(var5);
|
||||
dragItemSlotSource = var4;
|
||||
field732 = MouseHandler.MouseHandler_lastPressedX;
|
||||
field744 = MouseHandler.MouseHandler_lastPressedY;
|
||||
if (var2 >= 0) {
|
||||
class1.tempMenuAction = new MenuAction();
|
||||
class1.tempMenuAction.argument1 = menuArguments1[var2];
|
||||
class1.tempMenuAction.argument2 = menuArguments2[var2];
|
||||
class1.tempMenuAction.opcode = menuOpcodes[var2];
|
||||
class1.tempMenuAction.argument0 = menuIdentifiers[var2];
|
||||
class1.tempMenuAction.action = menuActions[var2];
|
||||
if (var1 == 2 && menuOptionsCount > 0) {
|
||||
this.openMenu(MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY);
|
||||
}
|
||||
|
||||
FriendSystem.invalidateWidget(class188.dragInventoryWidget);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (class188.dragInventoryWidget != null && !field867 && menuOptionsCount > 0 && !this.shouldLeftClickOpenMenu()) {
|
||||
var19 = field732;
|
||||
var10 = field744;
|
||||
MenuAction var11 = class1.tempMenuAction;
|
||||
SecureRandomFuture.menuAction(var11.argument1, var11.argument2, var11.opcode, var11.argument0, var11.action, var11.action, var19, var10);
|
||||
class1.tempMenuAction = null;
|
||||
}
|
||||
|
||||
field867 = false;
|
||||
itemDragDuration = 0;
|
||||
if (class188.dragInventoryWidget != null) {
|
||||
FriendSystem.invalidateWidget(class188.dragInventoryWidget);
|
||||
}
|
||||
|
||||
class188.dragInventoryWidget = WorldMapElement.getWidget(var5);
|
||||
dragItemSlotSource = var4;
|
||||
field732 = MouseHandler.MouseHandler_lastPressedX;
|
||||
field744 = MouseHandler.MouseHandler_lastPressedY;
|
||||
if (var2 >= 0) {
|
||||
class1.tempMenuAction = new MenuAction();
|
||||
class1.tempMenuAction.argument1 = menuArguments1[var2];
|
||||
class1.tempMenuAction.argument2 = menuArguments2[var2];
|
||||
class1.tempMenuAction.opcode = menuOpcodes[var2];
|
||||
class1.tempMenuAction.argument0 = menuIdentifiers[var2];
|
||||
class1.tempMenuAction.action = menuActions[var2];
|
||||
}
|
||||
|
||||
FriendSystem.invalidateWidget(class188.dragInventoryWidget);
|
||||
}
|
||||
|
||||
@ObfuscatedName("hf")
|
||||
|
||||
@@ -60,7 +60,8 @@ public class WorldMapID {
|
||||
signature = "(S)V",
|
||||
garbageValue = "-6260"
|
||||
)
|
||||
static final void method537() {
|
||||
@Export("sortMenuEntries")
|
||||
static final void sortMenuEntries() {
|
||||
boolean var0 = false;
|
||||
|
||||
while (!var0) {
|
||||
|
||||
Reference in New Issue
Block a user