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:
Lucwousin
2019-09-05 23:42:43 +02:00
committed by GitHub
parent 5bbae89a70
commit 7d4eebd8bc
15 changed files with 177 additions and 254 deletions

View File

@@ -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;
}
}
}

View File

@@ -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)

View File

@@ -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);
}
}

View File

@@ -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)
{

View File

@@ -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
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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)