bank plugin: improve responsiveness of bank searches
This commit is contained in:
@@ -26,6 +26,7 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.bank;
|
package net.runelite.client.plugins.bank;
|
||||||
|
|
||||||
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -36,12 +37,17 @@ import net.runelite.api.InventoryID;
|
|||||||
import net.runelite.api.Item;
|
import net.runelite.api.Item;
|
||||||
import net.runelite.api.ItemContainer;
|
import net.runelite.api.ItemContainer;
|
||||||
import net.runelite.api.MenuEntry;
|
import net.runelite.api.MenuEntry;
|
||||||
|
import net.runelite.api.SpriteID;
|
||||||
|
import net.runelite.api.VarClientInt;
|
||||||
|
import net.runelite.api.VarClientStr;
|
||||||
import net.runelite.api.Varbits;
|
import net.runelite.api.Varbits;
|
||||||
import net.runelite.api.events.ItemContainerChanged;
|
import net.runelite.api.events.ItemContainerChanged;
|
||||||
import net.runelite.api.events.MenuEntryAdded;
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
import net.runelite.api.events.MenuShouldLeftClick;
|
import net.runelite.api.events.MenuShouldLeftClick;
|
||||||
import net.runelite.api.events.ScriptCallbackEvent;
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
|
import net.runelite.api.events.VarClientStrChanged;
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
|
import net.runelite.api.vars.InputType;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import net.runelite.api.widgets.WidgetID;
|
import net.runelite.api.widgets.WidgetID;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
@@ -96,6 +102,7 @@ public class BankPlugin extends Plugin
|
|||||||
private ContainerCalculation seedVaultCalculation;
|
private ContainerCalculation seedVaultCalculation;
|
||||||
|
|
||||||
private boolean forceRightClickFlag;
|
private boolean forceRightClickFlag;
|
||||||
|
private String searchString;
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
BankConfig getConfig(ConfigManager configManager)
|
BankConfig getConfig(ConfigManager configManager)
|
||||||
@@ -108,6 +115,7 @@ public class BankPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
clientThread.invokeLater(() -> bankSearch.reset(false));
|
clientThread.invokeLater(() -> bankSearch.reset(false));
|
||||||
forceRightClickFlag = false;
|
forceRightClickFlag = false;
|
||||||
|
searchString = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -176,6 +184,35 @@ public class BankPlugin extends Plugin
|
|||||||
updateSeedVaultTotal();
|
updateSeedVaultTotal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onItemContainerChanged(ItemContainerChanged event)
|
public void onItemContainerChanged(ItemContainerChanged event)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -68,19 +68,6 @@ public class BankSearch
|
|||||||
{
|
{
|
||||||
clientThread.invoke(() ->
|
clientThread.invoke(() ->
|
||||||
{
|
{
|
||||||
Widget bankContainer = client.getWidget(WidgetInfo.BANK_CONTAINER);
|
|
||||||
if (bankContainer == null || bankContainer.isHidden())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Object[] widgetIds = bankContainer.getOnLoadListener();
|
|
||||||
|
|
||||||
// In case the widget ids array is incorrect, do not proceed
|
|
||||||
if (widgetIds == null || widgetIds.length < 21)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// This ensures that any chatbox input (e.g from search) will not remain visible when
|
// This ensures that any chatbox input (e.g from search) will not remain visible when
|
||||||
// selecting/changing tab
|
// selecting/changing tab
|
||||||
if (closeInput)
|
if (closeInput)
|
||||||
@@ -91,23 +78,42 @@ public class BankSearch
|
|||||||
client.setVar(VarClientInt.INPUT_TYPE, inputType.getType());
|
client.setVar(VarClientInt.INPUT_TYPE, inputType.getType());
|
||||||
client.setVar(VarClientStr.INPUT_TEXT, search);
|
client.setVar(VarClientStr.INPUT_TEXT, search);
|
||||||
|
|
||||||
client.runScript(ScriptID.BANK_LAYOUT,
|
layoutBank();
|
||||||
WidgetInfo.BANK_CONTAINER.getId(),
|
|
||||||
widgetIds[INNER_CONTAINER_IDX],
|
|
||||||
widgetIds[SETTINGS_IDX],
|
|
||||||
widgetIds[ITEM_CONTAINER_IDX],
|
|
||||||
widgetIds[SCROLLBAR_IDX],
|
|
||||||
widgetIds[BOTTOM_BAR_IDX],
|
|
||||||
widgetIds[TITLE_BAR_IDX],
|
|
||||||
widgetIds[ITEM_COUNT_IDX],
|
|
||||||
widgetIds[SEARCH_BUTTON_BACKGROUND_IDX],
|
|
||||||
widgetIds[TAB_BAR_IDX],
|
|
||||||
widgetIds[INCINERATOR_IDX],
|
|
||||||
widgetIds[INCINERATOR_CONFIRM_IDX],
|
|
||||||
widgetIds[HIDDEN_WIDGET_IDX]);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void layoutBank()
|
||||||
|
{
|
||||||
|
Widget bankContainer = client.getWidget(WidgetInfo.BANK_CONTAINER);
|
||||||
|
if (bankContainer == null || bankContainer.isHidden())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object[] widgetIds = bankContainer.getOnLoadListener();
|
||||||
|
|
||||||
|
// In case the widget ids array is incorrect, do not proceed
|
||||||
|
if (widgetIds == null || widgetIds.length < 21)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
client.runScript(ScriptID.BANK_LAYOUT,
|
||||||
|
WidgetInfo.BANK_CONTAINER.getId(),
|
||||||
|
widgetIds[INNER_CONTAINER_IDX],
|
||||||
|
widgetIds[SETTINGS_IDX],
|
||||||
|
widgetIds[ITEM_CONTAINER_IDX],
|
||||||
|
widgetIds[SCROLLBAR_IDX],
|
||||||
|
widgetIds[BOTTOM_BAR_IDX],
|
||||||
|
widgetIds[TITLE_BAR_IDX],
|
||||||
|
widgetIds[ITEM_COUNT_IDX],
|
||||||
|
widgetIds[SEARCH_BUTTON_BACKGROUND_IDX],
|
||||||
|
widgetIds[TAB_BAR_IDX],
|
||||||
|
widgetIds[INCINERATOR_IDX],
|
||||||
|
widgetIds[INCINERATOR_CONFIRM_IDX],
|
||||||
|
widgetIds[HIDDEN_WIDGET_IDX]);
|
||||||
|
}
|
||||||
|
|
||||||
public void reset(Boolean closeChat)
|
public void reset(Boolean closeChat)
|
||||||
{
|
{
|
||||||
search(InputType.NONE, "", closeChat);
|
search(InputType.NONE, "", closeChat);
|
||||||
|
|||||||
Reference in New Issue
Block a user