Merge pull request #864 from runelite/master

bringup to upstream
This commit is contained in:
Tyler Bochard
2019-07-02 18:59:16 -04:00
committed by GitHub
10 changed files with 246 additions and 5 deletions

View File

@@ -74,4 +74,26 @@ public interface GrandExchangeConfig extends Config
{
return true;
}
@ConfigItem(
position = 5,
keyName = "showTotal",
name = "Show grand exchange total",
description = "Show grand exchange total"
)
default boolean showTotal()
{
return true;
}
@ConfigItem(
position = 6,
keyName = "showExact",
name = "Show exact total value",
description = "Show exact total value"
)
default boolean showExact()
{
return false;
}
}

View File

@@ -58,6 +58,7 @@ import net.runelite.api.events.GameTick;
import net.runelite.api.events.GrandExchangeOfferChanged;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
@@ -428,6 +429,49 @@ public class GrandExchangePlugin extends Plugin
}
}
@Subscribe
public void onScriptCallbackEvent(ScriptCallbackEvent event)
{
if (!event.getEventName().equals("setGETitle") || !config.showTotal())
{
return;
}
long total = 0;
GrandExchangeOffer[] offers = client.getGrandExchangeOffers();
for (GrandExchangeOffer offer : offers)
{
if (offer != null)
{
total += offer.getPrice() * offer.getTotalQuantity();
}
}
if (total == 0L)
{
return;
}
StringBuilder titleBuilder = new StringBuilder(" (");
if (config.showExact())
{
titleBuilder.append(StackFormatter.formatNumber(total));
}
else
{
titleBuilder.append(StackFormatter.quantityToStackSize(total));
}
titleBuilder.append(')');
// Append to title
String[] stringStack = client.getStringStack();
int stringStackSize = client.getStringStackSize();
stringStack[stringStackSize - 1] += titleBuilder.toString();
}
@Subscribe
public void onGameTick(GameTick event)
{

View File

@@ -51,6 +51,7 @@ class MiningOverlay extends Overlay
private static final int ORE_VEIN_MIN_RESPAWN_TIME = 90;
private static final float ORE_VEIN_RANDOM_PERCENT_THRESHOLD = (float) ORE_VEIN_MIN_RESPAWN_TIME / ORE_VEIN_MAX_RESPAWN_TIME;
private static final Color DARK_GREEN = new Color(0, 100, 0);
private static final int MOTHERLODE_UPPER_FLOOR_HEIGHT = -500;
private final Client client;
private final MiningPlugin plugin;
@@ -95,8 +96,17 @@ class MiningOverlay extends Overlay
continue;
}
Rock rock = rockRespawn.getRock();
// Only draw timer for veins on the same level in motherlode mine
LocalPoint localLocation = client.getLocalPlayer().getLocalLocation();
if (rock == Rock.ORE_VEIN && isUpstairsMotherlode(localLocation) != isUpstairsMotherlode(loc))
{
continue;
}
// Recolour pie on motherlode veins during the portion of the timer where they may respawn
if (rockRespawn.getRock() == Rock.ORE_VEIN && percent > ORE_VEIN_RANDOM_PERCENT_THRESHOLD)
if (rock == Rock.ORE_VEIN && percent > ORE_VEIN_RANDOM_PERCENT_THRESHOLD)
{
pieFillColor = Color.GREEN;
pieBorderColor = DARK_GREEN;
@@ -111,4 +121,19 @@ class MiningOverlay extends Overlay
}
return null;
}
/**
* Checks if the given point is "upstairs" in the mlm.
* The upper floor is actually on z=0.
*
* This method assumes that the given point is already in the mlm
* and is not meaningful when outside the mlm.
*
* @param localPoint the LocalPoint to be tested
* @return true if localPoint is at same height as mlm upper floor
*/
private boolean isUpstairsMotherlode(LocalPoint localPoint)
{
return Perspective.getTileHeight(client, localPoint, 0) < MOTHERLODE_UPPER_FLOOR_HEIGHT;
}
}

View File

@@ -584,7 +584,16 @@ public class NpcIndicatorsPlugin extends Plugin
if (mn.getDiedOnTick() != -1)
{
mn.setRespawnTime(client.getTickCount() + 1 - mn.getDiedOnTick());
final int respawnTime = client.getTickCount() + 1 - mn.getDiedOnTick();
// By killing a monster and leaving the area before seeing it again, an erroneously lengthy
// respawn time can be recorded. Thus, if the respawn time is already set and is greater than
// the observed time, assume that the lower observed respawn time is correct.
if (mn.getRespawnTime() == -1 || respawnTime < mn.getRespawnTime())
{
mn.setRespawnTime(respawnTime);
}
mn.setDiedOnTick(-1);
}

View File

@@ -28,6 +28,7 @@ package net.runelite.client.plugins.prayer;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client;
@@ -35,11 +36,13 @@ import net.runelite.api.Perspective;
import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.api.Skill;
import net.runelite.api.SpriteID;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
import net.runelite.client.util.ImageUtil;
@Singleton
class PrayerBarOverlay extends Overlay
@@ -48,6 +51,9 @@ class PrayerBarOverlay extends Overlay
private static final Color BAR_BG_COLOR = Color.black;
private static final Color FLICK_HELP_COLOR = Color.white;
private static final Dimension PRAYER_BAR_SIZE = new Dimension(30, 5);
private static final int HD_PRAYER_BAR_PADDING = 1;
private static final BufferedImage HD_FRONT_BAR = ImageUtil.getResourceStreamFromClass(PrayerPlugin.class, "front.png");
private static final BufferedImage HD_BACK_BAR = ImageUtil.getResourceStreamFromClass(PrayerPlugin.class, "back.png");
private final Client client;
private final PrayerConfig config;
@@ -79,12 +85,44 @@ class PrayerBarOverlay extends Overlay
final LocalPoint localLocation = client.getLocalPlayer().getLocalLocation();
final Point canvasPoint = Perspective.localToCanvas(client, localLocation, client.getPlane(), height);
final float ratio = (float) client.getBoostedSkillLevel(Skill.PRAYER) / client.getRealSkillLevel(Skill.PRAYER);
// Draw HD bar
if (client.getSpriteOverrides().containsKey(SpriteID.HEALTHBAR_DEFAULT_FRONT_30PX))
{
final int barWidth = HD_FRONT_BAR.getWidth();
final int barHeight = HD_FRONT_BAR.getHeight();
final int barX = canvasPoint.getX() - barWidth / 2;
final int barY = canvasPoint.getY();
// Include padding so the bar doesn't show empty at very low prayer values
final int progressFill = (int) Math.ceil(Math.max(HD_PRAYER_BAR_PADDING * 2, Math.min((barWidth * ratio), barWidth)));
graphics.drawImage(HD_BACK_BAR, barX, barY, barWidth, barHeight, null);
// Use a sub-image to create the same effect the HD Health Bar has
graphics.drawImage(HD_FRONT_BAR.getSubimage(0, 0, progressFill, barHeight), barX, barY, progressFill, barHeight, null);
if ((plugin.isPrayersActive() || config.prayerFlickAlwaysOn())
&& (config.prayerFlickLocation().equals(PrayerFlickLocation.PRAYER_BAR)
|| config.prayerFlickLocation().equals(PrayerFlickLocation.BOTH)))
{
final double t = plugin.getTickProgress();
final int halfBarWidth = (barWidth / 2) - HD_PRAYER_BAR_PADDING;
final int xOffset = (int) (-Math.cos(t) * halfBarWidth) + ((barWidth / 2) - halfBarWidth);
graphics.setColor(FLICK_HELP_COLOR);
graphics.fillRect(barX + xOffset + HD_PRAYER_BAR_PADDING, barY + HD_PRAYER_BAR_PADDING, 1, barHeight - HD_PRAYER_BAR_PADDING * 2);
}
return new Dimension(barWidth, barHeight);
}
// Draw bar
final int barX = canvasPoint.getX() - 15;
final int barY = canvasPoint.getY();
final int barWidth = PRAYER_BAR_SIZE.width;
final int barHeight = PRAYER_BAR_SIZE.height;
final float ratio = (float) client.getBoostedSkillLevel(Skill.PRAYER) / client.getRealSkillLevel(Skill.PRAYER);
// Restricted by the width to prevent the bar from being too long while you are boosted above your real prayer level.
final int progressFill = (int) Math.ceil(Math.min((barWidth * ratio), barWidth));
@@ -100,7 +138,7 @@ class PrayerBarOverlay extends Overlay
{
double t = plugin.getTickProgress();
int xOffset = (int) (-Math.cos(t) * barWidth / 2) + barWidth / 2;
final int xOffset = (int) (-Math.cos(t) * barWidth / 2) + barWidth / 2;
graphics.setColor(FLICK_HELP_COLOR);
graphics.fillRect(barX + xOffset, barY, 1, barHeight);

View File

@@ -49,7 +49,8 @@ enum QuestStartLocation
THE_RESTLESS_GHOST(Quest.THE_RESTLESS_GHOST, new WorldPoint(3240, 3210, 0)),
RUNE_MYSTERIES(Quest.RUNE_MYSTERIES, new WorldPoint(3210, 3220, 0)),
SHEEP_SHEARER(Quest.SHEEP_SHEARER, new WorldPoint(3190, 3272, 0)),
SHIELD_OF_ARRAV(Quest.SHIELD_OF_ARRAV, new WorldPoint(3208, 3495, 0)),
SHIELD_OF_ARRAV_PHOENIX_GANG(Quest.SHIELD_OF_ARRAV, new WorldPoint(3208, 3495, 0)),
SHIELD_OF_ARRAV_BLACK_ARM_GANG(Quest.SHIELD_OF_ARRAV, new WorldPoint(3208, 3392, 0)),
VAMPIRE_SLAYER(Quest.VAMPIRE_SLAYER, new WorldPoint(3096, 3266, 0)),
WITCHS_POTION(Quest.WITCHS_POTION, new WorldPoint(2967, 3203, 0)),
X_MARKS_THE_SPOT(Quest.X_MARKS_THE_SPOT, new WorldPoint(3227, 3242, 0)),

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

View File

@@ -0,0 +1 @@
03E202EADA91DB0D5EE9B98E360685149F29B10A1C565B9BE65C2A50BD262BC3

View File

@@ -0,0 +1,101 @@
.id 806
.int_stack_count 7
.string_stack_count 0
.int_var_count 9
.string_var_count 0
iload 6
invoke 41
get_varbit 4439
iconst 1
sub
istore 7
iconst 105
iconst 118
iconst 150
iload 7
enum
istore 8
iload 8
iconst -1
if_icmpeq LABEL16
jump LABEL37
LABEL16:
iconst 1
iload 2
if_sethide
iconst 0
iload 3
if_sethide
iconst 1
iload 4
if_sethide
iconst 1
iload 5
if_sethide
iload 0
iload 1
cc_find
iconst 1
if_icmpeq LABEL34
jump LABEL36
LABEL34:
sconst "Grand Exchange"
sconst "setGETitle" ;
runelite_callback ;
cc_settext
LABEL36:
return
LABEL37:
iconst 0
iload 2
if_sethide
iconst 0
iload 2
if_settrans
iload 7
stockmarket_isofferempty
iconst 1
if_icmpeq LABEL48
jump LABEL66
LABEL48:
iconst 1
iload 3
if_sethide
iconst 1
iload 4
if_sethide
iconst 0
iload 5
if_sethide
iload 0
iload 1
cc_find
iconst 1
if_icmpeq LABEL63
jump LABEL65
LABEL63:
sconst "Grand Exchange: Set up offer"
cc_settext
LABEL65:
return
LABEL66:
iconst 1
iload 3
if_sethide
iconst 0
iload 4
if_sethide
iconst 1
iload 5
if_sethide
iload 0
iload 1
cc_find
iconst 1
if_icmpeq LABEL81
jump LABEL83
LABEL81:
sconst "Grand Exchange: Offer status"
cc_settext
LABEL83:
return