diff --git a/pom.xml b/pom.xml
index 9d4c238..2b0dc09 100644
--- a/pom.xml
+++ b/pom.xml
@@ -116,6 +116,12 @@
2.18.2
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-yaml
+ 2.18.2
+
+
junit
junit
diff --git a/src/main/java/cz/jzitnik/Game.java b/src/main/java/cz/jzitnik/Game.java
index bc0032e..b2e8532 100644
--- a/src/main/java/cz/jzitnik/Game.java
+++ b/src/main/java/cz/jzitnik/Game.java
@@ -18,7 +18,11 @@ public class Game {
ScheduledTaskManager scheduledTaskManager = dependencyManager.getDependencyOrThrow(ScheduledTaskManager.class);
GlobalIOHandlerRepository globalIOHandlerRepository = dependencyManager.getDependencyOrThrow(GlobalIOHandlerRepository.class);
- gameSetup.setup();
+ try {
+ gameSetup.setup();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
threadManager.startAll();
scheduledTaskManager.startAll();
globalIOHandlerRepository.setup();
diff --git a/src/main/java/cz/jzitnik/events/RerenderPart.java b/src/main/java/cz/jzitnik/events/RerenderPart.java
new file mode 100644
index 0000000..77de5b9
--- /dev/null
+++ b/src/main/java/cz/jzitnik/events/RerenderPart.java
@@ -0,0 +1,14 @@
+package cz.jzitnik.events;
+
+import cz.jzitnik.utils.events.Event;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public class RerenderPart implements Event {
+ private int forStartX;
+ private int forEndX;
+ private int forStartY;
+ private int forEndY;
+}
diff --git a/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java b/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java
index 983ea68..4d95226 100644
--- a/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java
+++ b/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java
@@ -1,20 +1,11 @@
package cz.jzitnik.events.handlers;
-import com.googlecode.lanterna.TerminalPosition;
import cz.jzitnik.annotations.EventHandler;
-import cz.jzitnik.annotations.injectors.InjectConfig;
import cz.jzitnik.annotations.injectors.InjectDependency;
-import cz.jzitnik.annotations.injectors.InjectState;
-import cz.jzitnik.config.Debugging;
import cz.jzitnik.events.DroppedItemRerender;
-import cz.jzitnik.events.RerenderScreen;
-import cz.jzitnik.game.GameState;
-import cz.jzitnik.game.ResourceManager;
+import cz.jzitnik.events.RerenderPart;
import cz.jzitnik.game.utils.RoomCords;
-import cz.jzitnik.states.ScreenBuffer;
-import cz.jzitnik.states.TerminalState;
import cz.jzitnik.utils.DependencyManager;
-import cz.jzitnik.utils.RerenderUtils;
import cz.jzitnik.utils.events.AbstractEventHandler;
import cz.jzitnik.utils.events.EventManager;
@@ -29,56 +20,16 @@ public class DroppedItemRerenderHandler extends AbstractEventHandler {
BufferedImage room = resourceManager.getResource(currentRoom.getTexture());
Player player = gameState.getPlayer();
- BufferedImage playerTexture = RerenderUtils.getPlayer(resourceManager, player);
+ BufferedImage playerTexture = player.getTexture(resourceManager);
TerminalSize terminalSize = terminalScreen.getTerminalSize();
int width = room.getWidth();
diff --git a/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java
index 7ed6482..cbe1079 100644
--- a/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java
+++ b/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java
@@ -100,7 +100,7 @@ public class MouseMoveEventHandler extends AbstractEventHandler
BufferedImage room = resourceManager.getResource(currentRoom.getTexture());
Player player = gameState.getPlayer();
RoomCords playerCords = player.getPlayerCords();
- BufferedImage playerTexture = RerenderUtils.getPlayer(resourceManager, player);
+ BufferedImage playerTexture = player.getTexture(resourceManager);
var start = RerenderUtils.getStart(room, terminalState.getTerminalScreen().getTerminalSize());
int startX = start.getX();
diff --git a/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java
index c7e24c4..d1c5b05 100644
--- a/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java
+++ b/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java
@@ -140,7 +140,7 @@ public class PlayerMoveEventHandler extends AbstractEventHandler {
+ public RerenderPartHandler(DependencyManager dm) {
+ super(dm);
+ }
+
+ @InjectState
+ private TerminalState terminalState;
+
+ @InjectState
+ private GameState gameState;
+
+ @InjectState
+ private ScreenBuffer screenBuffer;
+
+ @InjectConfig
+ private Debugging debugging;
+
+ @InjectDependency
+ private ResourceManager resourceManager;
+
+ @InjectDependency
+ private EventManager eventManager;
+
+ @Override
+ public void handle(RerenderPart event) {
+ int forStartX = event.getForStartX();
+ int forEndX = event.getForEndX();
+ int forStartY = event.getForStartY();
+ int forEndY = event.getForEndY();
+
+ GameRoom currentRoom = gameState.getCurrentRoom();
+ BufferedImage room = resourceManager.getResource(currentRoom.getTexture());
+
+ RoomCords start = RerenderUtils.getStart(room, terminalState.getTerminalScreen().getTerminalSize());
+
+ RerenderUtils.rerenderPart(
+ forStartX,
+ forEndX,
+ forStartY,
+ forEndY,
+ start.getX(),
+ start.getY(),
+ currentRoom,
+ room,
+ gameState.getPlayer(),
+ gameState.getPlayer().getTexture(resourceManager),
+ screenBuffer,
+ resourceManager,
+ debugging
+ );
+
+ eventManager.emitEvent(
+ new RerenderScreen(new RerenderScreen.ScreenPart(
+ new TerminalPosition(forStartX, forStartY),
+ new TerminalPosition(forEndX * 2 + 1 + start.getX(), forEndY + start.getY())
+ ))
+ );
+ }
+}
diff --git a/src/main/java/cz/jzitnik/game/Player.java b/src/main/java/cz/jzitnik/game/Player.java
index 264faca..9ea32c1 100644
--- a/src/main/java/cz/jzitnik/game/Player.java
+++ b/src/main/java/cz/jzitnik/game/Player.java
@@ -1,16 +1,24 @@
package cz.jzitnik.game;
+import cz.jzitnik.events.RerenderPart;
import cz.jzitnik.game.items.GameItem;
import cz.jzitnik.game.items.types.interfaces.WeaponInterface;
+import cz.jzitnik.game.mobs.HittableMob;
import cz.jzitnik.game.utils.RoomCords;
import cz.jzitnik.ui.Inventory;
+import cz.jzitnik.utils.DependencyManager;
+import cz.jzitnik.utils.StateManager;
+import cz.jzitnik.utils.events.Event;
+import cz.jzitnik.utils.events.EventManager;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
+import java.awt.image.BufferedImage;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
@RequiredArgsConstructor
@@ -31,6 +39,8 @@ public class Player {
private int health = MAX_HEALTH;
private int stamina = MAX_STAMINA;
private boolean swinging = false;
+ private boolean hitAnimationOn = false;
+ private ScheduledFuture> currentTimeoutHitAnimation = null;
public void increaseStamina() {
stamina++;
@@ -44,7 +54,7 @@ public class Player {
health = Math.min(MAX_HEALTH, health + amount);
}
- public boolean dealDamage(int amount) {
+ public boolean dealDamage(int amount, DependencyManager dependencyManager) {
if (health - amount <= 0) {
health = 0;
return true;
@@ -52,9 +62,54 @@ public class Player {
health -= amount;
+ if (hitAnimationOn) {
+ if (currentTimeoutHitAnimation != null && !currentTimeoutHitAnimation.isDone()) {
+ currentTimeoutHitAnimation.cancel(false);
+ }
+ } else {
+ hitAnimationOn = true;
+ rerender(dependencyManager);
+ }
+
+ currentTimeoutHitAnimation = scheduler.schedule(() -> {
+ hitAnimationOn = false;
+ rerender(dependencyManager);
+ }, 250, TimeUnit.MILLISECONDS);
+
return false;
}
+ private void rerender(DependencyManager dependencyManager) {
+ ResourceManager resourceManager = dependencyManager.getDependencyOrThrow(ResourceManager.class);
+ EventManager eventManager = dependencyManager.getDependencyOrThrow(EventManager.class);
+
+ int forStartX = playerCords.getX();
+ int forStartY = playerCords.getY();
+
+ BufferedImage playerTexture = getTexture(resourceManager);
+ int forEndX = playerCords.getX() + playerTexture.getWidth() - 1;
+ int forEndY = playerCords.getY() + playerTexture.getHeight();
+
+ eventManager.emitEvent(new Event[]{
+ new RerenderPart(forStartX, forEndX, forStartY, forEndY),
+ });
+ }
+
+ public BufferedImage getTexture(ResourceManager resourceManager) {
+ BufferedImage resource = resourceManager.getResource(switch (playerRotation) {
+ case FRONT -> ResourceManager.Resource.PLAYER_FRONT;
+ case BACK -> ResourceManager.Resource.PLAYER_BACK;
+ case LEFT -> ResourceManager.Resource.PLAYER_LEFT;
+ case RIGHT -> ResourceManager.Resource.PLAYER_RIGHT;
+ });
+
+ if (hitAnimationOn) {
+ return HittableMob.applyRedFactor(resource);
+ }
+
+ return resource;
+ }
+
public int getDamageDeal() {
int damage = 1;
diff --git a/src/main/java/cz/jzitnik/game/mobs/HittableMob.java b/src/main/java/cz/jzitnik/game/mobs/HittableMob.java
index 209ba9f..9ce3ccd 100644
--- a/src/main/java/cz/jzitnik/game/mobs/HittableMob.java
+++ b/src/main/java/cz/jzitnik/game/mobs/HittableMob.java
@@ -1,20 +1,11 @@
package cz.jzitnik.game.mobs;
-import com.googlecode.lanterna.TerminalPosition;
-import cz.jzitnik.annotations.injectors.InjectConfig;
import cz.jzitnik.annotations.injectors.InjectDependency;
import cz.jzitnik.annotations.injectors.InjectState;
-import cz.jzitnik.config.Debugging;
-import cz.jzitnik.events.RerenderScreen;
-import cz.jzitnik.game.GameRoom;
+import cz.jzitnik.events.RerenderPart;
import cz.jzitnik.game.GameState;
-import cz.jzitnik.game.Player;
-import cz.jzitnik.game.ResourceManager;
import cz.jzitnik.game.utils.RoomCords;
-import cz.jzitnik.states.ScreenBuffer;
-import cz.jzitnik.states.TerminalState;
import cz.jzitnik.utils.DependencyManager;
-import cz.jzitnik.utils.RerenderUtils;
import cz.jzitnik.utils.events.EventManager;
import cz.jzitnik.utils.roomtasks.RoomTask;
import cz.jzitnik.utils.roomtasks.RoomTaskScheduler;
@@ -22,6 +13,7 @@ import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import java.awt.image.BufferedImage;
+import java.awt.image.DataBufferByte;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
@@ -32,25 +24,47 @@ public abstract class HittableMob extends Mob {
public abstract void onKilled();
private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
+ @Getter
protected int health;
private ScheduledFuture> currentTimeoutHitAnimation = null;
- @Getter
private boolean hitAnimationOn = false;
+ @Override
+ public BufferedImage getTexture() {
+ if (hitAnimationOn) {
+ return applyRedFactor(texture);
+ }
+
+ return texture;
+ }
+
+ public static BufferedImage applyRedFactor(BufferedImage src) {
+ final float redFactor = 2f;
+ int width = src.getWidth();
+ int height = src.getHeight();
+
+ BufferedImage copy = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
+ byte[] srcPixels = ((DataBufferByte) src.getRaster().getDataBuffer()).getData();
+ byte[] dstPixels = ((DataBufferByte) copy.getRaster().getDataBuffer()).getData();
+
+ System.arraycopy(srcPixels, 0, dstPixels, 0, srcPixels.length);
+
+ for (int i = 0; i < dstPixels.length; i += 4) {
+ int red = dstPixels[i + 3] & 0xFF;
+ red = (int) (red * redFactor);
+ if (red > 255) red = 255;
+ dstPixels[i + 3] = (byte) red;
+ }
+
+ return copy;
+ }
+
@InjectDependency
private EventManager eventManager;
@InjectState
private GameState gameState;
@InjectDependency
- private ResourceManager resourceManager;
- @InjectState
- private TerminalState terminalState;
- @InjectState
- private ScreenBuffer screenBuffer;
- @InjectConfig
- private Debugging debugging;
- @InjectDependency
private RoomTaskScheduler roomTaskScheduler;
public HittableMob(BufferedImage texture, RoomTask task, RoomCords cords, int initialHealth) {
@@ -99,34 +113,11 @@ public abstract class HittableMob extends Mob {
int forEndX = cords.getX() + texture.getWidth() - 1;
int forEndY = cords.getY() + texture.getHeight();
- GameRoom currentRoom = gameState.getCurrentRoom();
- BufferedImage room = resourceManager.getResource(currentRoom.getTexture());
- Player player = gameState.getPlayer();
- BufferedImage playerTexture = RerenderUtils.getPlayer(resourceManager, player);
-
- var start = RerenderUtils.getStart(room, terminalState.getTerminalScreen().getTerminalSize());
- int startX = start.getX();
- int startY = start.getY();
-
- RerenderUtils.rerenderPart(
+ eventManager.emitEvent(new RerenderPart(
forStartX,
forEndX,
forStartY,
- forEndY,
- startX,
- startY,
- currentRoom,
- room,
- player,
- playerTexture,
- screenBuffer,
- resourceManager,
- debugging
- );
-
- eventManager.emitEvent(new RerenderScreen(new RerenderScreen.ScreenPart(
- new TerminalPosition(forStartX, forStartY),
- new TerminalPosition(forEndX * 2 + 1 + startX, forEndY + startY)
- )));
+ forEndY
+ ));
}
}
diff --git a/src/main/java/cz/jzitnik/game/mobs/HittableMobDrops.java b/src/main/java/cz/jzitnik/game/mobs/HittableMobDrops.java
index a115f05..24b2a0d 100644
--- a/src/main/java/cz/jzitnik/game/mobs/HittableMobDrops.java
+++ b/src/main/java/cz/jzitnik/game/mobs/HittableMobDrops.java
@@ -43,6 +43,12 @@ public abstract class HittableMobDrops extends HittableMob {
private static final int DROP_ITEM_ON_GROUND_RADIUS = 30;
+ /**
+ * Can be overwritten by an extending class
+ **/
+ public void afterKill() {
+ }
+
@Override
public final void onKilled() {
GameItem[] items = itemDropSupplier.get();
@@ -77,6 +83,6 @@ public abstract class HittableMobDrops extends HittableMob {
}
}
- eventManager.emitEvent(events);
+ eventManager.emitEvent(events, this::afterKill);
}
}
diff --git a/src/main/java/cz/jzitnik/game/mobs/HittableMobNoDrops.java b/src/main/java/cz/jzitnik/game/mobs/HittableMobNoDrops.java
new file mode 100644
index 0000000..5a7cb06
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/mobs/HittableMobNoDrops.java
@@ -0,0 +1,17 @@
+package cz.jzitnik.game.mobs;
+
+import cz.jzitnik.game.utils.RoomCords;
+import cz.jzitnik.utils.roomtasks.RoomTask;
+
+import java.awt.image.BufferedImage;
+
+public abstract class HittableMobNoDrops extends HittableMob {
+ public HittableMobNoDrops(BufferedImage texture, RoomTask task, RoomCords cords, int initialHealth) {
+ super(texture, task, cords, initialHealth);
+ }
+
+ @Override
+ public void onKilled() {
+
+ }
+}
diff --git a/src/main/java/cz/jzitnik/game/mobs/tasks/EnemyPlayerHittingTask.java b/src/main/java/cz/jzitnik/game/mobs/tasks/EnemyPlayerHittingTask.java
index 13c3ba6..c1c5571 100644
--- a/src/main/java/cz/jzitnik/game/mobs/tasks/EnemyPlayerHittingTask.java
+++ b/src/main/java/cz/jzitnik/game/mobs/tasks/EnemyPlayerHittingTask.java
@@ -6,6 +6,7 @@ import cz.jzitnik.events.RenderStats;
import cz.jzitnik.game.GameState;
import cz.jzitnik.game.mobs.Mob;
import cz.jzitnik.game.utils.RoomCords;
+import cz.jzitnik.utils.DependencyManager;
import cz.jzitnik.utils.events.EventManager;
import cz.jzitnik.utils.roomtasks.RoomTask;
import lombok.RequiredArgsConstructor;
@@ -32,6 +33,9 @@ public class EnemyPlayerHittingTask extends RoomTask {
@InjectDependency
private EventManager eventManager;
+ @InjectDependency
+ private DependencyManager dependencyManager;
+
@Override
public void run() {
RoomCords playerCords = gameState.getPlayer().getPlayerCords();
@@ -44,7 +48,7 @@ public class EnemyPlayerHittingTask extends RoomTask {
int damage = damageSupplier.get();
- boolean isDead = gameState.getPlayer().dealDamage(damage);
+ boolean isDead = gameState.getPlayer().dealDamage(damage, dependencyManager);
eventManager.emitEvent(new RenderStats());
log.debug("Is dead: {}", isDead);
diff --git a/src/main/java/cz/jzitnik/game/mobs/tasks/MobFollowingPlayerTask.java b/src/main/java/cz/jzitnik/game/mobs/tasks/MobFollowingPlayerTask.java
index ed1d0e1..b138880 100644
--- a/src/main/java/cz/jzitnik/game/mobs/tasks/MobFollowingPlayerTask.java
+++ b/src/main/java/cz/jzitnik/game/mobs/tasks/MobFollowingPlayerTask.java
@@ -79,7 +79,7 @@ public class MobFollowingPlayerTask extends RoomTask {
int startY = start.getY();
Player player = gameState.getPlayer();
- BufferedImage playerTexture = RerenderUtils.getPlayer(resourceManager, player);
+ BufferedImage playerTexture = player.getTexture(resourceManager);
RerenderUtils.rerenderPart(forStartX, forEndX, forStartY, forEndY, startX, startY, gameState.getCurrentRoom(), room, player, playerTexture, screenBuffer, resourceManager, debugging);
diff --git a/src/main/java/cz/jzitnik/game/objects/Chest.java b/src/main/java/cz/jzitnik/game/objects/Chest.java
index ca114bc..b3cae97 100644
--- a/src/main/java/cz/jzitnik/game/objects/Chest.java
+++ b/src/main/java/cz/jzitnik/game/objects/Chest.java
@@ -9,6 +9,7 @@ import cz.jzitnik.annotations.injectors.InjectState;
import cz.jzitnik.config.Debugging;
import cz.jzitnik.events.InventoryRerender;
import cz.jzitnik.events.MouseAction;
+import cz.jzitnik.events.RerenderPart;
import cz.jzitnik.events.RerenderScreen;
import cz.jzitnik.game.GameRoom;
import cz.jzitnik.game.GameState;
@@ -39,7 +40,6 @@ public final class Chest extends GameObject implements UIClickHandler {
private static final int RENDER_PADDING = 1;
private final List items;
- private final DependencyManager dependencyManager;
private int listenerHashCode;
@@ -49,8 +49,6 @@ public final class Chest extends GameObject implements UIClickHandler {
private int chestUISizeX;
private int chestUISizeY;
- @InjectDependency
- private StateManager sm;
@InjectDependency
private ResourceManager resourceManager;
@InjectDependency
@@ -68,10 +66,9 @@ public final class Chest extends GameObject implements UIClickHandler {
@InjectConfig
private Debugging debugging;
- public Chest(DependencyManager dm, ResourceManager resourceManager, RoomCords cords, GameItem[] items) {
+ public Chest(ResourceManager resourceManager, RoomCords cords, GameItem[] items) {
super(resourceManager.getResource(ResourceManager.Resource.CHEST), cords, true);
this.items = Lists.newArrayList(items);
- this.dependencyManager = dm;
}
@Override
@@ -99,7 +96,7 @@ public final class Chest extends GameObject implements UIClickHandler {
Player player = gameState.getPlayer();
BufferedImage roomTexture = resourceManager.getResource(currentRoom.getTexture());
- BufferedImage playerTexture = RerenderUtils.getPlayer(resourceManager, player);
+ BufferedImage playerTexture = player.getTexture(resourceManager);
BufferedImage chestTexture = getTexture();
var buffer = screenBuffer.getRenderedBuffer();
@@ -150,34 +147,19 @@ public final class Chest extends GameObject implements UIClickHandler {
TerminalPosition guiStart = new TerminalPosition(renderMinX - RENDER_PADDING, renderMinY - RENDER_PADDING);
TerminalPosition guiEnd = new TerminalPosition(renderMaxX + RENDER_PADDING, renderMaxY + RENDER_PADDING);
-
- if (!items.isEmpty()) {
- drawUI(currentGrid, buffer, overrideBuffer, start, guiStartX, guiStartY);
- }
-
- RerenderUtils.rerenderPart(
- guiStart.getColumn() - start.getX(),
- guiEnd.getColumn() - start.getX(),
- guiStart.getRow() - start.getY(),
- guiEnd.getRow() - start.getY(),
- start.getX(),
- start.getY(),
- currentRoom,
- roomTexture,
- player,
- playerTexture,
- screenBuffer,
- resourceManager,
- debugging
- );
-
RerenderScreen.ScreenPart sp = new RerenderScreen.ScreenPart(guiStart, guiEnd);
if (!items.isEmpty()) {
+ drawUI(currentGrid, buffer, overrideBuffer, start, guiStartX, guiStartY);
listenerHashCode = uiRoomClickHandlerRepository.registerCurrentRoomHandler(sp, this);
}
- eventManager.emitEvent(new RerenderScreen(sp));
+ eventManager.emitEvent(new RerenderPart(
+ guiStart.getColumn() - start.getX(),
+ guiEnd.getColumn() - start.getX(),
+ guiStart.getRow() - start.getY(),
+ guiEnd.getRow() - start.getY()
+ ));
}
private void clearPreviousUI(
diff --git a/src/main/java/cz/jzitnik/game/setup/GameSetup.java b/src/main/java/cz/jzitnik/game/setup/GameSetup.java
index 7a9c427..a3ff9d9 100644
--- a/src/main/java/cz/jzitnik/game/setup/GameSetup.java
+++ b/src/main/java/cz/jzitnik/game/setup/GameSetup.java
@@ -22,7 +22,7 @@ public class GameSetup {
public void setup() {
//gameState.setScreen(new IntroScene(dependencyManager));
- GameRoom mainRoom = new MainRoom(dependencyManager, resourceManager);
+ GameRoom mainRoom = new MainRoom(resourceManager);
GameRoom rightRoom = new GameRoom(ResourceManager.Resource.ROOM2);
GameRoom topRightRoom = new GameRoom(ResourceManager.Resource.ROOM3);
GameRoom topRightTop = new GameRoom(ResourceManager.Resource.ROOM4);
diff --git a/src/main/java/cz/jzitnik/game/setup/config/EnemiesConfigSetup.java b/src/main/java/cz/jzitnik/game/setup/config/EnemiesConfigSetup.java
new file mode 100644
index 0000000..26ddac7
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/setup/config/EnemiesConfigSetup.java
@@ -0,0 +1,14 @@
+package cz.jzitnik.game.setup.config;
+
+import cz.jzitnik.game.ResourceManager;
+
+public class EnemiesConfigSetup {
+ private class Enemy {
+ private ResourceManager.Resource texture;
+ private int initialHealth;
+ }
+
+ public void setup() {
+
+ }
+}
diff --git a/src/main/java/cz/jzitnik/game/setup/rooms/MainRoom.java b/src/main/java/cz/jzitnik/game/setup/rooms/MainRoom.java
index d5a7613..f0c3804 100644
--- a/src/main/java/cz/jzitnik/game/setup/rooms/MainRoom.java
+++ b/src/main/java/cz/jzitnik/game/setup/rooms/MainRoom.java
@@ -9,15 +9,14 @@ import cz.jzitnik.game.setup.items.WoodenSword;
import cz.jzitnik.game.objects.Chest;
import cz.jzitnik.game.setup.enemies.Zombie;
import cz.jzitnik.game.utils.RoomCords;
-import cz.jzitnik.utils.DependencyManager;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class MainRoom extends GameRoom {
- public MainRoom(DependencyManager dependencyManager, ResourceManager resourceManager) {
+ public MainRoom(ResourceManager resourceManager) {
super(ResourceManager.Resource.ROOM1);
- Chest chest = new Chest(dependencyManager, resourceManager, new RoomCords(100, 45), new GameItem[]{
+ Chest chest = new Chest(resourceManager, new RoomCords(100, 45), new GameItem[]{
new WoodenSword(resourceManager),
new Apple(resourceManager)
});
diff --git a/src/main/java/cz/jzitnik/utils/DependencyManager.java b/src/main/java/cz/jzitnik/utils/DependencyManager.java
index acae27d..93236bc 100644
--- a/src/main/java/cz/jzitnik/utils/DependencyManager.java
+++ b/src/main/java/cz/jzitnik/utils/DependencyManager.java
@@ -26,7 +26,7 @@ public class DependencyManager {
private final ClassToInstanceMap