Added special classes for Inventory and Herzen

This commit is contained in:
Maxim Derksen 2021-06-28 22:56:52 +02:00
parent 23eba51e5c
commit 1f1f5bbc68
4 changed files with 124 additions and 38 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}
}
}

View File

@ -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() {
}
}

View File

@ -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);
}