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.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.GameTick;
|
|
||||||
import net.runelite.api.events.GrandExchangeOfferChanged;
|
import net.runelite.api.events.GrandExchangeOfferChanged;
|
||||||
import net.runelite.api.events.MenuEntryAdded;
|
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.ScriptCallbackEvent;
|
||||||
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import net.runelite.api.widgets.WidgetID;
|
import net.runelite.api.widgets.WidgetID;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
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.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.SessionClose;
|
||||||
|
import net.runelite.client.events.SessionOpen;
|
||||||
import net.runelite.client.game.ItemManager;
|
import net.runelite.client.game.ItemManager;
|
||||||
import net.runelite.client.input.KeyManager;
|
import net.runelite.client.input.KeyManager;
|
||||||
import net.runelite.client.input.MouseManager;
|
import net.runelite.client.input.MouseManager;
|
||||||
@@ -152,6 +151,9 @@ public class GrandExchangePlugin extends Plugin
|
|||||||
private Widget grandExchangeItem;
|
private Widget grandExchangeItem;
|
||||||
private Map<Integer, Integer> itemGELimits;
|
private Map<Integer, Integer> itemGELimits;
|
||||||
|
|
||||||
|
private int osbItem;
|
||||||
|
private OSBGrandExchangeResult osbGrandExchangeResult;
|
||||||
|
|
||||||
private GrandExchangeClient grandExchangeClient;
|
private GrandExchangeClient grandExchangeClient;
|
||||||
|
|
||||||
private SavedOffer getOffer(int slot)
|
private SavedOffer getOffer(int slot)
|
||||||
@@ -209,6 +211,9 @@ public class GrandExchangePlugin extends Plugin
|
|||||||
{
|
{
|
||||||
grandExchangeClient = new GrandExchangeClient(accountSession.getUuid());
|
grandExchangeClient = new GrandExchangeClient(accountSession.getUuid());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
osbItem = -1;
|
||||||
|
osbGrandExchangeResult = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -432,6 +437,11 @@ public class GrandExchangePlugin extends Plugin
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onScriptCallbackEvent(ScriptCallbackEvent event)
|
public void onScriptCallbackEvent(ScriptCallbackEvent event)
|
||||||
{
|
{
|
||||||
|
if (event.getEventName().equals("geBuilt"))
|
||||||
|
{
|
||||||
|
rebuildGeText();
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.getEventName().equals("setGETitle") || !config.showTotal())
|
if (!event.getEventName().equals("setGETitle") || !config.showTotal())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -472,8 +482,7 @@ public class GrandExchangePlugin extends Plugin
|
|||||||
stringStack[stringStackSize - 1] += titleBuilder.toString();
|
stringStack[stringStackSize - 1] += titleBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
private void rebuildGeText()
|
||||||
public void onGameTick(GameTick event)
|
|
||||||
{
|
{
|
||||||
if (grandExchangeText == null || grandExchangeItem == null || grandExchangeItem.isHidden())
|
if (grandExchangeText == null || grandExchangeItem == null || grandExchangeItem.isHidden())
|
||||||
{
|
{
|
||||||
@@ -481,7 +490,6 @@ public class GrandExchangePlugin extends Plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
final Widget geText = grandExchangeText;
|
final Widget geText = grandExchangeText;
|
||||||
final String geTextString = geText.getText();
|
|
||||||
final int itemId = grandExchangeItem.getItemId();
|
final int itemId = grandExchangeItem.getItemId();
|
||||||
|
|
||||||
if (itemId == OFFER_DEFAULT_ITEM_ID || itemId == -1)
|
if (itemId == OFFER_DEFAULT_ITEM_ID || itemId == -1)
|
||||||
@@ -490,39 +498,52 @@ public class GrandExchangePlugin extends Plugin
|
|||||||
return;
|
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);
|
final Integer itemLimit = itemGELimits.get(itemId);
|
||||||
|
|
||||||
// If we have item buy limit, append it
|
// If we have item buy limit, append it
|
||||||
if (itemLimit != null)
|
if (itemLimit != null)
|
||||||
{
|
{
|
||||||
final String text = geText.getText() + BUY_LIMIT_GE_TEXT + QuantityFormatter.formatNumber(itemLimit);
|
text += BUY_LIMIT_GE_TEXT + QuantityFormatter.formatNumber(itemLimit);
|
||||||
geText.setText(text);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
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);
|
log.debug("Looking up OSB item price {}", itemId);
|
||||||
|
|
||||||
|
final String start = text;
|
||||||
executorService.submit(() ->
|
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
|
try
|
||||||
{
|
{
|
||||||
final OSBGrandExchangeResult result = CLIENT.lookupItem(itemId);
|
final OSBGrandExchangeResult result = CLIENT.lookupItem(itemId);
|
||||||
final String text = geText.getText() + OSB_GE_TEXT + QuantityFormatter.formatNumber(result.getOverall_average());
|
osbGrandExchangeResult = result;
|
||||||
geText.setText(text);
|
// Update the text on the widget too
|
||||||
|
geText.setText(start + OSB_GE_TEXT + QuantityFormatter.formatNumber(result.getOverall_average()));
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user