From 88580aec12351044c06657d8cfcb1bc78fad5e77 Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 28 Jun 2021 09:08:51 +0200 Subject: [PATCH 1/2] Doors working --- Zoelda/src/main/DoorTile.java | 2 - Zoelda/src/main/World.java | 8 ++-- Zoelda/src/main/entities/player/Player.java | 3 ++ Zoelda/src/main/maps/ImageMap.java | 48 ++++++++++++++++++--- 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/Zoelda/src/main/DoorTile.java b/Zoelda/src/main/DoorTile.java index 4df59f1..cef4a3d 100644 --- a/Zoelda/src/main/DoorTile.java +++ b/Zoelda/src/main/DoorTile.java @@ -19,8 +19,6 @@ public class DoorTile extends Tile implements Ticker { public DoorTile(float x, float y, ImageMap map) { super(Tile.DOOR, x, y); this.map = map; - - Main.instance.tickerAnmelden(this, 50); } @Override diff --git a/Zoelda/src/main/World.java b/Zoelda/src/main/World.java index bbf2589..54a6df2 100644 --- a/Zoelda/src/main/World.java +++ b/Zoelda/src/main/World.java @@ -12,10 +12,10 @@ import main.maps.Map; */ 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 - private Map currentMap; // Die Map die aktuell angezeigt werden soll. + private ImageMap currentMap; // Die Map die aktuell angezeigt werden soll. private ArrayList dungeon; private Player player; @@ -27,6 +27,7 @@ public class World extends Knoten { ImageMap start = new ImageMap("/res/images/maps/map2.png"); dungeon.add(start); currentMap = start; + currentMap.start(); start.generate(dungeon, DoorTile.BOTTOM); @@ -49,12 +50,13 @@ public class World extends Knoten { } public void changeMap(DoorTile door) { + currentMap.stop(); currentMap.entfernen(player.actionFigur); entfernen(currentMap); - System.out.println(door); currentMap = door.getConnectedDoor().getMap(); currentMap.add(player.actionFigur); add(currentMap); + currentMap.start(); door.getConnectedDoor().waitForLeave(); player.setPos(door.getConnectedDoor().posX + 0.5f, door.getConnectedDoor().posY + 0.5f); } diff --git a/Zoelda/src/main/entities/player/Player.java b/Zoelda/src/main/entities/player/Player.java index 5097ccd..c6269f5 100644 --- a/Zoelda/src/main/entities/player/Player.java +++ b/Zoelda/src/main/entities/player/Player.java @@ -26,6 +26,9 @@ public class Player extends LivingEntity { spriteScale = 0.8f; posX = 7.5f; posY = 5.5f; + + // XXX + accelleration = 0.05f; // unterschiedliche Animationsgeschwindigkeiten // für idle diff --git a/Zoelda/src/main/maps/ImageMap.java b/Zoelda/src/main/maps/ImageMap.java index ba2980a..18beec1 100644 --- a/Zoelda/src/main/maps/ImageMap.java +++ b/Zoelda/src/main/maps/ImageMap.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import javax.imageio.ImageIO; import main.DoorTile; +import main.Main; import main.Tile; public class ImageMap extends Map { @@ -22,6 +23,15 @@ public class ImageMap extends Map { public DoorTile leftDoor; public DoorTile rightDoor; 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) { super(15, 11); @@ -90,7 +100,6 @@ public class ImageMap extends Map { map = nextMap(); } while (!connectDoors(topDoor, map)); dungeon.add(map); - System.out.println("TOP"); map.generate(dungeon, DoorTile.BOTTOM); } if (bottomDoor != null && fromSide != DoorTile.BOTTOM) { @@ -99,7 +108,6 @@ public class ImageMap extends Map { map = nextMap(); } while (!connectDoors(bottomDoor, map)); dungeon.add(map); - System.out.println("BOTTOM"); map.generate(dungeon, DoorTile.TOP); } if (leftDoor != null && fromSide != DoorTile.LEFT) { @@ -108,7 +116,6 @@ public class ImageMap extends Map { map = nextMap(); } while (!connectDoors(leftDoor, map)); dungeon.add(map); - System.out.println("LEFT"); map.generate(dungeon, DoorTile.RIGHT); } if (rightDoor != null && fromSide != DoorTile.RIGHT) { @@ -117,14 +124,13 @@ public class ImageMap extends Map { map = nextMap(); } while (!connectDoors(rightDoor, map)); dungeon.add(map); - System.out.println("RIGHT"); map.generate(dungeon, DoorTile.LEFT); } System.out.println(); } 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) { @@ -135,8 +141,6 @@ public class ImageMap extends Map { } door.setConnectedDoor(otherMap.bottomDoor); otherMap.bottomDoor.setConnectedDoor(door); - System.out.println(door.getConnectedDoor()); - System.out.println(otherMap.bottomDoor.getConnectedDoor()); return true; case DoorTile.BOTTOM: if (otherMap.topDoor == null) { @@ -162,4 +166,34 @@ public class ImageMap extends Map { } 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); + } + } } From fc17421e0bdbd1dbddfd4742ad8a6948674bd668 Mon Sep 17 00:00:00 2001 From: Artem Didytschuk Date: Mon, 28 Jun 2021 09:37:08 +0200 Subject: [PATCH 2/2] Inventory HUD Implementation --- Zoelda/src/main/HUD.java | 15 +++++++++------ Zoelda/src/main/World.java | 6 +++--- .../res/images/{Inventar.png => inventory.png} | Bin 3 files changed, 12 insertions(+), 9 deletions(-) rename Zoelda/src/res/images/{Inventar.png => inventory.png} (100%) diff --git a/Zoelda/src/main/HUD.java b/Zoelda/src/main/HUD.java index c8e5db6..d998271 100644 --- a/Zoelda/src/main/HUD.java +++ b/Zoelda/src/main/HUD.java @@ -1,17 +1,19 @@ package main; -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; +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.IOException; + public class HUD extends Knoten implements Ticker { 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; @@ -22,6 +24,7 @@ public class HUD extends Knoten implements Ticker { Main.instance.manager.anmelden(this, 50); 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(); } @@ -49,7 +52,6 @@ public class HUD extends Knoten implements Ticker { float localeHP; for (int i = 0; i < HPLeiste.length; i++) { localeHP = Main.instance.getWorld().getPlayer().getHP(); - ; localeHP -= ((float) i) * (1f / HPLeiste.length); if (localeHP <= 0f) { HPLeiste[i] = leeres_Herz; @@ -65,8 +67,9 @@ public class HUD extends Knoten implements Ticker { @Override public void zeichnen(Graphics2D g, BoundingRechteck r) { for (int i = 0; i < HPLeiste.length; i++) { - g.drawImage(HPLeiste[i], i * SCALE, 0, SCALE, SCALE, null); + g.drawImage(HPLeiste[i], (i+2) * SCALE, 0, SCALE, SCALE, null); } + g.drawImage(inventory,0,0,SCALE*2,SCALE*2,null); } } diff --git a/Zoelda/src/main/World.java b/Zoelda/src/main/World.java index bbf2589..f7ab4ec 100644 --- a/Zoelda/src/main/World.java +++ b/Zoelda/src/main/World.java @@ -1,18 +1,18 @@ package main; -import java.util.ArrayList; - import ea.Knoten; import main.entities.player.Player; import main.maps.ImageMap; import main.maps.Map; +import java.util.ArrayList; + /** * Hier werden alle Maps gespeichert. */ 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 private Map currentMap; // Die Map die aktuell angezeigt werden soll. diff --git a/Zoelda/src/res/images/Inventar.png b/Zoelda/src/res/images/inventory.png similarity index 100% rename from Zoelda/src/res/images/Inventar.png rename to Zoelda/src/res/images/inventory.png