diff --git a/Zoelda/src/main/HUD/HUD.java b/Zoelda/src/main/HUD/HUD.java new file mode 100644 index 0000000..c2444a8 --- /dev/null +++ b/Zoelda/src/main/HUD/HUD.java @@ -0,0 +1,28 @@ +package main.HUD; + +import java.awt.Graphics2D; + +import ea.BoundingRechteck; +import ea.Knoten; +import main.Main; + +public class HUD extends Knoten{ + + public final Herzen herzen; + public final Inventory inventory; + + + public HUD() { + herzen = new Herzen(); + inventory = new Inventory(); + add(herzen); + add(inventory); + Main.instance.manager.anmelden(herzen, 60); + Main.instance.manager.anmelden(inventory, 50); + } + @Override + public void zeichnen(Graphics2D g, BoundingRechteck r) { + herzen.zeichnen(g); + inventory.zeichnen(g); + } +} diff --git a/Zoelda/src/main/HUD.java b/Zoelda/src/main/HUD/Herzen.java similarity index 57% rename from Zoelda/src/main/HUD.java rename to Zoelda/src/main/HUD/Herzen.java index d278c37..f88bd01 100644 --- a/Zoelda/src/main/HUD.java +++ b/Zoelda/src/main/HUD/Herzen.java @@ -1,32 +1,35 @@ -package main; +package main.HUD; -import ea.BoundingRechteck; -import ea.Knoten; -import ea.Ticker; - -import javax.imageio.ImageIO; -import java.awt.*; +import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; -public class HUD extends Knoten implements Ticker { +import javax.imageio.ImageIO; + +import ea.Knoten; +import ea.Ticker; +import main.Main; + +public class Herzen extends Knoten implements Ticker{ + private final static int SCALE = 50; private BufferedImage volles_Herz; private BufferedImage halbes_Herz; private BufferedImage leeres_Herz; - private BufferedImage inventory; private BufferedImage hauptBild; private BufferedImage[] HPLeiste; - private final static int SCALE = 50; private boolean shakingSwitch; - private float HPVel; + private float HPVel = 0.3f; + private int counter = 0; + private float lastHP; + private int y; + private int HPLeisteY[]; - public HUD() { + public Herzen() { // inizialisieren der Variablen, laden der Bilder und für den ticker anmelden - HPLeiste = new BufferedImage[3]; - Main.instance.manager.anmelden(this, 200); + HPLeiste = new BufferedImage[5]; + HPLeisteY = new int [HPLeiste.length]; try { hauptBild = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png")); - inventory = ImageIO.read(HUD.class.getResourceAsStream("/res/images/inventory.png")); } catch (IOException e) { e.printStackTrace(); } @@ -44,27 +47,38 @@ public class HUD extends Knoten implements Ticker { HPLeiste[1] = volles_Herz; HPLeiste[2] = volles_Herz; } + + private int shakeY() { + shakingSwitch = !shakingSwitch; + if (shakingSwitch == true) { + return 3; + } + return 0; + } - private int changeY () { - int y = 0; - if(Main.instance.getWorld().getPlayer().getHP() < 0.33f) { - shakingSwitch = !shakingSwitch; - if(shakingSwitch == true) { - return y+=3; + private int regenY() { + if (HPVel > 0) { + if (counter < HPLeiste.length + 1) { + counter++; + if (counter * 4 < HPLeiste.length + 1) { + return 3; + } else { + return 0; + } + } else { + counter = 0; } } - if(HPVel > 0) { - - } - return y; + return 0; } - //wird alle 200ms ausgeführt: - @Override + // wird alle 200ms ausgeführt: public void tick() { // teilt den Wert der HP in Teile auf, welche der Anzahl der Herzen entspricht // und prüft dann für den eigenen Teil des Herzens, ob das jeweilige Herz voll, // halb oder leer ist (BIG BRAIN): + HPVel = Main.instance.getWorld().getPlayer().getHP() - lastHP; + lastHP = Main.instance.getWorld().getPlayer().getHP(); float localeHP; for (int i = 0; i < HPLeiste.length; i++) { localeHP = Main.instance.getWorld().getPlayer().getHP(); @@ -77,15 +91,24 @@ public class HUD extends Knoten implements Ticker { HPLeiste[i] = volles_Herz; } } - } + if(Main.instance.getWorld().getPlayer().getHP() < 0.33f) { + y = shakeY(); + } else { + for (int i = 0; i < HPLeiste.length; i++) { + HPLeisteY[i] = regenY(); + } - //Zeichnet alle Herzen im Array HPLeiste[] auf den Bildschirm - @Override - public void zeichnen(Graphics2D g, BoundingRechteck r) { - for (int i = 0; i < HPLeiste.length; i++) { - g.drawImage(HPLeiste[i], (i+2) * SCALE, changeY(), SCALE, SCALE, null); } - g.drawImage(inventory,0,0,SCALE*2,SCALE*2,null); } + // Zeichnet alle Herzen im Array HPLeiste[] auf den Bildschirm + public void zeichnen(Graphics2D g) { + for (int i = 0; i < HPLeiste.length; i++) { + if(Main.instance.getWorld().getPlayer().getHP() < 0.33f) { + g.drawImage(HPLeiste[i], (i + 2) * SCALE, y , SCALE, SCALE, null); + } else { + g.drawImage(HPLeiste[i], (i + 2) * SCALE, HPLeisteY[i] , SCALE, SCALE, null); + } + } + } } diff --git a/Zoelda/src/main/HUD/Inventory.java b/Zoelda/src/main/HUD/Inventory.java new file mode 100644 index 0000000..e276614 --- /dev/null +++ b/Zoelda/src/main/HUD/Inventory.java @@ -0,0 +1,34 @@ +package main.HUD; + +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.io.IOException; + +import javax.imageio.ImageIO; + +import ea.BoundingRechteck; +import ea.Knoten; +import ea.Ticker; + +public class Inventory extends Knoten implements Ticker { + + private static final int SCALE = 50; + private BufferedImage inventory; + + public Inventory() { + try { + inventory = ImageIO.read(HUD.class.getResourceAsStream("/res/images/inventory.png")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void zeichnen(Graphics2D g) { + g.drawImage(inventory, 0, 0, SCALE * 2, SCALE * 2, null); + } + + // wird alle 50ms ausgeführt: + public void tick() { + + } +} diff --git a/Zoelda/src/main/Main.java b/Zoelda/src/main/Main.java index ce4b004..8997a83 100644 --- a/Zoelda/src/main/Main.java +++ b/Zoelda/src/main/Main.java @@ -1,12 +1,14 @@ package main; import ea.Game; +import main.HUD.HUD; +import main.HUD.Herzen; /** * Von hier wird alles initialisiert. Das ist die höchste Klasse. */ public class Main extends Game { - + public static Main instance; private World world; @@ -16,11 +18,10 @@ public class Main extends Game { super(World.SCALE * 15, World.SCALE * 11, 16); instance = this; - // Welt initialisieren und Spieler hinzufügen + // Welt initialisieren und Spieler hinzufügen und die Welt zu EA hinzufügen world = new World(); - hud = new HUD(); - // die Welt zu EA hinzufügen wurzel.add(world); + hud = new HUD(); wurzel.add(hud); }