New engine for displaying Hearts (Big Brain)
This commit is contained in:
@@ -1,37 +1,72 @@
|
|||||||
package main;
|
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.Knoten;
|
||||||
import ea.Ticker;
|
import ea.Ticker;
|
||||||
|
|
||||||
public class HUD extends Knoten implements 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() {
|
public HUD() {
|
||||||
ActionFigur herz_1 = new ActionFigur(loader.getFigur(0), "herz_1");
|
// inizialisieren der Variablen, laden der Bilder und für den ticker anmelden
|
||||||
ActionFigur herz_2 = new ActionFigur(loader.getFigur(1), "herz_2");
|
HPLeiste = new BufferedImage[3];
|
||||||
ActionFigur herz_3 = new ActionFigur(loader.getFigur(2), "herz_3");
|
Main.instance.manager.anmelden(this, 50);
|
||||||
herz_1.neuerZustand(loader.getFigur(0), "leeres_Herz");
|
try {
|
||||||
herz_1.neuerZustand(loader.getFigur(1), "halbes_Herz");
|
hauptBild = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png"));
|
||||||
herz_1.neuerZustand(loader.getFigur(2), "volles_Herz");
|
} catch (IOException e) {
|
||||||
herz_2.neuerZustand(loader.getFigur(0), "leeres_Herz");
|
e.printStackTrace();
|
||||||
herz_2.neuerZustand(loader.getFigur(1), "halbes_Herz");
|
}
|
||||||
herz_2.neuerZustand(loader.getFigur(2), "volles_Herz");
|
BufferedImage buff;
|
||||||
herz_3.neuerZustand(loader.getFigur(0), "leeres_Herz");
|
// volles_Herz:
|
||||||
herz_3.neuerZustand(loader.getFigur(1), "halbes_Herz");
|
buff = hauptBild.getSubimage(16, 0, 16, 16);
|
||||||
herz_3.neuerZustand(loader.getFigur(2), "volles_Herz");
|
volles_Herz = buff;
|
||||||
herz_1.zustandSetzen("volles_Herz");
|
// halbes_Herz:
|
||||||
herz_2.zustandSetzen("halbes_Herz");
|
buff = hauptBild.getSubimage(32, 0, 16, 16);
|
||||||
herz_3.zustandSetzen("leeres_Herz");
|
halbes_Herz = buff;
|
||||||
add(herz_2);
|
// leeres_Herz
|
||||||
add(herz_3);
|
buff = hauptBild.getSubimage(48, 0, 16, 16);
|
||||||
add(herz_1);
|
leeres_Herz = buff;
|
||||||
herz_1.positionSetzen(20, 0);
|
HPLeiste[0] = volles_Herz;
|
||||||
|
HPLeiste[1] = volles_Herz;
|
||||||
|
HPLeiste[2] = volles_Herz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//wird alle 50ms ausgeführt:
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
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() {
|
protected void update() {
|
||||||
Player player = Main.instance.getWorld().getCurrentMap().getPlayer();
|
Player player = Main.instance.getWorld().getPlayer();
|
||||||
if (!actionFigur.aktuellesVerhalten().equals(getDamageAnimationName())) {
|
if (!actionFigur.aktuellesVerhalten().equals(getDamageAnimationName())) {
|
||||||
if (lineOfSightClear(player)) {
|
if (lineOfSightClear(player)) {
|
||||||
if (dist(player) < 1f) {
|
if (dist(player) < 1f) {
|
||||||
|
|||||||
Reference in New Issue
Block a user