From dec597e550f96e43938dabc62b3a293b30c8fb53 Mon Sep 17 00:00:00 2001 From: maxlm128 Date: Thu, 24 Jun 2021 22:36:47 +0200 Subject: [PATCH] Prototype HP HUD added --- Zoelda/src/main/HUD.java | 84 ++++++++++++++++++++++++++++---------- Zoelda/src/main/Main.java | 4 +- Zoelda/src/main/World.java | 5 +-- 3 files changed, 65 insertions(+), 28 deletions(-) diff --git a/Zoelda/src/main/HUD.java b/Zoelda/src/main/HUD.java index ff5947c..0f51778 100644 --- a/Zoelda/src/main/HUD.java +++ b/Zoelda/src/main/HUD.java @@ -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]); } } diff --git a/Zoelda/src/main/Main.java b/Zoelda/src/main/Main.java index c89e7b8..4673f0b 100644 --- a/Zoelda/src/main/Main.java +++ b/Zoelda/src/main/Main.java @@ -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 diff --git a/Zoelda/src/main/World.java b/Zoelda/src/main/World.java index f9d7a5d..c0b157a 100644 --- a/Zoelda/src/main/World.java +++ b/Zoelda/src/main/World.java @@ -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.