Added new Prototype for Heart HUD

This commit is contained in:
Maxim Derksen 2021-06-27 20:29:00 +02:00
parent 4e6e4198f4
commit 8cdf1c22d4
3 changed files with 23 additions and 75 deletions

View File

@ -1,89 +1,37 @@
package main;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import ea.Bild;
import ea.ActionFigur;
import ea.Knoten;
import ea.Ticker;
public class HUD extends Knoten implements Ticker {
private Bild[] volles_Herz;
private Bild halbes_Herz;
private Bild[] leeres_Herz;
private BufferedImage hauptBild;
private Bild[] HPLeiste;
private final static int SCALE = 50;
private static SheetLoader loader = new SheetLoader("/res/images/herzen.png", 16, 16, new int[] { 1, 1, 1 });
public HUD() {
// inizialisieren der Arrays, laden der Bilder und für den ticker anmelden
volles_Herz = new Bild[3];
leeres_Herz = new Bild[3];
HPLeiste = new Bild[3];
Main.instance.manager.anmelden(this, 20);
try {
hauptBild = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png"));
} catch (IOException e) {
e.printStackTrace();
}
// volles_Herz:
BufferedImage buff = skalieren(hauptBild.getSubimage(16, 0, 16, 16));
volles_Herz[0] = new Bild(0, 0, buff);
volles_Herz[1] = new Bild(48, 0, buff);
volles_Herz[2] = new Bild(96, 0, buff);
// halbes_Herz:
buff = skalieren(hauptBild.getSubimage(32, 0, 16, 16));
halbes_Herz = new Bild(48, 0, buff);
// leeres_Herz
buff = skalieren(hauptBild.getSubimage(48, 0, 16, 16));
leeres_Herz[0] = new Bild(0, 0, buff);
leeres_Herz[1] = new Bild(48, 0, buff);
leeres_Herz[2] = new Bild(96, 0, buff);
}
private BufferedImage skalieren(BufferedImage buff) {
BufferedImage scaled = new BufferedImage(SCALE, SCALE, BufferedImage.TYPE_INT_RGB);
scaled.getGraphics().drawImage(buff, 0, 0, SCALE, SCALE, null);
return scaled;
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);
}
@Override
public void tick() {
//Prototyp, deshalb erstmal nur lokale Hp und außerdem hardgecoded (bleibt wahrscheinlich nicht so)
float localeHP = 1f;
//erstes Herz:
if (localeHP < 0.165f) {
HPLeiste[0] = leeres_Herz[0];
} else if (localeHP < 0.33f) {
halbes_Herz.setX(0);
HPLeiste[0] = halbes_Herz;
} else {
HPLeiste[0] = volles_Herz[0];
}
//zweites Herz:
if (localeHP < 0.495f) {
HPLeiste[1] = leeres_Herz[1];
} else if (localeHP < 0.66f) {
halbes_Herz.setX(48);
HPLeiste[1] = halbes_Herz;
} else {
HPLeiste[1] = volles_Herz[1];
}
//drittes Herz:
if (localeHP < 0.825f) {
HPLeiste[2] = leeres_Herz[2];
} else if (localeHP < 0.99f) {
halbes_Herz.setX(96);
HPLeiste[2] = halbes_Herz;
} else {
HPLeiste[2] = volles_Herz[2];
}
add(HPLeiste[0]);
add(HPLeiste[1]);
add(HPLeiste[2]);
float localHp = Main.instance.getWorld().getCurrentMap().getPlayer().getHealthPoints();
}
}

View File

@ -67,7 +67,7 @@ public abstract class LivingEntity extends Entity {
actionFigur.zustandSetzen(name);
}
protected float getHealthPoints() {
public float getHealthPoints() {
return hp;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B