diff --git a/Zoelda/src/main/HUD.java b/Zoelda/src/main/HUD.java index 0f51778..77761e4 100644 --- a/Zoelda/src/main/HUD.java +++ b/Zoelda/src/main/HUD.java @@ -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(); } } diff --git a/Zoelda/src/main/entities/LivingEntity.java b/Zoelda/src/main/entities/LivingEntity.java index 87fcc99..361dc66 100644 --- a/Zoelda/src/main/entities/LivingEntity.java +++ b/Zoelda/src/main/entities/LivingEntity.java @@ -67,7 +67,7 @@ public abstract class LivingEntity extends Entity { actionFigur.zustandSetzen(name); } - protected float getHealthPoints() { + public float getHealthPoints() { return hp; } diff --git a/Zoelda/src/res/images/herzen.png b/Zoelda/src/res/images/herzen.png new file mode 100644 index 0000000..c64d5e7 Binary files /dev/null and b/Zoelda/src/res/images/herzen.png differ