Bank tags: add ability to tag inventory/equipment (#5988)

This commit is contained in:
@@ -203,6 +203,8 @@ public class WidgetID
|
||||
static final int CONTENT_CONTAINER = 9;
|
||||
static final int ITEM_CONTAINER = 12;
|
||||
static final int SEARCH_BUTTON_BACKGROUND = 39;
|
||||
static final int DEPOSIT_INVENTORY = 41;
|
||||
static final int DEPOSIT_EQUIPMENT = 43;
|
||||
static final int INCINERATOR = 45;
|
||||
static final int INCINERATOR_CONFIRM = 46;
|
||||
}
|
||||
|
||||
@@ -128,6 +128,8 @@ public enum WidgetInfo
|
||||
BANK_INCINERATOR(WidgetID.BANK_GROUP_ID, WidgetID.Bank.INCINERATOR),
|
||||
BANK_INCINERATOR_CONFIRM(WidgetID.BANK_GROUP_ID, WidgetID.Bank.INCINERATOR_CONFIRM),
|
||||
BANK_CONTENT_CONTAINER(WidgetID.BANK_GROUP_ID, WidgetID.Bank.CONTENT_CONTAINER),
|
||||
BANK_DEPOSIT_EQUIPMENT(WidgetID.BANK_GROUP_ID, WidgetID.Bank.DEPOSIT_EQUIPMENT),
|
||||
BANK_DEPOSIT_INVENTORY(WidgetID.BANK_GROUP_ID, WidgetID.Bank.DEPOSIT_INVENTORY),
|
||||
|
||||
GRAND_EXCHANGE_WINDOW_CONTAINER(WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.GrandExchange.WINDOW_CONTAINER),
|
||||
GRAND_EXCHANGE_OFFER_CONTAINER(WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.GrandExchange.OFFER_CONTAINER),
|
||||
|
||||
@@ -32,6 +32,9 @@ import java.awt.event.MouseWheelEvent;
|
||||
import java.time.Instant;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import lombok.Getter;
|
||||
@@ -80,6 +83,8 @@ public class TabInterface
|
||||
private static final String VIEW_TAB = "View tag tab";
|
||||
private static final String CHANGE_ICON = "Change icon";
|
||||
private static final String REMOVE_TAG = "Remove-tag";
|
||||
private static final String TAG_GEAR = "Tag-equipment";
|
||||
private static final String TAG_INVENTORY = "Tag-inventory";
|
||||
private static final int TAB_HEIGHT = 40;
|
||||
private static final int TAB_WIDTH = 39;
|
||||
private static final int BUTTON_HEIGHT = 20;
|
||||
@@ -314,15 +319,7 @@ public class TabInterface
|
||||
&& event.getActionParam1() == WidgetInfo.BANK_ITEM_CONTAINER.getId()
|
||||
&& event.getOption().equals("Examine"))
|
||||
{
|
||||
MenuEntry removeTag = new MenuEntry();
|
||||
removeTag.setParam0(event.getActionParam0());
|
||||
removeTag.setParam1(event.getActionParam1());
|
||||
removeTag.setTarget(event.getTarget());
|
||||
removeTag.setOption(REMOVE_TAG + " (" + activeTab.getTag() + ")");
|
||||
removeTag.setType(MenuAction.RUNELITE.getId());
|
||||
removeTag.setIdentifier(event.getIdentifier());
|
||||
entries = Arrays.copyOf(entries, entries.length + 1);
|
||||
entries[entries.length - 1] = removeTag;
|
||||
entries = createMenuEntry(event, REMOVE_TAG + " (" + activeTab.getTag() + ")", event.getTarget(), entries);
|
||||
client.setMenuEntries(entries);
|
||||
}
|
||||
else if (iconToSet != null && (entry.getOption().startsWith("Withdraw-") || entry.getOption().equals("Release")))
|
||||
@@ -331,6 +328,30 @@ public class TabInterface
|
||||
entry.setOption(CHANGE_ICON + " (" + iconToSet.getTag() + ")");
|
||||
client.setMenuEntries(entries);
|
||||
}
|
||||
else if (event.getActionParam1() == WidgetInfo.BANK_DEPOSIT_INVENTORY.getId()
|
||||
&& event.getOption().equals("Deposit inventory"))
|
||||
{
|
||||
entries = createMenuEntry(event, TAG_INVENTORY, event.getTarget(), entries);
|
||||
|
||||
if (activeTab != null)
|
||||
{
|
||||
entries = createMenuEntry(event, TAG_INVENTORY, ColorUtil.wrapWithColorTag(activeTab.getTag(), HILIGHT_COLOR), entries);
|
||||
}
|
||||
|
||||
client.setMenuEntries(entries);
|
||||
}
|
||||
else if (event.getActionParam1() == WidgetInfo.BANK_DEPOSIT_EQUIPMENT.getId()
|
||||
&& event.getOption().equals("Deposit worn items"))
|
||||
{
|
||||
entries = createMenuEntry(event, TAG_GEAR, event.getTarget(), entries);
|
||||
|
||||
if (activeTab != null)
|
||||
{
|
||||
entries = createMenuEntry(event, TAG_GEAR, ColorUtil.wrapWithColorTag(activeTab.getTag(), HILIGHT_COLOR), entries);
|
||||
}
|
||||
|
||||
client.setMenuEntries(entries);
|
||||
}
|
||||
}
|
||||
|
||||
public void handleClick(MenuOptionClicked event)
|
||||
@@ -383,6 +404,48 @@ public class TabInterface
|
||||
tagManager.removeTag(itemId, activeTab.getTag());
|
||||
doSearch(InputType.SEARCH, TAG_SEARCH + activeTab.getTag());
|
||||
}
|
||||
else if (event.getMenuAction() == MenuAction.RUNELITE
|
||||
&& (event.getMenuOption().equals(TAG_INVENTORY) || event.getMenuOption().equals(TAG_GEAR)))
|
||||
{
|
||||
event.consume();
|
||||
boolean inventory = event.getMenuOption().equals(TAG_INVENTORY);
|
||||
ItemContainer container = client.getItemContainer(inventory ? InventoryID.INVENTORY : InventoryID.EQUIPMENT);
|
||||
|
||||
if (container == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
List<Integer> items = Arrays.stream(container.getItems())
|
||||
.filter(Objects::nonNull)
|
||||
.map(i -> itemManager.canonicalize(i.getId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (activeTab != null && event.getMenuTarget() != null && Text.removeTags(event.getMenuTarget()).equals(activeTab.getTag()))
|
||||
{
|
||||
for (Integer item : items)
|
||||
{
|
||||
tagManager.addTag(item, activeTab.getTag());
|
||||
}
|
||||
|
||||
openTag(TAG_SEARCH + activeTab.getTag());
|
||||
}
|
||||
else
|
||||
{
|
||||
chatboxInputManager.openInputWindow((inventory ? "Inventory " : "Equipment ") + "tags:", "", (newTags) ->
|
||||
{
|
||||
if (!Objects.equals(newTags, client.getVar(VarClientStr.INPUT_TEXT)) || Strings.isNullOrEmpty(newTags))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (Integer item : items)
|
||||
{
|
||||
tagManager.setTagString(item, newTags);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (event.getMenuOption())
|
||||
@@ -819,4 +882,18 @@ public class TabInterface
|
||||
Widget searchBackground = client.getWidget(WidgetInfo.BANK_SEARCH_BUTTON_BACKGROUND);
|
||||
searchBackground.setSpriteId(SpriteID.EQUIPMENT_SLOT_TILE);
|
||||
}
|
||||
|
||||
private static MenuEntry[] createMenuEntry(MenuEntryAdded event, String option, String target, MenuEntry[] entries)
|
||||
{
|
||||
final MenuEntry entry = new MenuEntry();
|
||||
entry.setParam0(event.getActionParam0());
|
||||
entry.setParam1(event.getActionParam1());
|
||||
entry.setTarget(target);
|
||||
entry.setOption(option);
|
||||
entry.setType(MenuAction.RUNELITE.getId());
|
||||
entry.setIdentifier(event.getIdentifier());
|
||||
entries = Arrays.copyOf(entries, entries.length + 1);
|
||||
entries[entries.length - 1] = entry;
|
||||
return entries;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user