Bank tags plugin: Generate less garbage objects

This commit is contained in:
Lucwousin
2019-09-03 20:59:02 +02:00
parent dd4ca4f39b
commit 70def0bf93
4 changed files with 37 additions and 43 deletions

View File

@@ -1763,8 +1763,13 @@ public interface Client extends GameShell
void setModulus(BigInteger modulus);
/*
/**
* Returns the max item index + 1 from cache
*/
int getItemCount();
/**
* Adds a MenuEntry to the current menu.
*/
void insertMenuItem(String action, String target, int opcode, int identifier, int argument1, int argument2, boolean forceLeftClick);
}

View File

@@ -35,7 +35,6 @@ import java.awt.event.KeyEvent;
import java.awt.event.MouseWheelEvent;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -50,7 +49,6 @@ import net.runelite.api.ItemDefinition;
import net.runelite.api.ItemContainer;
import net.runelite.api.ItemID;
import net.runelite.api.MenuOpcode;
import net.runelite.api.MenuEntry;
import net.runelite.api.VarClientInt;
import net.runelite.api.VarClientStr;
import net.runelite.api.events.ConfigChanged;
@@ -275,8 +273,7 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener, KeyLis
{
case "lineSpace":
// prevent Y value being incremented to account for line separators
intStack[intStackSize - 1] = 0;
break;
// fallthrough
case "tabTextSpace":
// prevent Y value being incremented to account for "Tab x" text
intStack[intStackSize - 1] = 0;
@@ -322,8 +319,6 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener, KeyLis
private void onMenuEntryAdded(MenuEntryAdded event)
{
MenuEntry[] entries = client.getMenuEntries();
if (event.getActionParam1() == WidgetInfo.BANK_ITEM_CONTAINER.getId()
&& event.getOption().equals("Examine"))
{
@@ -338,16 +333,15 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener, KeyLis
text += " (" + tagCount + ")";
}
MenuEntry editTags = new MenuEntry();
editTags.setParam0(event.getActionParam0());
editTags.setParam1(event.getActionParam1());
editTags.setTarget(event.getTarget());
editTags.setOption(text);
editTags.setOpcode(MenuOpcode.RUNELITE.getId());
editTags.setIdentifier(event.getIdentifier());
entries = Arrays.copyOf(entries, entries.length + 1);
entries[entries.length - 1] = editTags;
client.setMenuEntries(entries);
client.insertMenuItem(
text,
event.getTarget(),
MenuOpcode.RUNELITE.getId(),
event.getIdentifier(),
event.getActionParam0(),
event.getActionParam1(),
false
);
}
tabInterface.handleAdd(event);

View File

@@ -535,39 +535,31 @@ public class TabInterface
return;
}
MenuEntry[] entries = client.getMenuEntries();
MenuEntry entry = entries[entries.length - 1];
if (activeTab != null
&& event.getActionParam1() == WidgetInfo.BANK_ITEM_CONTAINER.getId()
&& event.getOption().equals("Examine"))
{
entries = createMenuEntry(event, REMOVE_TAG + " (" + activeTab.getTag() + ")", event.getTarget(), entries);
client.setMenuEntries(entries);
insertMenuEntry(event, REMOVE_TAG + " (" + activeTab.getTag() + ")", event.getTarget());
}
else if (event.getActionParam1() == WidgetInfo.BANK_DEPOSIT_INVENTORY.getId()
&& event.getOption().equals("Deposit inventory"))
{
entries = createMenuEntry(event, TAG_INVENTORY, event.getTarget(), entries);
insertMenuEntry(event, TAG_INVENTORY, event.getTarget());
if (activeTab != null)
{
entries = createMenuEntry(event, TAG_INVENTORY, ColorUtil.wrapWithColorTag(activeTab.getTag(), HILIGHT_COLOR), entries);
insertMenuEntry(event, TAG_INVENTORY, ColorUtil.wrapWithColorTag(activeTab.getTag(), HILIGHT_COLOR));
}
client.setMenuEntries(entries);
}
else if (event.getActionParam1() == WidgetInfo.BANK_DEPOSIT_EQUIPMENT.getId()
&& event.getOption().equals("Deposit worn items"))
{
entries = createMenuEntry(event, TAG_GEAR, event.getTarget(), entries);
insertMenuEntry(event, TAG_GEAR, event.getTarget());
if (activeTab != null)
{
entries = createMenuEntry(event, TAG_GEAR, ColorUtil.wrapWithColorTag(activeTab.getTag(), HILIGHT_COLOR), entries);
insertMenuEntry(event, TAG_GEAR, ColorUtil.wrapWithColorTag(activeTab.getTag(), HILIGHT_COLOR));
}
client.setMenuEntries(entries);
}
}
@@ -580,8 +572,8 @@ public class TabInterface
if (chatboxPanelManager.getCurrentInput() != null
&& event.getMenuOpcode() != MenuOpcode.CANCEL
&& !event.getMenuEntry().equals(SCROLL_UP)
&& !event.getMenuEntry().equals(SCROLL_DOWN))
&& !event.getOption().equals(SCROLL_UP)
&& !event.getOption().equals(SCROLL_DOWN))
{
chatboxPanelManager.close();
}
@@ -1058,17 +1050,16 @@ public class TabInterface
searchBackground.setSpriteId(SpriteID.EQUIPMENT_SLOT_TILE);
}
private static MenuEntry[] createMenuEntry(MenuEntryAdded event, String option, String target, MenuEntry[] entries)
private void insertMenuEntry(MenuEntryAdded event, String option, String target)
{
final MenuEntry entry = new MenuEntry();
entry.setParam0(event.getActionParam0());
entry.setParam1(event.getActionParam1());
entry.setTarget(target);
entry.setOption(option);
entry.setOpcode(MenuOpcode.RUNELITE.getId());
entry.setIdentifier(event.getIdentifier());
entries = Arrays.copyOf(entries, entries.length + 1);
entries[entries.length - 1] = entry;
return entries;
client.insertMenuItem(
option,
target,
MenuOpcode.RUNELITE.getId(),
event.getIdentifier(),
event.getActionParam0(),
event.getActionParam1(),
false
);
}
}

View File

@@ -1050,4 +1050,8 @@ public interface RSClient extends RSGameShell, Client
@Import("ItemDefinition_fileCount")
int getItemCount();
@Import("insertMenuItem")
@Override
void insertMenuItem(String action, String target, int opcode, int identifier, int argument1, int argument2, boolean forceLeftClick);
}