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;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.IOException;
@@ -10,40 +11,79 @@ import ea.Knoten;
import ea.Ticker;
public class HUD extends Knoten implements Ticker {
Bild[] FULL_HEART;
Bild HALF_HEART;
Bild[] EMPTY_HEART;
BufferedImage mainImage;
private Bild[] volles_Herz;
private Bild halbes_Herz;
private Bild[] leeres_Herz;
private BufferedImage hauptBild;
private Bild[] HPLeiste;
private final static int SCALE = 50;
public HUD() {
FULL_HEART = new Bild[3];
EMPTY_HEART = new Bild[3];
// 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 {
mainImage = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png"));
hauptBild = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png"));
} catch (IOException e) {
e.printStackTrace();
}
// FULL_HEART:
BufferedImage buff = mainImage.getSubimage(16, 0, 16, 16);
for (int i = 0; i > FULL_HEART.length; i++) {
FULL_HEART[i] = new Bild(i * 48, 0, buff);
}
// HALF_HEART:
buff = mainImage.getSubimage(32, 0, 16, 16);
HALF_HEART = new Bild(0, 0, buff);
for (int i = 0; i > EMPTY_HEART.length; i++) {
EMPTY_HEART[i] = new Bild(i * 48, 0, buff);
}
// 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;
}
@Override
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
world = new World();
// hud = new HUD();
hud = new HUD();
// die Welt zu EA hinzufügen
wurzel.add(world);
// wurzel.add(hud);
wurzel.add(hud);
}
@Override

View File

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