diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/bankvalue/BankTitle.java b/runelite-client/src/main/java/net/runelite/client/plugins/bankvalue/BankTitle.java deleted file mode 100644 index c9fe44bcd8..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/bankvalue/BankTitle.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) 2018, Jeremy Plsek - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.client.plugins.bankvalue; - -import com.google.inject.Inject; -import lombok.extern.slf4j.Slf4j; -import net.runelite.api.Client; -import net.runelite.api.widgets.Widget; -import net.runelite.api.widgets.WidgetInfo; -import net.runelite.client.util.StackFormatter; - -@Slf4j -class BankTitle -{ - private final Client client; - private final BankValueConfig config; - - private String bankTitle; - - @Inject - BankTitle(Client client, BankValueConfig config) - { - this.client = client; - this.config = config; - } - - void reset() - { - Widget widgetBankTitleBar = client.getWidget(WidgetInfo.BANK_TITLE_BAR); - - if (widgetBankTitleBar == null || widgetBankTitleBar.isHidden()) - { - return; - } - - widgetBankTitleBar.setText(bankTitle); - } - - void save() - { - Widget widgetBankTitleBar = client.getWidget(WidgetInfo.BANK_TITLE_BAR); - - // Only save if the title hasn't been modified - // Don't update on a search because rs seems to constantly update the title - if (widgetBankTitleBar == null || - widgetBankTitleBar.isHidden() || - widgetBankTitleBar.getText().contains("(") || - widgetBankTitleBar.getText().contains("Showing")) - { - return; - } - - bankTitle = widgetBankTitleBar.getText(); - } - - void update(long gePrice, long haPrice) - { - Widget widgetBankTitleBar = client.getWidget(WidgetInfo.BANK_TITLE_BAR); - - // Don't update on a search because rs seems to constantly update the title - if (widgetBankTitleBar == null || - widgetBankTitleBar.isHidden() || - widgetBankTitleBar.getText().contains("Showing") || - widgetBankTitleBar.getText().contains("(")) - { - return; - } - - String strCurrentTab = ""; - - if (config.showGE() && gePrice != 0) - { - strCurrentTab += " (EX: "; - - if (config.showExact()) - { - strCurrentTab += StackFormatter.formatNumber(gePrice) + ")"; - } - else - { - strCurrentTab += StackFormatter.quantityToStackSize(gePrice) + ")"; - } - } - - if (config.showHA() && haPrice != 0) - { - strCurrentTab += " (HA: "; - - if (config.showExact()) - { - strCurrentTab += StackFormatter.formatNumber(haPrice) + ")"; - } - else - { - strCurrentTab += StackFormatter.quantityToStackSize(haPrice) + ")"; - } - } - - log.debug("Setting bank title: {}", bankTitle + strCurrentTab); - widgetBankTitleBar.setText(bankTitle + strCurrentTab); - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/bankvalue/BankValuePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/bankvalue/BankValuePlugin.java index f0dad883bd..d2a0a0c753 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/bankvalue/BankValuePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/bankvalue/BankValuePlugin.java @@ -28,14 +28,14 @@ package net.runelite.client.plugins.bankvalue; import com.google.inject.Provides; import javax.inject.Inject; import net.runelite.api.Client; -import net.runelite.api.events.GameTick; -import net.runelite.api.widgets.Widget; -import net.runelite.api.widgets.WidgetInfo; +import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; +import net.runelite.client.plugins.banktags.tabs.BankSearch; +import net.runelite.client.util.StackFormatter; @PluginDescriptor( name = "Bank Value", @@ -54,7 +54,10 @@ public class BankValuePlugin extends Plugin private BankCalculation bankCalculation; @Inject - private BankTitle bankTitle; + private BankValueConfig config; + + @Inject + private BankSearch bankSearch; @Provides BankValueConfig getConfig(ConfigManager configManager) @@ -65,34 +68,53 @@ public class BankValuePlugin extends Plugin @Override protected void shutDown() { - clientThread.invokeLater(bankTitle::reset); + clientThread.invokeLater(() -> bankSearch.reset(false)); } @Subscribe - public void onGameTick(GameTick event) + public void onScriptCallbackEvent(ScriptCallbackEvent event) { - Widget widgetBankTitleBar = client.getWidget(WidgetInfo.BANK_TITLE_BAR); - - if (widgetBankTitleBar == null || widgetBankTitleBar.isHidden()) - { - return; - } - - bankTitle.save(); - calculate(widgetBankTitleBar); - bankTitle.update(bankCalculation.getGePrice(), bankCalculation.getHaPrice()); - } - - private void calculate(Widget bankTitleBar) - { - // Don't update on a search because rs seems to constantly update the title - if (bankTitleBar == null || - bankTitleBar.isHidden() || - bankTitleBar.getText().contains("Showing")) + if (!event.getEventName().equals("setBankTitle")) { return; } + String strCurrentTab = ""; bankCalculation.calculate(); + long gePrice = bankCalculation.getGePrice(); + long haPrice = bankCalculation.getHaPrice(); + + if (config.showGE() && gePrice != 0) + { + strCurrentTab += " (EX: "; + + if (config.showExact()) + { + strCurrentTab += StackFormatter.formatNumber(gePrice) + ")"; + } + else + { + strCurrentTab += StackFormatter.quantityToStackSize(gePrice) + ")"; + } + } + + if (config.showHA() && haPrice != 0) + { + strCurrentTab += " (HA: "; + + if (config.showExact()) + { + strCurrentTab += StackFormatter.formatNumber(haPrice) + ")"; + } + else + { + strCurrentTab += StackFormatter.quantityToStackSize(haPrice) + ")"; + } + } + + String[] stringStack = client.getStringStack(); + int stringStackSize = client.getStringStackSize(); + + stringStack[stringStackSize - 1] += strCurrentTab; } } diff --git a/runelite-client/src/main/scripts/BankSearchLayout.rs2asm b/runelite-client/src/main/scripts/BankSearchLayout.rs2asm index 99522969df..bd3bceac89 100644 --- a/runelite-client/src/main/scripts/BankSearchLayout.rs2asm +++ b/runelite-client/src/main/scripts/BankSearchLayout.rs2asm @@ -702,6 +702,8 @@ LABEL637: jump LABEL641 LABEL638: load_string "The Bank of Gielinor" + load_string "setBankTitle" ; + runelite_callback ; iload 6 widget_put_text_widget LABEL641: @@ -853,6 +855,8 @@ LABEL765: get_varbit 4150 get_enum_value string_append 2 + load_string "setBankTitle" ; + runelite_callback ; iload 6 widget_put_text_widget jump LABEL781 @@ -861,6 +865,8 @@ LABEL775: get_varbit 4150 int_to_string string_append 2 + load_string "setBankTitle" ; + runelite_callback ; iload 6 widget_put_text_widget LABEL781: