Added new Prototype for Heart HUD

This commit is contained in:
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; package main;
import java.awt.geom.AffineTransform; import ea.ActionFigur;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import ea.Bild;
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 Bild[] volles_Herz; private static SheetLoader loader = new SheetLoader("/res/images/herzen.png", 16, 16, new int[] { 1, 1, 1 });
private Bild halbes_Herz;
private Bild[] leeres_Herz;
private BufferedImage hauptBild;
private Bild[] HPLeiste;
private final static int SCALE = 50;
public HUD() { public HUD() {
// inizialisieren der Arrays, laden der Bilder und für den ticker anmelden ActionFigur herz_1 = new ActionFigur(loader.getFigur(0), "herz_1");
volles_Herz = new Bild[3]; ActionFigur herz_2 = new ActionFigur(loader.getFigur(1), "herz_2");
leeres_Herz = new Bild[3]; ActionFigur herz_3 = new ActionFigur(loader.getFigur(2), "herz_3");
HPLeiste = new Bild[3]; herz_1.neuerZustand(loader.getFigur(0), "leeres_Herz");
Main.instance.manager.anmelden(this, 20); herz_1.neuerZustand(loader.getFigur(1), "halbes_Herz");
try { herz_1.neuerZustand(loader.getFigur(2), "volles_Herz");
hauptBild = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png")); herz_2.neuerZustand(loader.getFigur(0), "leeres_Herz");
} catch (IOException e) { herz_2.neuerZustand(loader.getFigur(1), "halbes_Herz");
e.printStackTrace(); herz_2.neuerZustand(loader.getFigur(2), "volles_Herz");
} herz_3.neuerZustand(loader.getFigur(0), "leeres_Herz");
// volles_Herz: herz_3.neuerZustand(loader.getFigur(1), "halbes_Herz");
BufferedImage buff = skalieren(hauptBild.getSubimage(16, 0, 16, 16)); herz_3.neuerZustand(loader.getFigur(2), "volles_Herz");
volles_Herz[0] = new Bild(0, 0, buff); herz_1.zustandSetzen("volles_Herz");
volles_Herz[1] = new Bild(48, 0, buff); herz_2.zustandSetzen("halbes_Herz");
volles_Herz[2] = new Bild(96, 0, buff); herz_3.zustandSetzen("leeres_Herz");
// halbes_Herz: add(herz_2);
buff = skalieren(hauptBild.getSubimage(32, 0, 16, 16)); add(herz_3);
halbes_Herz = new Bild(48, 0, buff); add(herz_1);
// leeres_Herz herz_1.positionSetzen(20, 0);
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;
} }
@Override @Override
public void tick() { public void tick() {
//Prototyp, deshalb erstmal nur lokale Hp und außerdem hardgecoded (bleibt wahrscheinlich nicht so) float localHp = Main.instance.getWorld().getCurrentMap().getPlayer().getHealthPoints();
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]);
} }
} }

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B