grandexchange: rebuild GE item text on rebuild script event
Co-authored-by: Adam <Adam@sigterm.info>
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user