inventory #14
@@ -1,27 +1,33 @@
|
||||
package Inventory;
|
||||
|
||||
import Item.Item;
|
||||
import Item.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class Inventory {
|
||||
List<Item> items;
|
||||
List<ItemStack> items;
|
||||
|
||||
public Inventory() {
|
||||
items = new ArrayList<>();
|
||||
}
|
||||
|
||||
public List<Item> getItems() {
|
||||
public List<ItemStack> getItems() {
|
||||
return Collections.unmodifiableList(items);
|
||||
}
|
||||
|
||||
public void addItem(Item item) {
|
||||
public void addItem(ItemStack item) {
|
||||
items.add(item);
|
||||
}
|
||||
|
||||
public boolean containsItem(String item) {
|
||||
return items.contains(item);
|
||||
public boolean containsItem(Item item) {
|
||||
for (ItemStack stack : items) {
|
||||
if (stack.item().equals(item)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
16
src/main/java/Item/ItemStack.java
Normal file
16
src/main/java/Item/ItemStack.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package Item;
|
||||
|
||||
public record ItemStack(Item item, int quantity) {
|
||||
public ItemStack {
|
||||
if (quantity <= 0) {
|
||||
throw new IllegalArgumentException("Quantity must be greater than zero.");
|
||||
}
|
||||
}
|
||||
public Item getItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
public int getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package Job;
|
||||
|
||||
import Inventory.HasInventory;
|
||||
import Item.ItemStack;
|
||||
import Terrain.Biome;
|
||||
|
||||
|
||||
@@ -18,6 +19,6 @@ public class Miner extends Job {
|
||||
|
||||
public void dig(Biome biome) {
|
||||
var item = biome.getLootTable().roll();
|
||||
actor.getInventory().addItem(item);
|
||||
actor.getInventory().addItem(new ItemStack(item, 1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import Inventory.Inventory;
|
||||
import Item.BasicItem;
|
||||
import Item.ItemStack;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
@@ -9,9 +10,27 @@ public class InventoryTest {
|
||||
@Test
|
||||
void can_add_item_to_inventory() {
|
||||
var inventory = new Inventory();
|
||||
inventory.addItem(new BasicItem("iron_sword", "Iron Sword"));
|
||||
var item = new BasicItem("iron_sword", "Iron Sword");
|
||||
inventory.addItem(new ItemStack(item, 1));
|
||||
assertThat(inventory.getItems(), hasItem(
|
||||
hasProperty("item",
|
||||
hasProperty("id", equalTo("iron_sword"))
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
@Test
|
||||
void can_add_quantity_to_inventory() {
|
||||
var inventory = new Inventory();
|
||||
var item = new BasicItem("iron_sword", "Iron Sword");
|
||||
var stack = new ItemStack(item, 5);
|
||||
inventory.addItem(stack);
|
||||
assertThat(inventory.getItems(), hasItem(
|
||||
allOf(
|
||||
hasProperty("item",
|
||||
hasProperty("id", equalTo("iron_sword"))),
|
||||
hasProperty("quantity", equalTo(5))
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class MinerTest {
|
||||
Biome.COAST.getLootTable().setRandomProvider(random);
|
||||
job.dig(Biome.COAST);
|
||||
assertThat(job.getActor().getInventory().getItems(), hasItem(
|
||||
hasProperty("id", equalTo("sand"))));
|
||||
hasProperty("item", hasProperty("id", equalTo("sand")))));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -55,7 +55,11 @@ public class MinerTest {
|
||||
var job = new Miner(defaultPlayer());
|
||||
Biome.MOUNTAIN.getLootTable().setRandomProvider(random);
|
||||
job.dig(Biome.MOUNTAIN);
|
||||
assertThat(job.getActor().getInventory().getItems(), hasItem( hasProperty("id", equalTo("iron"))));
|
||||
assertThat(job.getActor().getInventory().getItems(), hasItem(
|
||||
hasProperty("item",
|
||||
hasProperty("id", equalTo("iron")))
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user