diff --git a/runelite-api/src/main/java/net/runelite/api/Varbits.java b/runelite-api/src/main/java/net/runelite/api/Varbits.java index 336c2e2307..7f68130c2a 100644 --- a/runelite-api/src/main/java/net/runelite/api/Varbits.java +++ b/runelite-api/src/main/java/net/runelite/api/Varbits.java @@ -686,7 +686,9 @@ public enum Varbits /** * 1 is true, 0 is false. */ - GAUNTLET_ENTERED(9178); + GAUNTLET_ENTERED(9178), + + WITHDRAW_X_AMOUNT(3960); /** * The raw varbit ID. diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java index 493c1daefb..7bb603614d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java @@ -152,20 +152,6 @@ public interface MenuEntrySwapperConfig extends Config return false; } - @ConfigItem( - keyName = "withdrawXAmount", - name = "Amount", - description = "", - position = 7, - group = "Banking", - hidden = true, - unhide = "withdrawX" - ) - default String getWithdrawXAmount() - { - return ""; - } - @ConfigItem( keyName = "withdrawXItems", name = "Items", diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java index 134a7cb520..79cdbfe736 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java @@ -58,6 +58,7 @@ import net.runelite.api.NPC; import net.runelite.api.Player; import net.runelite.api.Varbits; import static net.runelite.api.Varbits.BUILDING_MODE; +import static net.runelite.api.Varbits.WITHDRAW_X_AMOUNT; import net.runelite.api.WorldType; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ClientTick; @@ -86,6 +87,7 @@ import net.runelite.client.plugins.menuentryswapper.comparables.BankComparableEn import net.runelite.client.plugins.menuentryswapper.comparables.EquipmentComparableEntry; import net.runelite.client.plugins.menuentryswapper.comparables.InventoryComparableEntry; import net.runelite.client.plugins.menuentryswapper.comparables.ShopComparableEntry; +import net.runelite.client.plugins.menuentryswapper.comparables.WithdrawComparableEntry; import net.runelite.client.plugins.menuentryswapper.util.BurningAmuletMode; import net.runelite.client.plugins.menuentryswapper.util.CharterOption; import net.runelite.client.plugins.menuentryswapper.util.CombatBraceletMode; @@ -179,6 +181,8 @@ public class MenuEntrySwapperPlugin extends Plugin // 1, 5, 10, 50 private final AbstractComparableEntry[][] buyEntries = new AbstractComparableEntry[4][]; private final AbstractComparableEntry[][] sellEntries = new AbstractComparableEntry[4][]; + // 1, 5, 10, X, All + private final AbstractComparableEntry[][] withdrawEntries = new AbstractComparableEntry[5][]; private List bankItemNames = new ArrayList<>(); private BurningAmuletMode getBurningAmuletMode; @@ -208,12 +212,6 @@ public class MenuEntrySwapperPlugin extends Plugin private String configCustomShiftSwaps; private String configCustomSwaps; private String getRemovedObjects; - private String getWithdrawAllItems; - private String getWithdrawFiveItems; - private String getWithdrawOneItems; - private String getWithdrawTenItems; - private String getWithdrawXAmount; - private String getWithdrawXItems; private XericsTalismanMode getXericsTalismanMode; private boolean getBurningAmulet; private boolean getCombatBracelet; @@ -236,11 +234,6 @@ public class MenuEntrySwapperPlugin extends Plugin private boolean getSwapSawmill; private boolean getSwapSawmillPlanks; private boolean getSwapTanning; - private boolean getWithdrawAll; - private boolean getWithdrawFive; - private boolean getWithdrawOne; - private boolean getWithdrawTen; - private boolean getWithdrawX; private boolean getXericsTalisman; private boolean hideBait; private boolean hideCastCoX; @@ -309,9 +302,13 @@ public class MenuEntrySwapperPlugin extends Plugin addSwaps(); loadConstructionItems(); loadCustomSwaps(config.customSwaps(), customSwaps); + updateBuySellEntries(); addBuySellEntries(); + updateWithdrawEntries(); + addWithdrawEntries(); + keyManager.registerKeyListener(ctrlHotkey); keyManager.registerKeyListener(hotkey); if (client.getGameState() == GameState.LOGGED_IN) @@ -328,6 +325,7 @@ public class MenuEntrySwapperPlugin extends Plugin loadCustomSwaps("", customSwaps); // Removes all custom swaps removeSwaps(); removeBuySellEntries(); + removeWithdrawEntries(); keyManager.unregisterKeyListener(ctrlHotkey); keyManager.unregisterKeyListener(hotkey); @@ -403,7 +401,12 @@ public class MenuEntrySwapperPlugin extends Plugin removeBuySellEntries(); updateBuySellEntries(); addBuySellEntries(); - return; + } + else if (event.getKey().startsWith("withdraw") || event.getKey().startsWith("deposit")) + { + removeWithdrawEntries(); + updateWithdrawEntries(); + addWithdrawEntries(); } } @@ -420,6 +423,7 @@ public class MenuEntrySwapperPlugin extends Plugin private void onVarbitChanged(VarbitChanged event) { buildingMode = client.getVar(BUILDING_MODE) == 1; + WithdrawComparableEntry.setX(client.getVar(WITHDRAW_X_AMOUNT)); setCastOptions(false); } @@ -756,51 +760,6 @@ public class MenuEntrySwapperPlugin extends Plugin menuManager.addSwap(a, b); } - if (this.getWithdrawOne) - { - Text.fromCSV(this.getWithdrawOneItems).forEach(item -> - { - menuManager.addPriorityEntry(newBankComparableEntry("Withdraw-1", item)).setPriority(10); - menuManager.addPriorityEntry(newBankComparableEntry("Deposit-1", item)).setPriority(10); - }); - } - - if (this.getWithdrawFive) - { - Text.fromCSV(this.getWithdrawFiveItems).forEach(item -> - { - menuManager.addPriorityEntry(newBankComparableEntry("Withdraw-5", item)).setPriority(10); - menuManager.addPriorityEntry(newBankComparableEntry("Deposit-5", item)).setPriority(10); - }); - } - - if (this.getWithdrawTen) - { - Text.fromCSV(this.getWithdrawTenItems).forEach(item -> - { - menuManager.addPriorityEntry(newBankComparableEntry("Withdraw-10", item)).setPriority(10); - menuManager.addPriorityEntry(newBankComparableEntry("Deposit-10", item)).setPriority(10); - }); - } - - if (this.getWithdrawX) - { - Text.fromCSV(this.getWithdrawXItems).forEach(item -> - { - menuManager.addPriorityEntry(newBankComparableEntry("Withdraw-" + this.getWithdrawXAmount, item)).setPriority(10); - menuManager.addPriorityEntry(newBankComparableEntry("Deposit-" + this.getWithdrawXAmount, item)).setPriority(10); - }); - } - - if (this.getWithdrawAll) - { - Text.fromCSV(this.getWithdrawAllItems).forEach(item -> - { - menuManager.addPriorityEntry(newBankComparableEntry("Withdraw-All", item)).setPriority(10); - menuManager.addPriorityEntry(newBankComparableEntry("Deposit-All", item)).setPriority(10); - }); - } - if (this.getSwapTanning) { menuManager.addPriorityEntry("Tan All"); @@ -1209,32 +1168,6 @@ public class MenuEntrySwapperPlugin extends Plugin dePrioIter.remove(); }); - Text.fromCSV(this.getWithdrawOneItems).forEach(item -> - { - menuManager.removePriorityEntry(newBankComparableEntry("Withdraw-1", item)); - menuManager.removePriorityEntry(newBankComparableEntry("Deposit-1", item)); - }); - Text.fromCSV(this.getWithdrawFiveItems).forEach(item -> - { - menuManager.removePriorityEntry(newBankComparableEntry("Withdraw-5", item)); - menuManager.removePriorityEntry(newBankComparableEntry("Deposit-5", item)); - }); - Text.fromCSV(this.getWithdrawTenItems).forEach(item -> - { - menuManager.removePriorityEntry(newBankComparableEntry("Withdraw-10", item)); - menuManager.removePriorityEntry(newBankComparableEntry("Deposit-10", item)); - }); - Text.fromCSV(this.getWithdrawXItems).forEach(item -> - { - menuManager.removePriorityEntry(newBankComparableEntry("Withdraw-" + this.getWithdrawXAmount, item)); - menuManager.removePriorityEntry(newBankComparableEntry("Deposit-" + this.getWithdrawXAmount, item)); - }); - Text.fromCSV(this.getWithdrawAllItems).forEach(item -> - { - menuManager.removePriorityEntry(newBankComparableEntry("Withdraw-All", item)); - menuManager.removePriorityEntry(newBankComparableEntry("Deposit-All", item)); - }); - menuManager.removePriorityEntry("Activate", "Box trap"); menuManager.removePriorityEntry("Assignment"); menuManager.removePriorityEntry("Bank"); @@ -1643,17 +1576,6 @@ public class MenuEntrySwapperPlugin extends Plugin this.getSwapSawmill = config.getSwapSawmill(); this.getSwapSawmillPlanks = config.getSwapSawmillPlanks(); this.getSwapTanning = config.getSwapTanning(); - this.getWithdrawAll = config.getWithdrawAll(); - this.getWithdrawAllItems = config.getWithdrawAllItems(); - this.getWithdrawFive = config.getWithdrawFive(); - this.getWithdrawFiveItems = config.getWithdrawFiveItems(); - this.getWithdrawOne = config.getWithdrawOne(); - this.getWithdrawOneItems = config.getWithdrawOneItems(); - this.getWithdrawTen = config.getWithdrawTen(); - this.getWithdrawTenItems = config.getWithdrawTenItems(); - this.getWithdrawX = config.getWithdrawX(); - this.getWithdrawXAmount = config.getWithdrawXAmount(); - this.getWithdrawXItems = config.getWithdrawXItems(); this.getXericsTalisman = config.getXericsTalisman(); this.getXericsTalismanMode = config.getXericsTalismanMode(); this.hideBait = config.hideBait(); @@ -1866,6 +1788,99 @@ public class MenuEntrySwapperPlugin extends Plugin } } + private void addWithdrawEntries() + { + for (int i = 0; i < 5; i++) + { + if (withdrawEntries[i] != null) + { + for (AbstractComparableEntry entry : withdrawEntries[i]) + { + menuManager.addPriorityEntry(entry); + } + } + } + } + + private void removeWithdrawEntries() + { + for (int i = 0; i < 5; i++) + { + if (withdrawEntries[i] != null) + { + for (AbstractComparableEntry entry : withdrawEntries[i]) + { + menuManager.removePriorityEntry(entry); + } + } + } + } + + private void updateWithdrawEntries() + { + List tmp; + + if (config.getWithdrawOne()) + { + tmp = Text.fromCSV(config.getWithdrawOneItems()); + withdrawEntries[0] = new AbstractComparableEntry[tmp.size()]; + + WithdrawComparableEntry.populateArray(withdrawEntries[0], tmp, WithdrawComparableEntry.Amount.ONE); + } + else + { + withdrawEntries[0] = null; + } + + if (config.getWithdrawFive()) + { + tmp = Text.fromCSV(config.getWithdrawFiveItems()); + withdrawEntries[1] = new AbstractComparableEntry[tmp.size()]; + + WithdrawComparableEntry.populateArray(withdrawEntries[1], tmp, WithdrawComparableEntry.Amount.FIVE); + } + else + { + withdrawEntries[1] = null; + } + + if (config.getWithdrawTen()) + { + tmp = Text.fromCSV(config.getWithdrawTenItems()); + withdrawEntries[2] = new AbstractComparableEntry[tmp.size()]; + + WithdrawComparableEntry.populateArray(withdrawEntries[2], tmp, WithdrawComparableEntry.Amount.TEN); + } + else + { + withdrawEntries[2] = null; + } + + if (config.getWithdrawX()) + { + tmp = Text.fromCSV(config.getWithdrawXItems()); + withdrawEntries[3] = new AbstractComparableEntry[tmp.size()]; + + WithdrawComparableEntry.populateArray(withdrawEntries[3], tmp, WithdrawComparableEntry.Amount.X); + } + else + { + withdrawEntries[3] = null; + } + + if (config.getWithdrawAll()) + { + tmp = Text.fromCSV(config.getWithdrawAllItems()); + withdrawEntries[4] = new AbstractComparableEntry[tmp.size()]; + + WithdrawComparableEntry.populateArray(withdrawEntries[4], tmp, WithdrawComparableEntry.Amount.ALL); + } + else + { + withdrawEntries[4] = null; + } + } + /** * Migrates old custom swaps config * This should be removed after a reasonable amount of time. diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/comparables/BankComparableEntry.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/comparables/BankComparableEntry.java index 5ba7a3786d..b60029f87c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/comparables/BankComparableEntry.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/comparables/BankComparableEntry.java @@ -20,9 +20,7 @@ public class BankComparableEntry extends AbstractComparableEntry public boolean matches(MenuEntry entry) { - final int groupId = WidgetInfo.TO_GROUP(entry.getParam1()); - - if (groupId != WidgetID.BANK_GROUP_ID && groupId != WidgetID.BANK_INVENTORY_GROUP_ID && groupId != WidgetID.GRAND_EXCHANGE_GROUP_ID) + if (isNotBankWidget(entry.getParam1())) { return false; } @@ -34,4 +32,13 @@ public class BankComparableEntry extends AbstractComparableEntry return StringUtils.containsIgnoreCase(entry.getOption(), this.getOption()) && Text.standardize(entry.getTarget()).contains(this.getTarget()); } + + static boolean isNotBankWidget(int widgetID) + { + final int groupId = WidgetInfo.TO_GROUP(widgetID); + + return groupId != WidgetID.BANK_GROUP_ID + && groupId != WidgetID.BANK_INVENTORY_GROUP_ID + && groupId != WidgetID.GRAND_EXCHANGE_GROUP_ID; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/comparables/WithdrawComparableEntry.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/comparables/WithdrawComparableEntry.java new file mode 100644 index 0000000000..564e3d8fb0 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/comparables/WithdrawComparableEntry.java @@ -0,0 +1,77 @@ +package net.runelite.client.plugins.menuentryswapper.comparables; + +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import net.runelite.api.MenuEntry; +import net.runelite.api.util.Text; +import net.runelite.client.menus.AbstractComparableEntry; + +@EqualsAndHashCode(callSuper = true) +public class WithdrawComparableEntry extends AbstractComparableEntry +{ + private static String x; + + private final Amount amount; + + private WithdrawComparableEntry(Amount amount, String item) + { + this.amount = amount; + this.setTarget(Text.standardize(item)); + } + + @Override + public boolean matches(MenuEntry entry) + { + if (BankComparableEntry.isNotBankWidget(entry.getParam1())) + { + return false; + } + + final String option = entry.getOption(); + + if (!option.startsWith("Withdraw") && !option.startsWith("Deposit")) + { + return false; + } + + if (amount == Amount.X && !option.endsWith(x) + || !option.endsWith(amount.suffix)) + { + return false; + } + + return Text.standardize(entry.getTarget()).contains(this.getTarget()); + } + + @Override + public int getPriority() + { + return 10; + } + + public static void setX(int amount) + { + x = String.valueOf(amount); + } + + public static void populateArray(AbstractComparableEntry[] array, List items, Amount amount) + { + for (int i = 0; i < array.length; i++) + { + array[i] = new WithdrawComparableEntry(amount, items.get(i)); + } + } + + @AllArgsConstructor + public enum Amount + { + ONE("1"), + FIVE("5"), + TEN("10"), + X(null), + ALL("All"); + + private String suffix; + } +}