grandexchange: rebuild GE item text on rebuild script event

Co-authored-by: Adam <Adam@sigterm.info>
This commit is contained in:
Ron Young
2019-10-31 12:21:05 -05:00
committed by Adam
parent dde308f2e8
commit a103da9118

View File

@@ -54,13 +54,10 @@ import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.FocusChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.GrandExchangeOfferChanged;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
@@ -69,6 +66,8 @@ 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.SessionClose;
import net.runelite.client.events.SessionOpen;
import net.runelite.client.game.ItemManager;
import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseManager;
@@ -152,6 +151,9 @@ public class GrandExchangePlugin extends Plugin
private Widget grandExchangeItem;
private Map<Integer, Integer> itemGELimits;
private int osbItem;
private OSBGrandExchangeResult osbGrandExchangeResult;
private GrandExchangeClient grandExchangeClient;
private SavedOffer getOffer(int slot)
@@ -209,6 +211,9 @@ public class GrandExchangePlugin extends Plugin
{
grandExchangeClient = new GrandExchangeClient(accountSession.getUuid());
}
osbItem = -1;
osbGrandExchangeResult = null;
}
@Override
@@ -432,6 +437,11 @@ public class GrandExchangePlugin extends Plugin
@Subscribe
public void onScriptCallbackEvent(ScriptCallbackEvent event)
{
if (event.getEventName().equals("geBuilt"))
{
rebuildGeText();
}
if (!event.getEventName().equals("setGETitle") || !config.showTotal())
{
return;
@@ -472,8 +482,7 @@ public class GrandExchangePlugin extends Plugin
stringStack[stringStackSize - 1] += titleBuilder.toString();
}
@Subscribe
public void onGameTick(GameTick event)
private void rebuildGeText()
{
if (grandExchangeText == null || grandExchangeItem == null || grandExchangeItem.isHidden())
{
@@ -481,7 +490,6 @@ public class GrandExchangePlugin extends Plugin
}
final Widget geText = grandExchangeText;
final String geTextString = geText.getText();
final int itemId = grandExchangeItem.getItemId();
if (itemId == OFFER_DEFAULT_ITEM_ID || itemId == -1)
@@ -490,39 +498,52 @@ public class GrandExchangePlugin extends Plugin
return;
}
if (config.enableGELimits() && itemGELimits != null && !geTextString.contains(BUY_LIMIT_GE_TEXT))
String[] lines = geText.getText().split("<br>");
String text = lines[0]; // remove any limit or OSB ge values
if (config.enableGELimits() && itemGELimits != null)
{
final Integer itemLimit = itemGELimits.get(itemId);
// If we have item buy limit, append it
if (itemLimit != null)
{
final String text = geText.getText() + BUY_LIMIT_GE_TEXT + QuantityFormatter.formatNumber(itemLimit);
geText.setText(text);
text += BUY_LIMIT_GE_TEXT + QuantityFormatter.formatNumber(itemLimit);
}
}
if (!config.enableOsbPrices() || geTextString.contains(OSB_GE_TEXT))
geText.setText(text);
if (!config.enableOsbPrices())
{
// OSB prices are disabled or price was already looked up, so no need to set it again
return;
}
// If we already have the result, use it
if (osbGrandExchangeResult != null && osbGrandExchangeResult.getItem_id() == itemId && osbGrandExchangeResult.getOverall_average() > 0)
{
geText.setText(text + OSB_GE_TEXT + QuantityFormatter.formatNumber(osbGrandExchangeResult.getOverall_average()));
}
if (osbItem == itemId)
{
// avoid starting duplicate lookups
return;
}
osbItem = itemId;
log.debug("Looking up OSB item price {}", itemId);
final String start = text;
executorService.submit(() ->
{
if (geText.getText().contains(OSB_GE_TEXT))
{
// If there are multiple tasks queued and one of them have already added the price
return;
}
try
{
final OSBGrandExchangeResult result = CLIENT.lookupItem(itemId);
final String text = geText.getText() + OSB_GE_TEXT + QuantityFormatter.formatNumber(result.getOverall_average());
geText.setText(text);
osbGrandExchangeResult = result;
// Update the text on the widget too
geText.setText(start + OSB_GE_TEXT + QuantityFormatter.formatNumber(result.getOverall_average()));
}
catch (IOException e)
{