chore: Some minor additions

This commit is contained in:
Jakub Žitník 2025-02-21 20:40:01 +01:00
parent 1209092a9c
commit aa5915914e
Signed by: jzitnik
GPG Key ID: C577A802A6AF4EF3
9 changed files with 98 additions and 28 deletions

View File

@ -1,7 +1,6 @@
package cz.jzitnik.game; package cz.jzitnik.game;
import cz.jzitnik.game.items.Item; import cz.jzitnik.game.items.ItemBlockSupplier;
import cz.jzitnik.game.items.ItemBlockGenerator;
import cz.jzitnik.game.items.ItemType; import cz.jzitnik.game.items.ItemType;
import java.util.ArrayList; import java.util.ArrayList;
@ -54,16 +53,16 @@ public class Generation {
for (int i = 0; i < 512; i++) { for (int i = 0; i < 512; i++) {
int hillHeight = terrainHeight[i]; int hillHeight = terrainHeight[i];
world[hillHeight][i].add(ItemBlockGenerator.Blocks.grass()); world[hillHeight][i].add(ItemBlockSupplier.Blocks.grass());
for (int j = 1; j <= 4; j++) { for (int j = 1; j <= 4; j++) {
if (hillHeight + j < 256) { if (hillHeight + j < 256) {
world[hillHeight + j][i].add(ItemBlockGenerator.Blocks.dirt()); world[hillHeight + j][i].add(ItemBlockSupplier.Blocks.dirt());
} }
} }
for (int j = hillHeight + 5; j < 250; j++) { for (int j = hillHeight + 5; j < 250; j++) {
world[j][i].add(ItemBlockGenerator.Blocks.stone()); world[j][i].add(ItemBlockSupplier.Blocks.stone());
} }
world[255][i].add(new Block("bedrock", SpriteLoader.SPRITES.BEDROCK)); world[255][i].add(new Block("bedrock", SpriteLoader.SPRITES.BEDROCK));
@ -87,7 +86,7 @@ public class Generation {
for (int j = 0; j < 3; j++) { for (int j = 0; j < 3; j++) {
if (treeBase - j >= 0) { if (treeBase - j >= 0) {
world[treeBase - j - 1][i].add(ItemBlockGenerator.Blocks.oakLog()); world[treeBase - j - 1][i].add(ItemBlockSupplier.Blocks.oakLog());
} }
} }

View File

@ -1,7 +1,7 @@
package cz.jzitnik.game; package cz.jzitnik.game;
import cz.jzitnik.game.sprites.*; import cz.jzitnik.game.sprites.*;
import cz.jzitnik.game.sprites.items.SimpleItem; import cz.jzitnik.game.sprites.SimpleSprite;
import cz.jzitnik.tui.Sprite; import cz.jzitnik.tui.Sprite;
import cz.jzitnik.tui.SpriteList; import cz.jzitnik.tui.SpriteList;
@ -19,10 +19,12 @@ public class SpriteLoader {
OAK_LOG, OAK_LOG,
OAK_LEAF, OAK_LEAF,
OAK_PLANKS,
// Items // Items
ITEM_DIRT, ITEM_DIRT,
ITEM_OAK_LOG ITEM_OAK_LOG,
ITEM_OAK_PLANKS
} }
public static final HashMap<SPRITES, Sprite> SPRITES_MAP = new HashMap<>(); public static final HashMap<SPRITES, Sprite> SPRITES_MAP = new HashMap<>();
@ -37,9 +39,11 @@ public class SpriteLoader {
SPRITES_MAP.put(SPRITES.BREAKING, new Breaking()); SPRITES_MAP.put(SPRITES.BREAKING, new Breaking());
SPRITES_MAP.put(SPRITES.OAK_LOG, new OakLog()); SPRITES_MAP.put(SPRITES.OAK_LOG, new OakLog());
SPRITES_MAP.put(SPRITES.OAK_LEAF, new OakLeaf()); SPRITES_MAP.put(SPRITES.OAK_LEAF, new OakLeaf());
SPRITES_MAP.put(SPRITES.OAK_PLANKS, new SimpleSprite("oak_planks.ans"));
SPRITES_MAP.put(SPRITES.ITEM_DIRT, new SimpleItem("dirt.ans")); SPRITES_MAP.put(SPRITES.ITEM_DIRT, new SimpleSprite("items/dirt.ans"));
SPRITES_MAP.put(SPRITES.ITEM_OAK_LOG, new SimpleItem("oak_log.ans")); SPRITES_MAP.put(SPRITES.ITEM_OAK_LOG, new SimpleSprite("items/oak_log.ans"));
SPRITES_MAP.put(SPRITES.ITEM_OAK_PLANKS, new SimpleSprite("items/oak_planks.ans"));
} }
public static SpriteList<SPRITES> load() { public static SpriteList<SPRITES> load() {

View File

@ -4,9 +4,11 @@ import cz.jzitnik.game.items.Item;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import java.util.function.Supplier;
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public class CraftingRecipe { public class CraftingRecipe {
private String[] recipe; private String[][] recipe;
private Item item; private Supplier<Item> itemSupplier;
} }

View File

@ -1,7 +1,18 @@
package cz.jzitnik.game.crafting; package cz.jzitnik.game.crafting;
import cz.jzitnik.game.items.ItemBlockSupplier;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class CraftingRecipeList { public class CraftingRecipeList {
private List<CraftingRecipe> recipes; private static List<CraftingRecipe> recipes = new ArrayList<>();
static {
String[][] pattern = new String[9][9];
for (int i = 0; i < 9; i++) {
pattern[i][i] = "oak_log";
}
recipes.add(new CraftingRecipe(pattern, ItemBlockSupplier.Items::oakPlanks));
}
} }

View File

@ -7,7 +7,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
public class ItemBlockGenerator { public class ItemBlockSupplier {
// This is necessary to not get infinite recursion // This is necessary to not get infinite recursion
private static class Helper { private static class Helper {
public static Item dirt(Block ref) { public static Item dirt(Block ref) {
@ -19,6 +19,9 @@ public class ItemBlockGenerator {
public static Item oakLog(Block ref) { public static Item oakLog(Block ref) {
return new Item("oak_log", "Oak log", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_OAK_LOG, ref); return new Item("oak_log", "Oak log", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_OAK_LOG, ref);
} }
public static Item oakPlanks(Block ref) {
return new Item("oak_log", "Oak planks", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_OAK_PLANKS, ref);
}
} }
public static class Blocks { public static class Blocks {
@ -42,6 +45,11 @@ public class ItemBlockGenerator {
block.setDrops(List.of(Helper.oakLog(block))); block.setDrops(List.of(Helper.oakLog(block)));
return block; return block;
} }
public static Block oakPlanks() {
var block = new Block("oak_planks", SpriteLoader.SPRITES.OAK_PLANKS, 3, ItemType.AXE, new ArrayList<>());
block.setDrops(List.of(Helper.oakPlanks(block)));
return block;
}
} }
// I hate this but whatever // I hate this but whatever
@ -49,11 +57,8 @@ public class ItemBlockGenerator {
public static Item dirt() { public static Item dirt() {
return Helper.dirt(Blocks.dirt()); return Helper.dirt(Blocks.dirt());
} }
public static Item stone() { public static Item oakPlanks() {
return Helper.stone(Blocks.stone()); return Helper.oakPlanks(Blocks.oakPlanks());
}
public static Item oakLog() {
return Helper.stone(Blocks.stone());
} }
} }
} }

View File

@ -1,17 +1,17 @@
package cz.jzitnik.game.sprites.items; package cz.jzitnik.game.sprites;
import cz.jzitnik.tui.ResourceLoader; import cz.jzitnik.tui.ResourceLoader;
import cz.jzitnik.tui.Sprite; import cz.jzitnik.tui.Sprite;
public class SimpleItem extends Sprite { public class SimpleSprite extends Sprite {
private String resource; private String resource;
public SimpleItem(String resource) { public SimpleSprite(String resource) {
this.resource = resource; this.resource = resource;
} }
public String getSprite() { public String getSprite() {
return ResourceLoader.loadResource("items/" + resource).replaceAll("\033\\[38;5;1;48;5;16m", "\033[0m"); return ResourceLoader.loadResource(resource).replaceAll("\033\\[38;5;1;48;5;16m", "\033[0m");
} }
public String getSprite(Enum key) { public String getSprite(Enum key) {

View File

@ -1,11 +1,8 @@
package cz.jzitnik.game.ui; package cz.jzitnik.game.ui;
import cz.jzitnik.game.Generation;
import cz.jzitnik.game.SpriteLoader;
import cz.jzitnik.game.items.InventoryItem; import cz.jzitnik.game.items.InventoryItem;
import cz.jzitnik.game.items.Item; import cz.jzitnik.game.items.Item;
import cz.jzitnik.game.items.ItemBlockGenerator; import cz.jzitnik.game.items.ItemBlockSupplier;
import cz.jzitnik.game.items.ItemType;
import cz.jzitnik.tui.SpriteList; import cz.jzitnik.tui.SpriteList;
import lombok.Getter; import lombok.Getter;
@ -48,7 +45,7 @@ public class SmallCraftingTable {
List<String> sprites = inventory.getSprites(items, spriteList, inventory.getSelectedItemInv() - 29); List<String> sprites = inventory.getSprites(items, spriteList, inventory.getSelectedItemInv() - 29);
Optional<Item> craftedItem = Optional.of(ItemBlockGenerator.Items.dirt()); Optional<Item> craftedItem = Optional.of(ItemBlockSupplier.Items.dirt());
String[] craftedSprite = craftedItem.isPresent() ? spriteList.getSprite(craftedItem.get().getSprite()).getSprite().split("\n") : null; String[] craftedSprite = craftedItem.isPresent() ? spriteList.getSprite(craftedItem.get().getSprite()).getSprite().split("\n") : null;

View File

@ -0,0 +1,26 @@
                                                  
                      ▒▒▒▒▒▒▒                     
                  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒                 
              ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒             
          ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒         
      ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒     
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒░░  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒░░▒░▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░░▒▒▒▒▒▒▒▒▒▒░░░▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒▒▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▒▒▒▒  
   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▒▒▒▒▒░░░  
      ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒░░░░     
          ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒░░░         
              ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒▒▒             
                  ▒▒▒▒▒▒▒▒▒▒▒░░░░                 
                      ▒▒▒░░░░                     


View File

@ -0,0 +1,26 @@
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒