Prototype HP HUD added

This commit is contained in:
2021-06-24 22:36:47 +02:00
parent 351240b464
commit dec597e550
3 changed files with 65 additions and 28 deletions

View File

@@ -1,5 +1,6 @@
package main; package main;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
@@ -10,40 +11,79 @@ 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;
Bild[] FULL_HEART; private Bild halbes_Herz;
Bild HALF_HEART; private Bild[] leeres_Herz;
Bild[] EMPTY_HEART; private BufferedImage hauptBild;
BufferedImage mainImage; private Bild[] HPLeiste;
private final static int SCALE = 50;
public HUD() { public HUD() {
FULL_HEART = new Bild[3]; // inizialisieren der Arrays, laden der Bilder und für den ticker anmelden
EMPTY_HEART = new Bild[3]; volles_Herz = new Bild[3];
leeres_Herz = new Bild[3];
HPLeiste = new Bild[3];
Main.instance.manager.anmelden(this, 20); Main.instance.manager.anmelden(this, 20);
try { try {
mainImage = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png")); hauptBild = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png"));
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
// FULL_HEART: // volles_Herz:
BufferedImage buff = mainImage.getSubimage(16, 0, 16, 16); BufferedImage buff = skalieren(hauptBild.getSubimage(16, 0, 16, 16));
for (int i = 0; i > FULL_HEART.length; i++) { volles_Herz[0] = new Bild(0, 0, buff);
FULL_HEART[i] = new Bild(i * 48, 0, buff); volles_Herz[1] = new Bild(48, 0, buff);
} volles_Herz[2] = new Bild(96, 0, buff);
// HALF_HEART: // halbes_Herz:
buff = mainImage.getSubimage(32, 0, 16, 16); buff = skalieren(hauptBild.getSubimage(32, 0, 16, 16));
HALF_HEART = new Bild(0, 0, buff); halbes_Herz = new Bild(48, 0, buff);
for (int i = 0; i > EMPTY_HEART.length; i++) { // leeres_Herz
EMPTY_HEART[i] = new Bild(i * 48, 0, buff); 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() {
// TODO Auto-generated method stub //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]);
} }
} }

View File

@@ -21,10 +21,10 @@ public class Main extends Game {
// Welt initialisieren und Spieler hinzufügen // Welt initialisieren und Spieler hinzufügen
world = new World(); world = new World();
// hud = new HUD(); hud = new HUD();
// die Welt zu EA hinzufügen // die Welt zu EA hinzufügen
wurzel.add(world); wurzel.add(world);
// wurzel.add(hud); wurzel.add(hud);
} }
@Override @Override

View File

@@ -2,11 +2,8 @@ package main;
import ea.Knoten; import ea.Knoten;
import main.entities.Entity; import main.entities.Entity;
import main.entities.Player; import main.maps.Corridor;
import main.entities.Snake;
import main.entities.Spider;
import main.maps.Map; import main.maps.Map;
import main.maps.TestMap;
/** /**
* Hier werden alle Maps gespeichert. * Hier werden alle Maps gespeichert.