Hp bar work
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
package net.runelite.client.plugins.opponentinfo;
|
package net.runelite.client.plugins.opponentinfo;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
import net.runelite.api.Actor;
|
import net.runelite.api.Actor;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
@@ -9,6 +12,21 @@ import net.runelite.client.plugins.Plugin;
|
|||||||
|
|
||||||
public class OpponentInfo extends Plugin
|
public class OpponentInfo extends Plugin
|
||||||
{
|
{
|
||||||
|
private static final int WIDTH = 140;
|
||||||
|
private static final int HEIGHT = 75;
|
||||||
|
|
||||||
|
private static final int TOP_BORDER = 2;
|
||||||
|
private static final int BOTTOM_BORDER = 2;
|
||||||
|
|
||||||
|
private static final int BAR_WIDTH = 124;
|
||||||
|
private static final int BAR_HEIGHT = 20;
|
||||||
|
|
||||||
|
private static final Color BACKGROUND = new Color(Color.gray.getRed(), Color.gray.getGreen(), Color.gray.getBlue(), 127);
|
||||||
|
private static final Color HP_GREEN = new Color(0, 146, 54, 230);
|
||||||
|
private static final Color HP_RED = new Color(102, 15, 16, 230);
|
||||||
|
|
||||||
|
private final BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB);
|
||||||
|
|
||||||
private Actor getOpponent()
|
private Actor getOpponent()
|
||||||
{
|
{
|
||||||
Client client = RuneLite.getClient();
|
Client client = RuneLite.getClient();
|
||||||
@@ -27,6 +45,53 @@ public class OpponentInfo extends Plugin
|
|||||||
if (opponent == null)
|
if (opponent == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
graphics.drawString(opponent.getName() + " " + opponent.getHealth() + "/" + opponent.getMaxHealth(), 42, 42);
|
int cur = opponent.getHealth();
|
||||||
|
int max = opponent.getMaxHealth();
|
||||||
|
|
||||||
|
Graphics g = image.getGraphics();
|
||||||
|
FontMetrics fm = g.getFontMetrics();
|
||||||
|
|
||||||
|
int height = TOP_BORDER
|
||||||
|
+ fm.getHeight(); // opponent name
|
||||||
|
if (max > 0)
|
||||||
|
height += 1 // between name and hp bar
|
||||||
|
+ BAR_HEIGHT; // bar
|
||||||
|
height += BOTTOM_BORDER;
|
||||||
|
|
||||||
|
g.setColor(BACKGROUND);
|
||||||
|
g.fillRect(0, 0, image.getWidth(), height);
|
||||||
|
|
||||||
|
String str = opponent.getName();
|
||||||
|
|
||||||
|
int x = (image.getWidth() - fm.stringWidth(str)) / 2;
|
||||||
|
g.setColor(Color.white);
|
||||||
|
g.drawString(str, x, fm.getHeight() + TOP_BORDER);
|
||||||
|
|
||||||
|
// hp bar
|
||||||
|
|
||||||
|
if (max > 0)
|
||||||
|
{
|
||||||
|
float percent = (float) cur / (float) max;
|
||||||
|
if (percent > 100f)
|
||||||
|
percent = 100f;
|
||||||
|
|
||||||
|
int barWidth = (int) (percent * (float) BAR_WIDTH);
|
||||||
|
int barY = TOP_BORDER + fm.getHeight() + 1;
|
||||||
|
|
||||||
|
g.setColor(HP_GREEN);
|
||||||
|
g.fillRect((WIDTH - BAR_WIDTH) / 2, barY, barWidth, BAR_HEIGHT);
|
||||||
|
|
||||||
|
g.setColor(HP_RED);
|
||||||
|
g.fillRect(((WIDTH - BAR_WIDTH) / 2) + barWidth, barY, BAR_WIDTH - barWidth, BAR_HEIGHT);
|
||||||
|
|
||||||
|
str = cur + " / " + max;
|
||||||
|
x = (image.getWidth() - fm.stringWidth(str)) / 2;
|
||||||
|
g.setColor(Color.white);
|
||||||
|
g.drawString(str, x, barY + fm.getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
g.dispose();
|
||||||
|
|
||||||
|
graphics.drawImage(image, 10, 25, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ public class RSCanvasCallback
|
|||||||
//clientGraphics.drawString("something, something 2", 42, 42);
|
//clientGraphics.drawString("something, something 2", 42, 42);
|
||||||
new OpponentInfo().draw(clientGraphics);
|
new OpponentInfo().draw(clientGraphics);
|
||||||
|
|
||||||
|
clientGraphics.dispose();
|
||||||
|
|
||||||
superGraphics.drawImage(clientBuffer, 0, 0, null);
|
superGraphics.drawImage(clientBuffer, 0, 0, null);
|
||||||
|
|
||||||
return gameBuffer.getGraphics();
|
return gameBuffer.getGraphics();
|
||||||
|
|||||||
Reference in New Issue
Block a user