Merge pull request #1799 from open-osrs/bank
bankplugin: Faster searching
This commit is contained in:
@@ -28,6 +28,7 @@ package net.runelite.client.plugins.bank;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.collect.HashMultiset;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Multiset;
|
||||
import com.google.inject.Provides;
|
||||
@@ -50,12 +51,17 @@ import net.runelite.api.ItemDefinition;
|
||||
import net.runelite.api.ItemID;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
import net.runelite.api.SpriteID;
|
||||
import net.runelite.api.VarClientInt;
|
||||
import net.runelite.api.VarClientStr;
|
||||
import net.runelite.api.Varbits;
|
||||
import net.runelite.api.events.ItemContainerChanged;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
import net.runelite.api.events.MenuShouldLeftClick;
|
||||
import net.runelite.api.events.ScriptCallbackEvent;
|
||||
import net.runelite.api.events.VarClientStrChanged;
|
||||
import net.runelite.api.events.WidgetLoaded;
|
||||
import net.runelite.api.vars.InputType;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetID;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
@@ -139,6 +145,7 @@ public class BankPlugin extends Plugin
|
||||
private boolean forceRightClickFlag;
|
||||
private boolean largePinNumbers;
|
||||
private Multiset<Integer> itemQuantities; // bank item quantities for bank value search
|
||||
private String searchString;
|
||||
|
||||
@Provides
|
||||
BankConfig getConfig(ConfigManager configManager)
|
||||
@@ -179,6 +186,8 @@ public class BankPlugin extends Plugin
|
||||
eventBus.subscribe(ScriptCallbackEvent.class, this, this::onScriptCallbackEvent);
|
||||
eventBus.subscribe(WidgetLoaded.class, this, this::onWidgetLoaded);
|
||||
eventBus.subscribe(ItemContainerChanged.class, this, this::onItemContainerChanged);
|
||||
eventBus.subscribe(VarClientStrChanged.class, this, this::onVarClientStrChanged);
|
||||
searchString = "";
|
||||
}
|
||||
|
||||
private void onMenuShouldLeftClick(MenuShouldLeftClick event)
|
||||
@@ -266,7 +275,34 @@ public class BankPlugin extends Plugin
|
||||
updateSeedVaultTotal();
|
||||
}
|
||||
|
||||
private void onItemContainerChanged(ItemContainerChanged event)
|
||||
public void onVarClientStrChanged(VarClientStrChanged event)
|
||||
{
|
||||
String searchVar = client.getVar(VarClientStr.INPUT_TEXT);
|
||||
|
||||
if (!searchVar.equals(searchString))
|
||||
{
|
||||
Widget searchButtonBackground = client.getWidget(WidgetInfo.BANK_SEARCH_BUTTON_BACKGROUND);
|
||||
if (searchButtonBackground != null && searchButtonBackground.hasListener())
|
||||
{
|
||||
searchButtonBackground.setOnTimerListener((Object[]) null);
|
||||
searchButtonBackground.setHasListener(false);
|
||||
}
|
||||
|
||||
clientThread.invokeLater(() -> bankSearch.layoutBank());
|
||||
searchString = searchVar;
|
||||
}
|
||||
|
||||
if (client.getVar(VarClientInt.INPUT_TYPE) != InputType.SEARCH.getType() && Strings.isNullOrEmpty(client.getVar(VarClientStr.INPUT_TEXT)))
|
||||
{
|
||||
Widget searchBackground = client.getWidget(WidgetInfo.BANK_SEARCH_BUTTON_BACKGROUND);
|
||||
if (searchBackground != null)
|
||||
{
|
||||
searchBackground.setSpriteId(SpriteID.EQUIPMENT_SLOT_TILE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onItemContainerChanged(ItemContainerChanged event)
|
||||
{
|
||||
int containerId = event.getContainerId();
|
||||
|
||||
|
||||
@@ -54,18 +54,6 @@ public class BankSearch
|
||||
{
|
||||
clientThread.invoke(() ->
|
||||
{
|
||||
Widget bankContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER);
|
||||
if (bankContainer == null || bankContainer.isHidden())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Object[] scriptArgs = bankContainer.getOnInvTransmit();
|
||||
|
||||
if (scriptArgs == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// This ensures that any chatbox input (e.g from search) will not remain visible when
|
||||
// selecting/changing tab
|
||||
@@ -77,10 +65,28 @@ public class BankSearch
|
||||
client.setVar(VarClientInt.INPUT_TYPE, inputType.getType());
|
||||
client.setVar(VarClientStr.INPUT_TEXT, search);
|
||||
|
||||
client.runScript(scriptArgs);
|
||||
layoutBank();
|
||||
});
|
||||
}
|
||||
|
||||
public void layoutBank()
|
||||
{
|
||||
Widget bankContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER);
|
||||
if (bankContainer == null || bankContainer.isHidden())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Object[] scriptArgs = bankContainer.getOnInvTransmit();
|
||||
|
||||
if (scriptArgs == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
client.runScript(scriptArgs);
|
||||
}
|
||||
|
||||
public void reset(boolean closeChat)
|
||||
{
|
||||
search(InputType.NONE, "", closeChat);
|
||||
|
||||
Reference in New Issue
Block a user