package toritools.additionaltypes;
import java.awt.Color;
import java.awt.Graphics;
import toritools.math.Vector2;
import static java.lang.Math.max;
import static java.lang.Math.min;
/**
* A health bar that blends two colors as it goes.
* @author toriscope
*
*/
public class HealthBar{
private final Color minColor, maxColor;
private final float maxHealth;
private float health = 0;
public HealthBar(final float maxHealth, final Color minColor, final Color maxColor) {
this.minColor = minColor;
this.maxColor = maxColor;
this.maxHealth = this.health = maxHealth;
}
public void draw(Graphics g, final Vector2 pos, final Vector2 dim) {
float ratio = health / maxHealth;
g.setColor(ColorUtils.blend(maxColor, minColor, ratio));
g.fillRect((int) pos.x, (int) pos.y, (int) (dim.x * ratio), (int) dim.y);
g.drawRect((int) pos.x, (int) pos.y, (int) dim.x, (int) dim.y);
}
public float getHealth() {
return health;
}
public float getMaxHealth() {
return maxHealth;
}
public void setHealth(float health) {
this.health = min(max(health, 0), maxHealth);
}
}