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;
import com.google.gson.annotations.SerializedName;
import lombok.Value;
@Value
@@ -32,6 +33,8 @@ public class ItemStats
private boolean quest;
private boolean equipable;
private double weight;
@SerializedName("ge_limit")
private int geLimit;
private ItemEquipmentStats equipment;
@@ -76,7 +79,7 @@ public class ItemStats
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;
import java.awt.BorderLayout;
import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Inject;
import javax.swing.JPanel;
@@ -90,9 +89,4 @@ class GrandExchangePanel extends PluginPanel
tabGroup.select(searchTab);
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 java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Inject;
@@ -51,7 +49,6 @@ import net.runelite.api.ItemComposition;
import net.runelite.api.MenuAction;
import net.runelite.api.MenuEntry;
import net.runelite.api.events.ChatMessage;
import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.FocusChanged;
import net.runelite.api.events.GameStateChanged;
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.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen;
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.http.api.ge.GrandExchangeClient;
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.OSBGrandExchangeResult;
@@ -149,7 +148,6 @@ public class GrandExchangePlugin extends Plugin
private Widget grandExchangeText;
private Widget grandExchangeItem;
private Map<Integer, Integer> itemGELimits;
private int osbItem;
private OSBGrandExchangeResult osbGrandExchangeResult;
@@ -185,9 +183,7 @@ public class GrandExchangePlugin extends Plugin
@Override
protected void startUp()
{
itemGELimits = loadGELimits();
panel = injector.getInstance(GrandExchangePanel.class);
panel.setGELimits(itemGELimits);
final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "ge_icon.png");
@@ -224,7 +220,6 @@ public class GrandExchangePlugin extends Plugin
keyManager.unregisterKeyListener(inputListener);
grandExchangeText = null;
grandExchangeItem = null;
itemGELimits = null;
grandExchangeClient = null;
}
@@ -507,14 +502,14 @@ public class GrandExchangePlugin extends Plugin
String[] lines = geText.getText().split("<br>");
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 (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.GridBagLayout;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import lombok.Setter;
import net.runelite.api.ItemComposition;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.util.AsyncBufferedImage;
import net.runelite.client.game.ItemManager;
import net.runelite.client.ui.ColorScheme;
import net.runelite.client.ui.components.IconTextField;
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.ItemStats;
/**
* 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<>();
@Setter
private Map<Integer, Integer> itemGELimits = Collections.emptyMap();
GrandExchangeSearchPanel(ClientThread clientThread, ItemManager itemManager, ScheduledExecutorService executor)
{
this.clientThread = clientThread;
@@ -209,13 +204,10 @@ class GrandExchangeSearchPanel extends JPanel
int itemId = item.getId();
ItemComposition itemComp = itemManager.getItemComposition(itemId);
if (itemComp == null)
{
continue;
}
ItemStats itemStats = itemManager.getItemStats(itemId, false);
int itemPrice = item.getPrice();
int itemLimit = itemGELimits.getOrDefault(itemId, 0);
int itemLimit = itemStats != null ? itemStats.getGeLimit() : 0;
AsyncBufferedImage itemImage = itemManager.getImage(itemId);
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
{
// 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()
.aspeed(6)
.build());