From 652dd91211a0de54e12a0f330ab921fa3954b0cd Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 10 Mar 2018 09:57:34 -0500 Subject: [PATCH] opponent info overlay: use last opponent if no opponent is targeted --- .../opponentinfo/OpponentInfoOverlay.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoOverlay.java index 51b2c5f163..0156805cb2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoOverlay.java @@ -37,6 +37,7 @@ import java.util.Map; import javax.inject.Inject; import net.runelite.api.Actor; import net.runelite.api.Client; +import net.runelite.api.NPC; import net.runelite.api.Player; import net.runelite.api.Varbits; import net.runelite.client.ui.overlay.Overlay; @@ -60,6 +61,8 @@ class OpponentInfoOverlay extends Overlay private static final Duration WAIT = Duration.ofSeconds(3); private final Client client; + private final NPC[] clientNpcs; + private Integer lastMaxHealth; private DecimalFormat df = new DecimalFormat("0.0"); private float lastRatio = 0; @@ -67,6 +70,7 @@ class OpponentInfoOverlay extends Overlay private String opponentName; private String opponentsOpponentName; private Map oppInfoHealth = OpponentInfoPlugin.loadNpcHealth(); + private NPC lastOpponent; @Inject OpponentInfoOverlay(Client client) @@ -74,6 +78,7 @@ class OpponentInfoOverlay extends Overlay setPosition(OverlayPosition.TOP_LEFT); setPriority(OverlayPriority.HIGH); this.client = client; + this.clientNpcs = client.getCachedNPCs(); } private Actor getOpponent() @@ -92,6 +97,25 @@ class OpponentInfoOverlay extends Overlay { Actor opponent = getOpponent(); + // If opponent is null, try to use last opponent + if (opponent == null) + { + if (lastOpponent != null && clientNpcs[lastOpponent.getIndex()] != lastOpponent) + { + // lastOpponent is no longer valid + lastOpponent = null; + } + else + { + opponent = lastOpponent; + } + } + else + { + // Update last opponent + lastOpponent = opponent instanceof NPC ? (NPC) opponent : null; + } + if (opponent != null && opponent.getHealth() > 0) { lastTime = Instant.now();