From ddb8deffe9b7ac2528ed5e9aab1a03e4ecaa05af Mon Sep 17 00:00:00 2001 From: jull Date: Mon, 3 Mar 2025 19:04:19 +0100 Subject: [PATCH] chore: lava --- .../java/cz/jzitnik/game/SpriteLoader.java | 2 + .../java/cz/jzitnik/game/sprites/Lava.java | 62 +++++++++++++++++++ src/main/resources/textures/lava.ans | 25 ++++++++ 3 files changed, 89 insertions(+) create mode 100644 src/main/java/cz/jzitnik/game/sprites/Lava.java create mode 100644 src/main/resources/textures/lava.ans diff --git a/src/main/java/cz/jzitnik/game/SpriteLoader.java b/src/main/java/cz/jzitnik/game/SpriteLoader.java index 3764722..1d6e077 100644 --- a/src/main/java/cz/jzitnik/game/SpriteLoader.java +++ b/src/main/java/cz/jzitnik/game/SpriteLoader.java @@ -14,6 +14,7 @@ public class SpriteLoader { // Blocks AIR, WATER, + LAVA, DIRT, GRASS, STONE, @@ -142,6 +143,7 @@ public class SpriteLoader { // Block SPRITES_MAP.put(SPRITES.AIR, new Air()); SPRITES_MAP.put(SPRITES.WATER, new Water()); + SPRITES_MAP.put(SPRITES.LAVA, new Lava()); SPRITES_MAP.put(SPRITES.DIRT, new SimpleSprite("dirt.ans")); SPRITES_MAP.put(SPRITES.GRASS, new SimpleSprite("grass.ans")); SPRITES_MAP.put(SPRITES.STONE, new SimpleSprite("stone.ans")); diff --git a/src/main/java/cz/jzitnik/game/sprites/Lava.java b/src/main/java/cz/jzitnik/game/sprites/Lava.java new file mode 100644 index 0000000..da2ed61 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/sprites/Lava.java @@ -0,0 +1,62 @@ +package cz.jzitnik.game.sprites; + +import cz.jzitnik.tui.ResourceLoader; +import cz.jzitnik.tui.Sprite; + +import java.util.Optional; + +public class Lava extends Sprite { + public enum LavaState { + FIRST, + SECOND, + THIRD, + FOURTH, + FIFTH; + + public static LavaState get(int x) { + return switch (x) { + case 5 -> FIRST; + case 4 -> SECOND; + case 3 -> THIRD; + case 2 -> FOURTH; + case 1 -> FIFTH; + default -> throw new IllegalStateException("Unexpected value: " + x); + }; + } + } + + public String getSprite() { + return getSprite(LavaState.FIRST); + } + + public String getSprite(Enum e) { + String[] resource = ResourceLoader.loadResource("lava.ans").split("\n"); + + int numberFormTop = switch (e) { + case LavaState.FIRST -> 0; + case LavaState.SECOND -> 5; + case LavaState.THIRD -> 10; + case LavaState.FOURTH -> 15; + case LavaState.FIFTH -> 20; + default -> throw new IllegalStateException("Unexpected value: " + e); + }; + + StringBuilder stringBuilder = new StringBuilder(); + + for (int i = 0; i < 25; i++) { + if (i < numberFormTop) { + stringBuilder.append("\033[49m ".repeat(50)); + } else { + stringBuilder.append(resource[i]); + } + stringBuilder.append("\n"); + } + + return stringBuilder.toString(); + } + + @Override + public Optional> getStates() { + return Optional.of(LavaState.class); + } +} diff --git a/src/main/resources/textures/lava.ans b/src/main/resources/textures/lava.ans new file mode 100644 index 0000000..e979753 --- /dev/null +++ b/src/main/resources/textures/lava.ans @@ -0,0 +1,25 @@ +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                          +                        +