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

View File

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

View File

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