diff --git a/src/main/java/cz/jzitnik/game/SpriteLoader.java b/src/main/java/cz/jzitnik/game/SpriteLoader.java index 6ed448d..24c4ef7 100644 --- a/src/main/java/cz/jzitnik/game/SpriteLoader.java +++ b/src/main/java/cz/jzitnik/game/SpriteLoader.java @@ -1,6 +1,7 @@ package cz.jzitnik.game; import cz.jzitnik.game.sprites.*; +import cz.jzitnik.game.sprites.ui.Number; import cz.jzitnik.tui.Sprite; import cz.jzitnik.tui.SpriteList; import lombok.extern.slf4j.Slf4j; @@ -78,6 +79,7 @@ public class SpriteLoader { BREAKING, HEART, HUNGER, + NUMBER, // Seeds WHEAT, @@ -263,6 +265,7 @@ public class SpriteLoader { SPRITES_MAP.put(SPRITES.BREAKING, new Breaking()); SPRITES_MAP.put(SPRITES.HEART, new Heart()); SPRITES_MAP.put(SPRITES.HUNGER, new Hunger()); + SPRITES_MAP.put(SPRITES.NUMBER, new Number()); // SEEDS SPRITES_MAP.put(SPRITES.WHEAT, new Farmable("dirt.ans", "grass.ans", "sand.ans")); diff --git a/src/main/java/cz/jzitnik/game/blocks/Furnace.java b/src/main/java/cz/jzitnik/game/blocks/Furnace.java index 9be659a..faaf861 100644 --- a/src/main/java/cz/jzitnik/game/blocks/Furnace.java +++ b/src/main/java/cz/jzitnik/game/blocks/Furnace.java @@ -50,7 +50,7 @@ public class Furnace implements RightClickHandler, Serializable { ? spriteList.getSprite(outputItem.getItem().getFirst().getSprite()) .getSprite(outputItem.getItem().getFirst().getSpriteState().get()) : spriteList.getSprite(outputItem.getItem().getFirst().getSprite()).getSprite(), - Numbers.getNumberSprite(outputItem.getAmount())).split("\n"); + Numbers.getNumberSprite(outputItem.getAmount(), spriteList)).split("\n"); for (int j = 0; j < CELL_HEIGHT; j++) { buffer.append("\033[0m").append(" ".repeat(moveLeft)); diff --git a/src/main/java/cz/jzitnik/game/handlers/place/CustomAnnotationHandler.java b/src/main/java/cz/jzitnik/game/handlers/place/CustomAnnotationHandler.java index 361a515..9e5eba4 100644 --- a/src/main/java/cz/jzitnik/game/handlers/place/CustomAnnotationHandler.java +++ b/src/main/java/cz/jzitnik/game/handlers/place/CustomAnnotationHandler.java @@ -173,7 +173,6 @@ public class CustomAnnotationHandler implements CustomPlaceHandler { private boolean placeFarmable(Game game, int x, int y) { var blocksBottom = game.getWorld()[y + 1][x]; - System.out.println("lol"); if (blocksBottom.stream().noneMatch(block -> block.getBlockId().equals("farmland"))) { return false; diff --git a/src/main/java/cz/jzitnik/game/handlers/place/DefaultPlaceHandler.java b/src/main/java/cz/jzitnik/game/handlers/place/DefaultPlaceHandler.java index a641bb2..1bb43ae 100644 --- a/src/main/java/cz/jzitnik/game/handlers/place/DefaultPlaceHandler.java +++ b/src/main/java/cz/jzitnik/game/handlers/place/DefaultPlaceHandler.java @@ -2,18 +2,23 @@ package cz.jzitnik.game.handlers.place; import cz.jzitnik.game.Game; import cz.jzitnik.game.entities.Block; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class DefaultPlaceHandler implements CustomPlaceHandler { @Override public boolean place(Game game, int x, int y) { var blocks = game.getWorld()[y][x]; var inventory = game.getInventory(); + var block = inventory.getItemInHand().get().getBlock().get(); - blocks.add(inventory.getItemInHand().get().getBlock().get()); + blocks.add(block); blocks.removeAll(blocks.stream().filter(Block::isFlowing).toList()); inventory.decreaseItemInHand(); + log.info("Block {} was placed at coordinates x:{},y:{}", block.getBlockId(), x, y); + return true; } diff --git a/src/main/java/cz/jzitnik/game/sprites/Sheep.java b/src/main/java/cz/jzitnik/game/sprites/Sheep.java index 511d2d2..da84428 100644 --- a/src/main/java/cz/jzitnik/game/sprites/Sheep.java +++ b/src/main/java/cz/jzitnik/game/sprites/Sheep.java @@ -1,10 +1,8 @@ package cz.jzitnik.game.sprites; -import cz.jzitnik.tui.ResourceLoader; import cz.jzitnik.tui.Sprite; import java.util.HashMap; -import java.util.Optional; public class Sheep extends Sprite { public enum SheepState { diff --git a/src/main/java/cz/jzitnik/game/sprites/ui/Number.java b/src/main/java/cz/jzitnik/game/sprites/ui/Number.java index f363184..9337200 100644 --- a/src/main/java/cz/jzitnik/game/sprites/ui/Number.java +++ b/src/main/java/cz/jzitnik/game/sprites/ui/Number.java @@ -1,16 +1,34 @@ package cz.jzitnik.game.sprites.ui; -import cz.jzitnik.tui.ResourceLoader; import cz.jzitnik.tui.Sprite; +import lombok.extern.slf4j.Slf4j; -import java.util.Objects; +import java.util.HashMap; import java.util.Optional; -public class Number extends Sprite { +@Slf4j +public class Number extends Sprite { public enum NumberState { ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, } + public Number() { + loadResources(new HashMap<>() { + { + put(NumberState.ZERO, "numbers/0.ans"); + put(NumberState.ONE, "numbers/1.ans"); + put(NumberState.TWO, "numbers/2.ans"); + put(NumberState.THREE, "numbers/3.ans"); + put(NumberState.FOUR, "numbers/4.ans"); + put(NumberState.FIVE, "numbers/5.ans"); + put(NumberState.SIX, "numbers/6.ans"); + put(NumberState.SEVEN, "numbers/7.ans"); + put(NumberState.EIGHT, "numbers/8.ans"); + put(NumberState.NINE, "numbers/9.ans"); + } + }, NumberState.class); + } + public static String fixForHotbar(String str, int place) { var parts = str.split("\n"); // Make it 50x25 @@ -30,27 +48,16 @@ public class Number extends Sprite { private String fix(String x) { return x; // return x.replaceAll("\033\\[38;5;1;48;5;16m", "\033[0m").replaceAll("\033\\[38;5;16;48;5;16m▓", "\033[0m "); - // // TODO: Fix issue with sprite size decreasing + // TODO: Fix issue with sprite size decreasing } public String getSprite() { - return fix(Objects.requireNonNull(ResourceLoader.loadResource("breaking/1.ans"))); + return getSprite(NumberState.ZERO); } - public String getSprite(Enum key) { - return fix(Objects.requireNonNull(ResourceLoader.loadResource(switch (key) { - case NumberState.ZERO -> "numbers/0.ans"; - case NumberState.ONE -> "numbers/1.ans"; - case NumberState.TWO -> "numbers/2.ans"; - case NumberState.THREE -> "numbers/3.ans"; - case NumberState.FOUR -> "numbers/4.ans"; - case NumberState.FIVE -> "numbers/5.ans"; - case NumberState.SIX -> "numbers/6.ans"; - case NumberState.SEVEN -> "numbers/7.ans"; - case NumberState.EIGHT -> "numbers/8.ans"; - case NumberState.NINE -> "numbers/9.ans"; - default -> throw new IllegalStateException("Unexpected value: " + key); - }))); + public String getSprite(NumberState key) { + log.debug("{}", key); + return fix(getResource(key)); } @Override diff --git a/src/main/java/cz/jzitnik/game/ui/CraftingTable.java b/src/main/java/cz/jzitnik/game/ui/CraftingTable.java index a5bf74d..4e764f2 100644 --- a/src/main/java/cz/jzitnik/game/ui/CraftingTable.java +++ b/src/main/java/cz/jzitnik/game/ui/CraftingTable.java @@ -71,7 +71,7 @@ public class CraftingTable { ? spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()) .getSprite(inventoryItem.getItem().getFirst().getSpriteState().get()) : spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()).getSprite(), - Numbers.getNumberSprite(inventoryItem.getAmount())).split("\n")).orElse(null); + Numbers.getNumberSprite(inventoryItem.getAmount(), spriteList)).split("\n")).orElse(null); for (int i = 0; i < ROW_AMOUNT; i++) { for (int j = 0; j < CELL_HEIGHT; j++) { diff --git a/src/main/java/cz/jzitnik/game/ui/Inventory.java b/src/main/java/cz/jzitnik/game/ui/Inventory.java index bc53962..9c97dc7 100644 --- a/src/main/java/cz/jzitnik/game/ui/Inventory.java +++ b/src/main/java/cz/jzitnik/game/ui/Inventory.java @@ -261,14 +261,14 @@ public class Inventory extends AutoTransientSupport { .get()) : spriteList.getSprite(item.getItem().getFirst().getSprite()) .getSprite(), - Numbers.getNumberSprite(item.getAmount()))); + Numbers.getNumberSprite(item.getAmount(), spriteList))); } else { sprite = SpriteCombiner.combineTwoSprites( item.getItem().getFirst().getSpriteState().isPresent() ? spriteList.getSprite(item.getItem().getFirst().getSprite()) .getSprite(item.getItem().getFirst().getSpriteState().get()) : spriteList.getSprite(item.getItem().getFirst().getSprite()).getSprite(), - Numbers.getNumberSprite(item.getAmount())); + Numbers.getNumberSprite(item.getAmount(), spriteList)); } if (item.getItem().getFirst().getDurability() == 0 diff --git a/src/main/java/cz/jzitnik/game/ui/SmallCraftingTable.java b/src/main/java/cz/jzitnik/game/ui/SmallCraftingTable.java index adca6c6..40dea51 100644 --- a/src/main/java/cz/jzitnik/game/ui/SmallCraftingTable.java +++ b/src/main/java/cz/jzitnik/game/ui/SmallCraftingTable.java @@ -58,7 +58,7 @@ public class SmallCraftingTable { ? spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()) .getSprite(inventoryItem.getItem().getFirst().getSpriteState().get()) : spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()).getSprite(), - Numbers.getNumberSprite(inventoryItem.getAmount())).split("\n")).orElse(null); + Numbers.getNumberSprite(inventoryItem.getAmount(), spriteList)).split("\n")).orElse(null); int counter = 0; for (int i = 0; i < ROW_AMOUNT; i++) { diff --git a/src/main/java/cz/jzitnik/tui/ResourceLoader.java b/src/main/java/cz/jzitnik/tui/ResourceLoader.java index 39a1f9f..7123305 100644 --- a/src/main/java/cz/jzitnik/tui/ResourceLoader.java +++ b/src/main/java/cz/jzitnik/tui/ResourceLoader.java @@ -9,7 +9,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class ResourceLoader { public static String loadResource(String fileName) { - log.debug("Loading resource: {}", "textures/" + fileName); + log.info("Loading resource: {}", "textures/" + fileName); try (InputStream inputStream = ResourceLoader.class.getClassLoader() .getResourceAsStream("textures/" + fileName)) { if (inputStream == null) { diff --git a/src/main/java/cz/jzitnik/tui/utils/Numbers.java b/src/main/java/cz/jzitnik/tui/utils/Numbers.java index 63361ce..f60e4de 100644 --- a/src/main/java/cz/jzitnik/tui/utils/Numbers.java +++ b/src/main/java/cz/jzitnik/tui/utils/Numbers.java @@ -1,6 +1,8 @@ package cz.jzitnik.tui.utils; +import cz.jzitnik.game.SpriteLoader; import cz.jzitnik.game.sprites.ui.Number; +import cz.jzitnik.tui.SpriteList; public class Numbers { private static Number.NumberState getNumberState(int digit) { @@ -19,7 +21,7 @@ public class Numbers { }; } - public static String getNumberSprite(int number) { + public static String getNumberSprite(int number, SpriteList spriteList) { if (number == 1) { StringBuilder sprite = new StringBuilder(); for (int i = 0; i < 25; i++) { @@ -29,7 +31,7 @@ public class Numbers { return sprite.toString(); } - Number nm = new Number(); + var nm = spriteList.getSprite(SpriteLoader.SPRITES.NUMBER); if (number <= 9) { Number.NumberState numberState = getNumberState(number);