Merge pull request #1236 from deathbeam/fix-ground-items-cache
Cache all ground items and then check their state
This commit is contained in:
@@ -39,11 +39,13 @@ import net.runelite.api.Player;
|
|||||||
import net.runelite.api.Point;
|
import net.runelite.api.Point;
|
||||||
import net.runelite.api.coords.LocalPoint;
|
import net.runelite.api.coords.LocalPoint;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
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.Overlay;
|
||||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||||
import net.runelite.client.ui.overlay.components.TextComponent;
|
import net.runelite.client.ui.overlay.components.TextComponent;
|
||||||
import net.runelite.client.util.StackFormatter;
|
import net.runelite.client.util.StackFormatter;
|
||||||
|
import net.runelite.http.api.item.ItemPrice;
|
||||||
|
|
||||||
public class GroundItemsOverlay extends Overlay
|
public class GroundItemsOverlay extends Overlay
|
||||||
{
|
{
|
||||||
@@ -65,15 +67,17 @@ public class GroundItemsOverlay extends Overlay
|
|||||||
private final StringBuilder itemStringBuilder = new StringBuilder();
|
private final StringBuilder itemStringBuilder = new StringBuilder();
|
||||||
private final TextComponent textComponent = new TextComponent();
|
private final TextComponent textComponent = new TextComponent();
|
||||||
private final Map<WorldPoint, Integer> offsetMap = new HashMap<>();
|
private final Map<WorldPoint, Integer> offsetMap = new HashMap<>();
|
||||||
|
private final ItemManager itemManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public GroundItemsOverlay(Client client, GroundItemsPlugin plugin, GroundItemsConfig config)
|
public GroundItemsOverlay(Client client, GroundItemsPlugin plugin, GroundItemsConfig config, ItemManager itemManager)
|
||||||
{
|
{
|
||||||
setPosition(OverlayPosition.DYNAMIC);
|
setPosition(OverlayPosition.DYNAMIC);
|
||||||
setLayer(OverlayLayer.ABOVE_SCENE);
|
setLayer(OverlayLayer.ABOVE_SCENE);
|
||||||
this.client = client;
|
this.client = client;
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
|
this.itemManager = itemManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -102,7 +106,32 @@ public class GroundItemsOverlay extends Overlay
|
|||||||
}
|
}
|
||||||
|
|
||||||
final boolean highlighted = plugin.isHighlighted(item.getName());
|
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
|
if (!plugin.isHotKeyPressed() && !highlighted
|
||||||
&& ((item.getGePrice() > 0 && item.getGePrice() < config.getHideUnderGeValue())
|
&& ((item.getGePrice() > 0 && item.getGePrice() < config.getHideUnderGeValue())
|
||||||
|| item.getHaPrice() < config.getHideUnderHAValue()))
|
|| item.getHaPrice() < config.getHideUnderHAValue()))
|
||||||
@@ -110,7 +139,6 @@ public class GroundItemsOverlay extends Overlay
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
final boolean hidden = plugin.isHidden(item.getName());
|
|
||||||
final Color color = getCostColor(item.getGePrice() > 0 ? item.getGePrice() : item.getHaPrice(),
|
final Color color = getCostColor(item.getGePrice() > 0 ? item.getGePrice() : item.getHaPrice(),
|
||||||
highlighted, hidden);
|
highlighted, hidden);
|
||||||
itemStringBuilder.append(item.getName());
|
itemStringBuilder.append(item.getName());
|
||||||
|
|||||||
@@ -279,21 +279,6 @@ public class GroundItemsPlugin extends Plugin
|
|||||||
final ItemComposition itemComposition = itemManager.getItemComposition(itemId);
|
final ItemComposition itemComposition = itemManager.getItemComposition(itemId);
|
||||||
final int realItemId = itemComposition.getNote() != -1 ? itemComposition.getLinkedNoteId() : itemId;
|
final int realItemId = itemComposition.getNote() != -1 ? itemComposition.getLinkedNoteId() : itemId;
|
||||||
final int alchPrice = Math.round(itemComposition.getPrice() * HIGH_ALCHEMY_CONSTANT);
|
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()
|
final GroundItem groundItem = GroundItem.builder()
|
||||||
.id(itemId)
|
.id(itemId)
|
||||||
@@ -304,16 +289,12 @@ public class GroundItemsPlugin extends Plugin
|
|||||||
.haPrice(alchPrice * item.getQuantity())
|
.haPrice(alchPrice * item.getQuantity())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Set the correct item price
|
|
||||||
|
// Update item price in case it is coins
|
||||||
if (realItemId == COINS)
|
if (realItemId == COINS)
|
||||||
{
|
{
|
||||||
groundItem.setHaPrice(item.getQuantity());
|
groundItem.setHaPrice(groundItem.getQuantity());
|
||||||
groundItem.setGePrice(item.getQuantity());
|
groundItem.setGePrice(groundItem.getQuantity());
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
final ItemPrice itemPrice = itemManager.getItemPriceAsync(realItemId);
|
|
||||||
groundItem.setGePrice(itemPrice != null ? itemPrice.getPrice() * item.getQuantity() : 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return groundItem;
|
return groundItem;
|
||||||
|
|||||||
Reference in New Issue
Block a user