Use GE limits from item stats

This commit is contained in:
Adam
2020-02-23 17:09:56 -05:00
parent 20920be0c0
commit 5a46abddc5
6 changed files with 15 additions and 3539 deletions

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.http.api.item; package net.runelite.http.api.item;
import com.google.gson.annotations.SerializedName;
import lombok.Value; import lombok.Value;
@Value @Value
@@ -32,6 +33,8 @@ public class ItemStats
private boolean quest; private boolean quest;
private boolean equipable; private boolean equipable;
private double weight; private double weight;
@SerializedName("ge_limit")
private int geLimit;
private ItemEquipmentStats equipment; private ItemEquipmentStats equipment;
@@ -76,7 +79,7 @@ public class ItemStats
newEquipment = equipment; newEquipment = equipment;
} }
return new ItemStats(quest, equipable, newWeight, newEquipment); return new ItemStats(quest, equipable, newWeight, 0, newEquipment);
} }
} }

View File

@@ -27,7 +27,6 @@
package net.runelite.client.plugins.grandexchange; package net.runelite.client.plugins.grandexchange;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.util.Map;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
import javax.swing.JPanel; import javax.swing.JPanel;
@@ -90,9 +89,4 @@ class GrandExchangePanel extends PluginPanel
tabGroup.select(searchTab); tabGroup.select(searchTab);
revalidate(); revalidate();
} }
void setGELimits(Map<Integer, Integer> itemGELimits)
{
searchPanel.setItemGELimits(itemGELimits);
}
} }

View File

@@ -32,8 +32,6 @@ import com.google.gson.Gson;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
@@ -51,7 +49,6 @@ import net.runelite.api.ItemComposition;
import net.runelite.api.MenuAction; import net.runelite.api.MenuAction;
import net.runelite.api.MenuEntry; import net.runelite.api.MenuEntry;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.FocusChanged; import net.runelite.api.events.FocusChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GrandExchangeOfferChanged; import net.runelite.api.events.GrandExchangeOfferChanged;
@@ -66,6 +63,7 @@ import net.runelite.client.account.AccountSession;
import net.runelite.client.account.SessionManager; import net.runelite.client.account.SessionManager;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen; import net.runelite.client.events.SessionOpen;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
@@ -80,6 +78,7 @@ import net.runelite.client.util.QuantityFormatter;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
import net.runelite.http.api.ge.GrandExchangeClient; import net.runelite.http.api.ge.GrandExchangeClient;
import net.runelite.http.api.ge.GrandExchangeTrade; import net.runelite.http.api.ge.GrandExchangeTrade;
import net.runelite.http.api.item.ItemStats;
import net.runelite.http.api.osbuddy.OSBGrandExchangeClient; import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
import net.runelite.http.api.osbuddy.OSBGrandExchangeResult; import net.runelite.http.api.osbuddy.OSBGrandExchangeResult;
@@ -149,7 +148,6 @@ public class GrandExchangePlugin extends Plugin
private Widget grandExchangeText; private Widget grandExchangeText;
private Widget grandExchangeItem; private Widget grandExchangeItem;
private Map<Integer, Integer> itemGELimits;
private int osbItem; private int osbItem;
private OSBGrandExchangeResult osbGrandExchangeResult; private OSBGrandExchangeResult osbGrandExchangeResult;
@@ -185,9 +183,7 @@ public class GrandExchangePlugin extends Plugin
@Override @Override
protected void startUp() protected void startUp()
{ {
itemGELimits = loadGELimits();
panel = injector.getInstance(GrandExchangePanel.class); panel = injector.getInstance(GrandExchangePanel.class);
panel.setGELimits(itemGELimits);
final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "ge_icon.png"); final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "ge_icon.png");
@@ -224,7 +220,6 @@ public class GrandExchangePlugin extends Plugin
keyManager.unregisterKeyListener(inputListener); keyManager.unregisterKeyListener(inputListener);
grandExchangeText = null; grandExchangeText = null;
grandExchangeItem = null; grandExchangeItem = null;
itemGELimits = null;
grandExchangeClient = null; grandExchangeClient = null;
} }
@@ -507,14 +502,14 @@ public class GrandExchangePlugin extends Plugin
String[] lines = geText.getText().split("<br>"); String[] lines = geText.getText().split("<br>");
String text = lines[0]; // remove any limit or OSB ge values String text = lines[0]; // remove any limit or OSB ge values
if (config.enableGELimits() && itemGELimits != null) if (config.enableGELimits())
{ {
final Integer itemLimit = itemGELimits.get(itemId); final ItemStats itemStats = itemManager.getItemStats(itemId, false);
// If we have item buy limit, append it // If we have item buy limit, append it
if (itemLimit != null) if (itemStats != null && itemStats.getGeLimit() > 0)
{ {
text += BUY_LIMIT_GE_TEXT + QuantityFormatter.formatNumber(itemLimit); text += BUY_LIMIT_GE_TEXT + QuantityFormatter.formatNumber(itemStats.getGeLimit());
} }
} }
@@ -557,12 +552,4 @@ public class GrandExchangePlugin extends Plugin
} }
}); });
} }
private static Map<Integer, Integer> loadGELimits()
{
final InputStream geLimitData = GrandExchangePlugin.class.getResourceAsStream("ge_limits.json");
final Map<Integer, Integer> itemGELimits = GSON.fromJson(new InputStreamReader(geLimitData), BUY_LIMIT_TOKEN.getType());
log.debug("Loaded {} limits", itemGELimits.size());
return itemGELimits;
}
} }

View File

@@ -32,23 +32,21 @@ import java.awt.Dimension;
import java.awt.GridBagConstraints; import java.awt.GridBagConstraints;
import java.awt.GridBagLayout; import java.awt.GridBagLayout;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import lombok.Setter;
import net.runelite.api.ItemComposition; import net.runelite.api.ItemComposition;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.util.AsyncBufferedImage;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.ColorScheme;
import net.runelite.client.ui.components.IconTextField; import net.runelite.client.ui.components.IconTextField;
import net.runelite.client.ui.components.PluginErrorPanel; import net.runelite.client.ui.components.PluginErrorPanel;
import net.runelite.client.util.AsyncBufferedImage;
import net.runelite.http.api.item.ItemPrice; import net.runelite.http.api.item.ItemPrice;
import net.runelite.http.api.item.ItemStats;
/** /**
* This panel holds the search section of the Grand Exchange Plugin. * This panel holds the search section of the Grand Exchange Plugin.
@@ -80,9 +78,6 @@ class GrandExchangeSearchPanel extends JPanel
private final List<GrandExchangeItems> itemsList = new ArrayList<>(); private final List<GrandExchangeItems> itemsList = new ArrayList<>();
@Setter
private Map<Integer, Integer> itemGELimits = Collections.emptyMap();
GrandExchangeSearchPanel(ClientThread clientThread, ItemManager itemManager, ScheduledExecutorService executor) GrandExchangeSearchPanel(ClientThread clientThread, ItemManager itemManager, ScheduledExecutorService executor)
{ {
this.clientThread = clientThread; this.clientThread = clientThread;
@@ -209,13 +204,10 @@ class GrandExchangeSearchPanel extends JPanel
int itemId = item.getId(); int itemId = item.getId();
ItemComposition itemComp = itemManager.getItemComposition(itemId); ItemComposition itemComp = itemManager.getItemComposition(itemId);
if (itemComp == null) ItemStats itemStats = itemManager.getItemStats(itemId, false);
{
continue;
}
int itemPrice = item.getPrice(); int itemPrice = item.getPrice();
int itemLimit = itemGELimits.getOrDefault(itemId, 0); int itemLimit = itemStats != null ? itemStats.getGeLimit() : 0;
AsyncBufferedImage itemImage = itemManager.getImage(itemId); AsyncBufferedImage itemImage = itemManager.getImage(itemId);
itemsList.add(new GrandExchangeItems(itemImage, item.getName(), itemId, itemPrice, itemComp.getPrice() * 0.6, itemLimit)); itemsList.add(new GrandExchangeItems(itemImage, item.getName(), itemId, itemPrice, itemComp.getPrice() * 0.6, itemLimit));

View File

@@ -49,7 +49,7 @@ import net.runelite.http.api.item.ItemStats;
public class ItemStatOverlay extends Overlay public class ItemStatOverlay extends Overlay
{ {
// Unarmed attack speed is 6 // Unarmed attack speed is 6
private static final ItemStats UNARMED = new ItemStats(false, true, 0, private static final ItemStats UNARMED = new ItemStats(false, true, 0, 0,
ItemEquipmentStats.builder() ItemEquipmentStats.builder()
.aspeed(6) .aspeed(6)
.build()); .build());