This commit is contained in:
2021-06-28 09:38:20 +02:00
6 changed files with 60 additions and 20 deletions

View File

@@ -19,8 +19,6 @@ public class DoorTile extends Tile implements Ticker {
public DoorTile(float x, float y, ImageMap map) { public DoorTile(float x, float y, ImageMap map) {
super(Tile.DOOR, x, y); super(Tile.DOOR, x, y);
this.map = map; this.map = map;
Main.instance.tickerAnmelden(this, 50);
} }
@Override @Override

View File

@@ -1,17 +1,19 @@
package main; package main;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import ea.BoundingRechteck; import ea.BoundingRechteck;
import ea.Knoten; import ea.Knoten;
import ea.Ticker; import ea.Ticker;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
public class HUD extends Knoten implements Ticker { public class HUD extends Knoten implements Ticker {
private BufferedImage volles_Herz; private BufferedImage volles_Herz;
private BufferedImage halbes_Herz; private BufferedImage halbes_Herz;
private BufferedImage leeres_Herz; private BufferedImage leeres_Herz;
private BufferedImage inventory;
private BufferedImage hauptBild; private BufferedImage hauptBild;
private BufferedImage[] HPLeiste; private BufferedImage[] HPLeiste;
private final static int SCALE = 50; private final static int SCALE = 50;
@@ -24,6 +26,7 @@ public class HUD extends Knoten implements Ticker {
Main.instance.manager.anmelden(this, 200); Main.instance.manager.anmelden(this, 200);
try { try {
hauptBild = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png")); hauptBild = ImageIO.read(HUD.class.getResourceAsStream("/res/images/icons.png"));
inventory = ImageIO.read(HUD.class.getResourceAsStream("/res/images/inventory.png"));
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -65,7 +68,6 @@ public class HUD extends Knoten implements Ticker {
float localeHP; float localeHP;
for (int i = 0; i < HPLeiste.length; i++) { for (int i = 0; i < HPLeiste.length; i++) {
localeHP = Main.instance.getWorld().getPlayer().getHP(); localeHP = Main.instance.getWorld().getPlayer().getHP();
;
localeHP -= ((float) i) * (1f / HPLeiste.length); localeHP -= ((float) i) * (1f / HPLeiste.length);
if (localeHP <= 0f) { if (localeHP <= 0f) {
HPLeiste[i] = leeres_Herz; HPLeiste[i] = leeres_Herz;
@@ -81,8 +83,9 @@ public class HUD extends Knoten implements Ticker {
@Override @Override
public void zeichnen(Graphics2D g, BoundingRechteck r) { public void zeichnen(Graphics2D g, BoundingRechteck r) {
for (int i = 0; i < HPLeiste.length; i++) { for (int i = 0; i < HPLeiste.length; i++) {
g.drawImage(HPLeiste[i], i * SCALE, changeY(), SCALE, SCALE, null); g.drawImage(HPLeiste[i], (i+2) * SCALE, changeY(), SCALE, SCALE, null);
} }
g.drawImage(inventory,0,0,SCALE*2,SCALE*2,null);
} }
} }

View File

@@ -1,21 +1,21 @@
package main; package main;
import java.util.ArrayList;
import ea.Knoten; import ea.Knoten;
import main.entities.player.Player; import main.entities.player.Player;
import main.maps.ImageMap; import main.maps.ImageMap;
import main.maps.Map; import main.maps.Map;
import java.util.ArrayList;
/** /**
* Hier werden alle Maps gespeichert. * Hier werden alle Maps gespeichert.
*/ */
public class World extends Knoten { public class World extends Knoten {
public static final int SCALE_FACTOR = 6; // Der Basis Zoomfaktor public static final int SCALE_FACTOR = 4; // Der Basis Zoomfaktor
public static final int SCALE = SCALE_FACTOR * Tile.getSize(); // Eine Gameunit ist so viele pixel lang public static final int SCALE = SCALE_FACTOR * Tile.getSize(); // Eine Gameunit ist so viele pixel lang
private Map currentMap; // Die Map die aktuell angezeigt werden soll. private ImageMap currentMap; // Die Map die aktuell angezeigt werden soll.
private ArrayList<ImageMap> dungeon; private ArrayList<ImageMap> dungeon;
private Player player; private Player player;
@@ -27,6 +27,7 @@ public class World extends Knoten {
ImageMap start = new ImageMap("/res/images/maps/map2.png"); ImageMap start = new ImageMap("/res/images/maps/map2.png");
dungeon.add(start); dungeon.add(start);
currentMap = start; currentMap = start;
currentMap.start();
start.generate(dungeon, DoorTile.BOTTOM); start.generate(dungeon, DoorTile.BOTTOM);
@@ -49,12 +50,13 @@ public class World extends Knoten {
} }
public void changeMap(DoorTile door) { public void changeMap(DoorTile door) {
currentMap.stop();
currentMap.entfernen(player.actionFigur); currentMap.entfernen(player.actionFigur);
entfernen(currentMap); entfernen(currentMap);
System.out.println(door);
currentMap = door.getConnectedDoor().getMap(); currentMap = door.getConnectedDoor().getMap();
currentMap.add(player.actionFigur); currentMap.add(player.actionFigur);
add(currentMap); add(currentMap);
currentMap.start();
door.getConnectedDoor().waitForLeave(); door.getConnectedDoor().waitForLeave();
player.setPos(door.getConnectedDoor().posX + 0.5f, door.getConnectedDoor().posY + 0.5f); player.setPos(door.getConnectedDoor().posX + 0.5f, door.getConnectedDoor().posY + 0.5f);
} }

View File

@@ -26,6 +26,9 @@ public class Player extends LivingEntity {
spriteScale = 0.8f; spriteScale = 0.8f;
posX = 7.5f; posX = 7.5f;
posY = 5.5f; posY = 5.5f;
// XXX
accelleration = 0.05f;
// unterschiedliche Animationsgeschwindigkeiten // unterschiedliche Animationsgeschwindigkeiten
// für idle // für idle

View File

@@ -8,6 +8,7 @@ import java.util.ArrayList;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import main.DoorTile; import main.DoorTile;
import main.Main;
import main.Tile; import main.Tile;
public class ImageMap extends Map { public class ImageMap extends Map {
@@ -22,6 +23,15 @@ public class ImageMap extends Map {
public DoorTile leftDoor; public DoorTile leftDoor;
public DoorTile rightDoor; public DoorTile rightDoor;
public DoorTile bottomDoor; public DoorTile bottomDoor;
private static ImageMap[] maps;
static {
maps = new ImageMap[8];
for (int i = 0; i < maps.length; i++) {
maps[i] = new ImageMap("/res/images/maps/map" + (i + 1) + ".png");
}
}
public ImageMap(String path) { public ImageMap(String path) {
super(15, 11); super(15, 11);
@@ -90,7 +100,6 @@ public class ImageMap extends Map {
map = nextMap(); map = nextMap();
} while (!connectDoors(topDoor, map)); } while (!connectDoors(topDoor, map));
dungeon.add(map); dungeon.add(map);
System.out.println("TOP");
map.generate(dungeon, DoorTile.BOTTOM); map.generate(dungeon, DoorTile.BOTTOM);
} }
if (bottomDoor != null && fromSide != DoorTile.BOTTOM) { if (bottomDoor != null && fromSide != DoorTile.BOTTOM) {
@@ -99,7 +108,6 @@ public class ImageMap extends Map {
map = nextMap(); map = nextMap();
} while (!connectDoors(bottomDoor, map)); } while (!connectDoors(bottomDoor, map));
dungeon.add(map); dungeon.add(map);
System.out.println("BOTTOM");
map.generate(dungeon, DoorTile.TOP); map.generate(dungeon, DoorTile.TOP);
} }
if (leftDoor != null && fromSide != DoorTile.LEFT) { if (leftDoor != null && fromSide != DoorTile.LEFT) {
@@ -108,7 +116,6 @@ public class ImageMap extends Map {
map = nextMap(); map = nextMap();
} while (!connectDoors(leftDoor, map)); } while (!connectDoors(leftDoor, map));
dungeon.add(map); dungeon.add(map);
System.out.println("LEFT");
map.generate(dungeon, DoorTile.RIGHT); map.generate(dungeon, DoorTile.RIGHT);
} }
if (rightDoor != null && fromSide != DoorTile.RIGHT) { if (rightDoor != null && fromSide != DoorTile.RIGHT) {
@@ -117,14 +124,13 @@ public class ImageMap extends Map {
map = nextMap(); map = nextMap();
} while (!connectDoors(rightDoor, map)); } while (!connectDoors(rightDoor, map));
dungeon.add(map); dungeon.add(map);
System.out.println("RIGHT");
map.generate(dungeon, DoorTile.LEFT); map.generate(dungeon, DoorTile.LEFT);
} }
System.out.println(); System.out.println();
} }
private ImageMap nextMap() { private ImageMap nextMap() {
return new ImageMap("/res/images/maps/map" + ((int) (Math.random() * 4) + 5) + ".png"); return new ImageMap("/res/images/maps/map" + ((int) (Math.random() * 6) + 3) + ".png");
} }
private boolean connectDoors(DoorTile door, ImageMap otherMap) { private boolean connectDoors(DoorTile door, ImageMap otherMap) {
@@ -135,8 +141,6 @@ public class ImageMap extends Map {
} }
door.setConnectedDoor(otherMap.bottomDoor); door.setConnectedDoor(otherMap.bottomDoor);
otherMap.bottomDoor.setConnectedDoor(door); otherMap.bottomDoor.setConnectedDoor(door);
System.out.println(door.getConnectedDoor());
System.out.println(otherMap.bottomDoor.getConnectedDoor());
return true; return true;
case DoorTile.BOTTOM: case DoorTile.BOTTOM:
if (otherMap.topDoor == null) { if (otherMap.topDoor == null) {
@@ -162,4 +166,34 @@ public class ImageMap extends Map {
} }
return true; return true;
} }
public void start() {
if (topDoor != null) {
Main.instance.manager.anmelden(topDoor, 50);
}
if (bottomDoor != null) {
Main.instance.manager.anmelden(bottomDoor, 50);
}
if (leftDoor != null) {
Main.instance.manager.anmelden(leftDoor, 50);
}
if (rightDoor != null) {
Main.instance.manager.anmelden(rightDoor, 50);
}
}
public void stop() {
if (topDoor != null) {
Main.instance.manager.abmelden(topDoor);
}
if (bottomDoor != null) {
Main.instance.manager.abmelden(bottomDoor);
}
if (leftDoor != null) {
Main.instance.manager.abmelden(leftDoor);
}
if (rightDoor != null) {
Main.instance.manager.abmelden(rightDoor);
}
}
} }

View File

Before

Width:  |  Height:  |  Size: 116 B

After

Width:  |  Height:  |  Size: 116 B