diff --git a/src/main/java/cz/jzitnik/Game.java b/src/main/java/cz/jzitnik/Game.java index b2e8532..55f2c52 100644 --- a/src/main/java/cz/jzitnik/Game.java +++ b/src/main/java/cz/jzitnik/Game.java @@ -1,5 +1,6 @@ package cz.jzitnik; +import cz.jzitnik.annotations.injectors.InjectDependency; import cz.jzitnik.game.setup.GameSetup; import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.GlobalIOHandlerRepository; @@ -10,13 +11,19 @@ import org.reflections.Reflections; public class Game { private final DependencyManager dependencyManager = new DependencyManager(new Reflections("cz.jzitnik")); - public void start() { - Cli cli = dependencyManager.getDependencyOrThrow(Cli.class); + @InjectDependency + private Cli cli; + @InjectDependency + private GameSetup gameSetup; + @InjectDependency + private ThreadManager threadManager; + @InjectDependency + private ScheduledTaskManager scheduledTaskManager; + @InjectDependency + private GlobalIOHandlerRepository globalIOHandlerRepository; - GameSetup gameSetup = dependencyManager.getDependencyOrThrow(GameSetup.class); - ThreadManager threadManager = dependencyManager.getDependencyOrThrow(ThreadManager.class); - ScheduledTaskManager scheduledTaskManager = dependencyManager.getDependencyOrThrow(ScheduledTaskManager.class); - GlobalIOHandlerRepository globalIOHandlerRepository = dependencyManager.getDependencyOrThrow(GlobalIOHandlerRepository.class); + public void start() { + dependencyManager.inject(this); try { gameSetup.setup(); diff --git a/src/main/java/cz/jzitnik/config/PlayerConfig.java b/src/main/java/cz/jzitnik/config/PlayerConfig.java index 19744b3..b4c9815 100644 --- a/src/main/java/cz/jzitnik/config/PlayerConfig.java +++ b/src/main/java/cz/jzitnik/config/PlayerConfig.java @@ -7,7 +7,7 @@ import lombok.Getter; @Getter @Config public class PlayerConfig { - private final double playerReach = 20; + private final double playerReach = 50; private final int playerMoveDistance = 3; private final int playerMoveDistanceSprinting = 6; private final PlayerMoveEventHandler.SprintKey sprintKey = PlayerMoveEventHandler.SprintKey.CTRL; diff --git a/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java index cbe1079..ebafb0a 100644 --- a/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java @@ -130,7 +130,7 @@ public class MouseMoveEventHandler extends AbstractEventHandler int objYEnd = cords.getY() + texture.getHeight(); int playerMiddleX = playerCords.getX() + (playerTexture.getWidth() / 2); - int playerMiddleY = playerCords.getY() + (playerTexture.getHeight() / 3); // This is not middle but whatever + int playerMiddleY = playerCords.getY() + (playerTexture.getHeight() / 2); double distance = distancePointToRect( playerMiddleX, playerMiddleY, diff --git a/src/main/java/cz/jzitnik/game/Player.java b/src/main/java/cz/jzitnik/game/Player.java index 9ea32c1..86a14f1 100644 --- a/src/main/java/cz/jzitnik/game/Player.java +++ b/src/main/java/cz/jzitnik/game/Player.java @@ -7,7 +7,6 @@ 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; @@ -115,8 +114,8 @@ public class Player { // Probably in the future, there will be more logic like potions, etc. log.debug("Selected item: {}", selectedItem); - if (selectedItem != null && selectedItem.getType() instanceof WeaponInterface item) { - damage = item.getDamageDeal(); + if (selectedItem != null && selectedItem.getType() instanceof WeaponInterface weapon) { + damage = weapon.getDamageDeal(); } return damage; diff --git a/src/main/java/cz/jzitnik/ui/Inventory.java b/src/main/java/cz/jzitnik/ui/Inventory.java index 90855cb..f417b3d 100644 --- a/src/main/java/cz/jzitnik/ui/Inventory.java +++ b/src/main/java/cz/jzitnik/ui/Inventory.java @@ -18,6 +18,7 @@ import cz.jzitnik.game.ResourceManager; import cz.jzitnik.game.items.GameItem; import cz.jzitnik.game.items.types.InteractableItem; import cz.jzitnik.game.objects.DroppedItem; +import cz.jzitnik.game.utils.RoomCords; import cz.jzitnik.states.ScreenBuffer; import cz.jzitnik.states.TerminalState; import cz.jzitnik.ui.pixels.ColoredPixel; @@ -125,8 +126,18 @@ public class Inventory { var player = gameState.getPlayer(); var inventory = player.getInventory(); var currentRoom = gameState.getCurrentRoom(); + + RoomCords playerCords = gameState.getPlayer().getPlayerCords(); + BufferedImage playerTexture = gameState.getPlayer().getTexture(resourceManager); + GameItem item = inventory[inventoryState.selectedItem]; + BufferedImage itemTexture = item.getTexture(); + RoomCords cords = new RoomCords( + playerCords.getX() + (playerTexture.getWidth() / 2) - (itemTexture.getWidth() / 2), + playerCords.getY() + playerTexture.getHeight() + 5 + ); + // Create timer - DroppedItem droppedItem = new DroppedItem(currentRoom, player.getPlayerCords().clone(), inventory[inventoryState.selectedItem]); + DroppedItem droppedItem = new DroppedItem(currentRoom, cords, item); scheduledSerializedTaskManager.schedule(() -> { droppedItem.getRoom().getDroppedItems().remove(droppedItem); diff --git a/src/main/resources/enemies.yaml b/src/main/resources/enemies.yaml deleted file mode 100644 index f5cd069..0000000 --- a/src/main/resources/enemies.yaml +++ /dev/null @@ -1,23 +0,0 @@ -- id: zombie1 - className: cz.jzitnik.game.setup.enemies.Zombie - health: 10 - texture: PLAYER_FRONT - cords: - x: 100 - y: 100 - drops: - - apple1 - tasks: - - className: cz.jzitnik.game.mobs.tasks.MobFollowingPlayerTask - args: - speed: 1 - range: 100 - - className: cz.jzitnik.game.mobs.tasks.EnemyPlayerHittingTask - args: - cooldown: 500 - damage: 15 - hitSupplier: - rules: - - if: "health > 5" - value: 5 - - value: 2 \ No newline at end of file diff --git a/src/main/resources/items.yaml b/src/main/resources/items.yaml deleted file mode 100644 index 99e8ac8..0000000 --- a/src/main/resources/items.yaml +++ /dev/null @@ -1,15 +0,0 @@ -- id: sword1 - className: cz.jzitnik.game.setup.items.WoodenSword - name: "Wooden sword" - texture: WOODEN_SWORD - itemType: cz.jzitnik.game.items.types.weapons.Sword - properties: - damageDeal: 2 - -- id: apple1 - className: cz.jzitnik.game.setup.items.Apple - name: "Apple" - texture: APPLE - itemType: cz.jzitnik.game.items.types.food.Food - properties: - heal: 5 diff --git a/src/main/resources/rooms.yaml b/src/main/resources/rooms.yaml deleted file mode 100644 index 091003b..0000000 --- a/src/main/resources/rooms.yaml +++ /dev/null @@ -1,57 +0,0 @@ -- id: room1 - className: cz.jzitnik.game.setup.rooms.MainRoom - texture: ROOM1 - objects: - - className: cz.jzitnik.game.objects.Chest - cords: - x: 100 - y: 45 - items: - - sword1 - - apple1 - colliders: - - from: - x: 60 - y: 10 - to: - x: 135 - y: 15 - mobs: - - zombie1 - connections: - right: room2 - -- id: room2 - className: cz.jzitnik.game.GameRoom - texture: ROOM2 - objects: [] - colliders: [] - mobs: [] - connections: - up: room3 - -- id: room3 - className: cz.jzitnik.game.GameRoom - texture: ROOM3 - objects: [] - colliders: [] - mobs: [] - connections: - up: room4 - -- id: room4 - className: cz.jzitnik.game.GameRoom - texture: ROOM4 - objects: [] - colliders: [] - mobs: [] - connections: - left: roomFrozen - -- id: roomFrozen - className: cz.jzitnik.game.GameRoom - texture: ROOM_FROZEN - objects: [] - colliders: [] - mobs: [] - connections: {}