Merge pull request #1236 from deathbeam/fix-ground-items-cache

Cache all ground items and then check their state
This commit is contained in:
Adam
2018-04-03 22:20:07 -04:00
committed by GitHub
2 changed files with 34 additions and 25 deletions

View File

@@ -39,11 +39,13 @@ import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.game.ItemManager;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.components.TextComponent;
import net.runelite.client.util.StackFormatter;
import net.runelite.http.api.item.ItemPrice;
public class GroundItemsOverlay extends Overlay
{
@@ -65,15 +67,17 @@ public class GroundItemsOverlay extends Overlay
private final StringBuilder itemStringBuilder = new StringBuilder();
private final TextComponent textComponent = new TextComponent();
private final Map<WorldPoint, Integer> offsetMap = new HashMap<>();
private final ItemManager itemManager;
@Inject
public GroundItemsOverlay(Client client, GroundItemsPlugin plugin, GroundItemsConfig config)
public GroundItemsOverlay(Client client, GroundItemsPlugin plugin, GroundItemsConfig config, ItemManager itemManager)
{
setPosition(OverlayPosition.DYNAMIC);
setLayer(OverlayLayer.ABOVE_SCENE);
this.client = client;
this.plugin = plugin;
this.config = config;
this.itemManager = itemManager;
}
@Override
@@ -102,7 +106,32 @@ public class GroundItemsOverlay extends Overlay
}
final boolean highlighted = plugin.isHighlighted(item.getName());
final boolean hidden = plugin.isHidden(item.getName());
if (!plugin.isHotKeyPressed())
{
// Do not display hidden items
if (hidden)
{
continue;
}
// Do not display non-highlighted items when only highlighted items should be shown
if (config.showHighlightedOnly() && !highlighted)
{
continue;
}
}
// Update GE price for item
final ItemPrice itemPrice = itemManager.getItemPriceAsync(item.getItemId());
if (itemPrice != null && itemPrice.getPrice() > 0)
{
item.setGePrice(itemPrice.getPrice() * item.getQuantity());
}
// Do not display items that are under HA or GE price and are not highlighted
if (!plugin.isHotKeyPressed() && !highlighted
&& ((item.getGePrice() > 0 && item.getGePrice() < config.getHideUnderGeValue())
|| item.getHaPrice() < config.getHideUnderHAValue()))
@@ -110,7 +139,6 @@ public class GroundItemsOverlay extends Overlay
continue;
}
final boolean hidden = plugin.isHidden(item.getName());
final Color color = getCostColor(item.getGePrice() > 0 ? item.getGePrice() : item.getHaPrice(),
highlighted, hidden);
itemStringBuilder.append(item.getName());

View File

@@ -279,21 +279,6 @@ public class GroundItemsPlugin extends Plugin
final ItemComposition itemComposition = itemManager.getItemComposition(itemId);
final int realItemId = itemComposition.getNote() != -1 ? itemComposition.getLinkedNoteId() : itemId;
final int alchPrice = Math.round(itemComposition.getPrice() * HIGH_ALCHEMY_CONSTANT);
final String name = itemComposition.getName();
final boolean hidden = isHidden(name);
if (!isHotKeyPressed() && hidden)
{
return null;
}
final boolean highlighted = isHighlighted(name);
if (config.showHighlightedOnly() && !isHotKeyPressed() && !highlighted)
{
return null;
}
final GroundItem groundItem = GroundItem.builder()
.id(itemId)
@@ -304,16 +289,12 @@ public class GroundItemsPlugin extends Plugin
.haPrice(alchPrice * item.getQuantity())
.build();
// Set the correct item price
// Update item price in case it is coins
if (realItemId == COINS)
{
groundItem.setHaPrice(item.getQuantity());
groundItem.setGePrice(item.getQuantity());
}
else
{
final ItemPrice itemPrice = itemManager.getItemPriceAsync(realItemId);
groundItem.setGePrice(itemPrice != null ? itemPrice.getPrice() * item.getQuantity() : 0);
groundItem.setHaPrice(groundItem.getQuantity());
groundItem.setGePrice(groundItem.getQuantity());
}
return groundItem;