82 lines
3.1 KiB
Java
82 lines
3.1 KiB
Java
package ee.futur.baseapi.collections;
|
|
|
|
|
|
import ee.futur.baseapi.collections.query.ItemQuery;
|
|
import ee.futur.baseapi.BaseApiPlugin;
|
|
import net.runelite.api.Client;
|
|
import net.runelite.api.GameState;
|
|
import net.runelite.api.InventoryID;
|
|
import net.runelite.api.Item;
|
|
import net.runelite.api.events.GameStateChanged;
|
|
import net.runelite.api.widgets.Widget;
|
|
import net.runelite.api.widgets.WidgetInfo;
|
|
import net.runelite.client.RuneLite;
|
|
import net.runelite.client.eventbus.Subscribe;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
import java.util.concurrent.ExecutionException;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class Bank {
|
|
private static final int WITHDRAW_MODE = 3958;
|
|
static Client client = RuneLite.getInjector().getInstance(Client.class);
|
|
static List<Widget> bankItems = new ArrayList<>();
|
|
boolean bankUpdate = true;
|
|
static int lastUpdateTick = 0;
|
|
|
|
public static ItemQuery search() {
|
|
if (lastUpdateTick < client.getTickCount()) {
|
|
Bank.bankItems.clear();
|
|
int i = 0;
|
|
if (client.getItemContainer(InventoryID.BANK) == null) {
|
|
return new ItemQuery(new ArrayList<>());
|
|
}
|
|
for (Item item : client.getItemContainer(InventoryID.BANK).getItems()) {
|
|
try {
|
|
if (item == null) {
|
|
i++;
|
|
continue;
|
|
}
|
|
if (BaseApiPlugin.itemDefs.get(item.getId()).getPlaceholderTemplateId() == 14401) {
|
|
i++;
|
|
continue;
|
|
}
|
|
Bank.bankItems.add(new BankItemWidget(BaseApiPlugin.itemDefs.get(item.getId()).getName(), item.getId(), item.getQuantity(), i));
|
|
} catch (NullPointerException | ExecutionException ex) {
|
|
//todo fix this
|
|
}
|
|
i++;
|
|
}
|
|
lastUpdateTick = client.getTickCount();
|
|
}
|
|
return new ItemQuery(bankItems.stream().filter(Objects::nonNull).collect(Collectors.toList()));
|
|
}
|
|
|
|
public static boolean isOpen() {
|
|
return client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER) != null && !client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER).isHidden();
|
|
}
|
|
|
|
|
|
@Subscribe
|
|
public void onGameStateChanged(GameStateChanged gameStateChanged) {
|
|
if (gameStateChanged.getGameState() == GameState.HOPPING || gameStateChanged.getGameState() == GameState.LOGIN_SCREEN || gameStateChanged.getGameState() == GameState.CONNECTION_LOST) {
|
|
Bank.bankItems.clear();
|
|
}
|
|
}
|
|
|
|
public static boolean isNotedMode() {
|
|
return client.getVarbitValue(WITHDRAW_MODE) == 1;
|
|
}
|
|
|
|
public static void setWithdrawMode(boolean noted) {
|
|
if (noted && !isNotedMode()) {
|
|
//MousePackets.queueClickPacket();
|
|
//WidgetPackets.queueWidgetActionPacket(1, 786458, -1, -1);
|
|
} else if (!noted && isNotedMode()) {
|
|
//MousePackets.queueClickPacket();
|
|
//WidgetPackets.queueWidgetActionPacket(1, 786456, -1, -1);
|
|
}
|
|
}
|
|
} |