opponent info overlay: use last opponent if no opponent is targeted
This commit is contained in:
@@ -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<String, Integer> 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();
|
||||
|
||||
Reference in New Issue
Block a user