opponentinfo: add opponent's opponent for npcs

Upon closer inspection it was realized this is allowed for NPCs
This commit is contained in:
Adam
2020-02-08 14:15:58 -05:00
parent c00559ee5c
commit 34f94e973c
2 changed files with 34 additions and 0 deletions

View File

@@ -53,6 +53,17 @@ public interface OpponentInfoConfig extends Config
return HitpointsDisplayStyle.HITPOINTS;
}
@ConfigItem(
keyName = "showOpponentsOpponent",
name = "Show opponent's opponent",
description = "Toggle showing opponent's opponent if within a multi-combat area",
position = 2
)
default boolean showOpponentsOpponent()
{
return true;
}
@ConfigItem(
keyName = "showOpponentsInMenu",
name = "Show opponents in menu",

View File

@@ -37,6 +37,7 @@ import net.runelite.api.Client;
import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG;
import net.runelite.api.NPC;
import net.runelite.api.Player;
import net.runelite.api.Varbits;
import net.runelite.client.game.HiscoreManager;
import net.runelite.client.game.NPCManager;
import net.runelite.client.ui.overlay.Overlay;
@@ -68,6 +69,7 @@ class OpponentInfoOverlay extends Overlay
private int lastRatio = 0;
private int lastHealthScale = 0;
private String opponentName;
private String opponentsOpponentName;
@Inject
private OpponentInfoOverlay(
@@ -126,6 +128,17 @@ class OpponentInfoOverlay extends Overlay
}
}
}
final Actor opponentsOpponent = opponent.getInteracting();
if (opponent instanceof NPC && opponentsOpponent != null
&& (opponentsOpponent != client.getLocalPlayer() || client.getVar(Varbits.MULTICOMBAT_AREA) == 1))
{
opponentsOpponentName = Text.removeTags(opponentsOpponent.getName());
}
else
{
opponentsOpponentName = null;
}
}
if (opponentName == null)
@@ -205,6 +218,16 @@ class OpponentInfoOverlay extends Overlay
panelComponent.getChildren().add(progressBarComponent);
}
// Opponents opponent
if (opponentsOpponentName != null && opponentInfoConfig.showOpponentsOpponent())
{
textWidth = Math.max(textWidth, fontMetrics.stringWidth(opponentsOpponentName));
panelComponent.setPreferredSize(new Dimension(textWidth, 0));
panelComponent.getChildren().add(TitleComponent.builder()
.text(opponentsOpponentName)
.build());
}
return panelComponent.render(graphics);
}
}