New engine for displaying Hearts (Big Brain)
This commit is contained in:
parent
83120aef20
commit
805ae2a960
|
@ -1,37 +1,72 @@
|
|||
package main;
|
||||
|
||||
import ea.ActionFigur;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import javax.imageio.ImageIO;
|
||||
import ea.BoundingRechteck;
|
||||
import ea.Knoten;
|
||||
import ea.Ticker;
|
||||
|
||||
public class HUD extends Knoten implements Ticker {
|
||||
private static SheetLoader loader = new SheetLoader("/res/images/herzen.png", 16, 16, new int[] { 1, 1, 1 });
|
||||
private BufferedImage volles_Herz;
|
||||
private BufferedImage halbes_Herz;
|
||||
private BufferedImage leeres_Herz;
|
||||
private BufferedImage hauptBild;
|
||||
private BufferedImage[] HPLeiste;
|
||||
private final static int SCALE = 50;
|
||||
|
||||
public HUD() {
|
||||
ActionFigur herz_1 = new ActionFigur(loader.getFigur(0), "herz_1");
|
||||
ActionFigur herz_2 = new ActionFigur(loader.getFigur(1), "herz_2");
|
||||
ActionFigur herz_3 = new ActionFigur(loader.getFigur(2), "herz_3");
|
||||
herz_1.neuerZustand(loader.getFigur(0), "leeres_Herz");
|
||||
herz_1.neuerZustand(loader.getFigur(1), "halbes_Herz");
|
||||
herz_1.neuerZustand(loader.getFigur(2), "volles_Herz");
|
||||
herz_2.neuerZustand(loader.getFigur(0), "leeres_Herz");
|
||||
herz_2.neuerZustand(loader.getFigur(1), "halbes_Herz");
|
||||
herz_2.neuerZustand(loader.getFigur(2), "volles_Herz");
|
||||
herz_3.neuerZustand(loader.getFigur(0), "leeres_Herz");
|
||||
herz_3.neuerZustand(loader.getFigur(1), "halbes_Herz");
|
||||
herz_3.neuerZustand(loader.getFigur(2), "volles_Herz");
|
||||
herz_1.zustandSetzen("volles_Herz");
|
||||
herz_2.zustandSetzen("halbes_Herz");
|
||||
herz_3.zustandSetzen("leeres_Herz");
|
||||
add(herz_2);
|
||||
add(herz_3);
|
||||
add(herz_1);
|
||||
herz_1.positionSetzen(20, 0);
|
||||
// inizialisieren der Variablen, laden der Bilder und für den ticker anmelden
|
||||
HPLeiste = new BufferedImage[3];
|
||||
Main.instance.manager.anmelden(this, 50);
|
||||
try {
|
||||
hauptBild = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
BufferedImage buff;
|
||||
// volles_Herz:
|
||||
buff = hauptBild.getSubimage(16, 0, 16, 16);
|
||||
volles_Herz = buff;
|
||||
// halbes_Herz:
|
||||
buff = hauptBild.getSubimage(32, 0, 16, 16);
|
||||
halbes_Herz = buff;
|
||||
// leeres_Herz
|
||||
buff = hauptBild.getSubimage(48, 0, 16, 16);
|
||||
leeres_Herz = buff;
|
||||
HPLeiste[0] = volles_Herz;
|
||||
HPLeiste[1] = volles_Herz;
|
||||
HPLeiste[2] = volles_Herz;
|
||||
}
|
||||
|
||||
//wird alle 50ms ausgeführt:
|
||||
@Override
|
||||
public void tick() {
|
||||
float localHp = Main.instance.getWorld().getPlayer().getHP();
|
||||
// teilt den Wert der HP in Teile auf, welche der Anzahl der Herzen entspricht
|
||||
// und prüft dann für den eigenen Teil des Herzens, ob das jeweilige Herz voll,
|
||||
// halb oder leer ist (BIG BRAIN):
|
||||
float localeHP;
|
||||
for (int i = 0; i < HPLeiste.length; i++) {
|
||||
localeHP = Main.instance.getWorld().getPlayer().getHP();
|
||||
;
|
||||
localeHP -= ((float) i) * (1f / HPLeiste.length);
|
||||
if (localeHP <= 0f) {
|
||||
HPLeiste[i] = leeres_Herz;
|
||||
} else if (localeHP < (1 / (float) (2 * HPLeiste.length))) {
|
||||
HPLeiste[i] = halbes_Herz;
|
||||
} else if (localeHP > 1 / (float) (2 * HPLeiste.length)) {
|
||||
HPLeiste[i] = volles_Herz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Zeichnet alle Herzen im Array HPLeiste[] auf den Bildschirm
|
||||
@Override
|
||||
public void zeichnen(Graphics2D g, BoundingRechteck r) {
|
||||
for (int i = 0; i < HPLeiste.length; i++) {
|
||||
g.drawImage(HPLeiste[i], i * SCALE, 0, SCALE, SCALE, null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ public class Spider extends LivingEntity {
|
|||
}
|
||||
|
||||
protected void update() {
|
||||
Player player = Main.instance.getWorld().getCurrentMap().getPlayer();
|
||||
Player player = Main.instance.getWorld().getPlayer();
|
||||
if (!actionFigur.aktuellesVerhalten().equals(getDamageAnimationName())) {
|
||||
if (lineOfSightClear(player)) {
|
||||
if (dist(player) < 1f) {
|
||||
|
|
Loading…
Reference in New Issue