inventory #14
@@ -1,27 +1,33 @@
|
|||||||
package Inventory;
|
package Inventory;
|
||||||
|
|
||||||
import Item.Item;
|
import Item.Item;
|
||||||
|
import Item.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Inventory {
|
public class Inventory {
|
||||||
List<Item> items;
|
List<ItemStack> items;
|
||||||
|
|
||||||
public Inventory() {
|
public Inventory() {
|
||||||
items = new ArrayList<>();
|
items = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Item> getItems() {
|
public List<ItemStack> getItems() {
|
||||||
return Collections.unmodifiableList(items);
|
return Collections.unmodifiableList(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addItem(Item item) {
|
public void addItem(ItemStack item) {
|
||||||
items.add(item);
|
items.add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean containsItem(String item) {
|
public boolean containsItem(Item item) {
|
||||||
return items.contains(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;
|
package Job;
|
||||||
|
|
||||||
import Inventory.HasInventory;
|
import Inventory.HasInventory;
|
||||||
|
import Item.ItemStack;
|
||||||
import Terrain.Biome;
|
import Terrain.Biome;
|
||||||
|
|
||||||
|
|
||||||
@@ -18,6 +19,6 @@ public class Miner extends Job {
|
|||||||
|
|
||||||
public void dig(Biome biome) {
|
public void dig(Biome biome) {
|
||||||
var item = biome.getLootTable().roll();
|
var item = biome.getLootTable().roll();
|
||||||
actor.getInventory().addItem(item);
|
actor.getInventory().addItem(new ItemStack(item, 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import Inventory.Inventory;
|
import Inventory.Inventory;
|
||||||
import Item.BasicItem;
|
import Item.BasicItem;
|
||||||
|
import Item.ItemStack;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
@@ -9,9 +10,27 @@ public class InventoryTest {
|
|||||||
@Test
|
@Test
|
||||||
void can_add_item_to_inventory() {
|
void can_add_item_to_inventory() {
|
||||||
var inventory = new 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(
|
assertThat(inventory.getItems(), hasItem(
|
||||||
|
hasProperty("item",
|
||||||
hasProperty("id", equalTo("iron_sword"))
|
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);
|
Biome.COAST.getLootTable().setRandomProvider(random);
|
||||||
job.dig(Biome.COAST);
|
job.dig(Biome.COAST);
|
||||||
assertThat(job.getActor().getInventory().getItems(), hasItem(
|
assertThat(job.getActor().getInventory().getItems(), hasItem(
|
||||||
hasProperty("id", equalTo("sand"))));
|
hasProperty("item", hasProperty("id", equalTo("sand")))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -55,7 +55,11 @@ public class MinerTest {
|
|||||||
var job = new Miner(defaultPlayer());
|
var job = new Miner(defaultPlayer());
|
||||||
Biome.MOUNTAIN.getLootTable().setRandomProvider(random);
|
Biome.MOUNTAIN.getLootTable().setRandomProvider(random);
|
||||||
job.dig(Biome.MOUNTAIN);
|
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