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

![](https://i.imgur.com/aGhpmA9.gif)
This commit is contained in:
Ron Young
2018-10-15 03:46:06 -05:00
committed by Tomas Slusny
parent b071f8c9a3
commit 6d062b7c12
3 changed files with 90 additions and 9 deletions

View File

@@ -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;
}

View File

@@ -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),

View File

@@ -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;
}
}