mirror of
https://gitlab.com/arnekeller/kit-programmieren-ws1920-final2.git
synced 2024-11-09 10:20:38 +00:00
Javadoc
This commit is contained in:
parent
19712a7039
commit
58a2a23220
@ -3,6 +3,12 @@ package edu.kit.informatik.cardgame.model;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Player inventory. Contains {@link CardCategory#RESOURCE resources} and {@link Item items}.
|
||||||
|
*
|
||||||
|
* @author Arne Keller
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
public class Inventory {
|
public class Inventory {
|
||||||
/**
|
/**
|
||||||
* Resources collected by the player. Obviously only contains {@link CardCategory#RESOURCE resource} cards.
|
* Resources collected by the player. Obviously only contains {@link CardCategory#RESOURCE resource} cards.
|
||||||
@ -13,7 +19,16 @@ public class Inventory {
|
|||||||
*/
|
*/
|
||||||
private final List<Item> items = new ArrayList<>();
|
private final List<Item> items = new ArrayList<>();
|
||||||
|
|
||||||
public void addResource(Card resourceCard) {
|
/**
|
||||||
|
* Add a resource card to this inventory.
|
||||||
|
*
|
||||||
|
* @param resourceCard resource card
|
||||||
|
* @throws IllegalArgumentException if the provided card is not a resource card
|
||||||
|
*/
|
||||||
|
public void addResource(Card resourceCard) throws IllegalArgumentException {
|
||||||
|
if (resourceCard.category() != CardCategory.RESOURCE) {
|
||||||
|
throw new IllegalArgumentException("card is not a resource");
|
||||||
|
}
|
||||||
resources.add(resourceCard);
|
resources.add(resourceCard);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,7 +52,16 @@ public class Inventory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void build(Item item) {
|
/**
|
||||||
|
* Build the specified item.
|
||||||
|
*
|
||||||
|
* @param item item to build
|
||||||
|
* @throws IllegalArgumentException if there are not enough resources to build the item
|
||||||
|
*/
|
||||||
|
public void build(Item item) throws IllegalArgumentException {
|
||||||
|
if (!canBuild(item)) {
|
||||||
|
throw new IllegalArgumentException("can not build item");
|
||||||
|
}
|
||||||
// remove used resources
|
// remove used resources
|
||||||
for (final Card resource : item.resourcesNeeded()) {
|
for (final Card resource : item.resourcesNeeded()) {
|
||||||
// resources picked up last get used up first
|
// resources picked up last get used up first
|
||||||
@ -46,19 +70,36 @@ public class Inventory {
|
|||||||
items.add(item);
|
items.add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return items in the inventory
|
||||||
|
*/
|
||||||
public List<Item> getItems() {
|
public List<Item> getItems() {
|
||||||
// have to copy here: caller does not expect an auto-updating list
|
// have to copy here: caller does not expect an auto-updating list
|
||||||
return new ArrayList<>(items);
|
return new ArrayList<>(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return stream of items in the inventory
|
||||||
|
*/
|
||||||
public Stream<Item> itemStream() {
|
public Stream<Item> itemStream() {
|
||||||
return items.stream();
|
return items.stream();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether this inventory contains a specified item.
|
||||||
|
*
|
||||||
|
* @param item single item
|
||||||
|
* @return whether this inventory contains that item
|
||||||
|
*/
|
||||||
public boolean contains(Item item) {
|
public boolean contains(Item item) {
|
||||||
return items.contains(item);
|
return items.contains(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an item, if it exists.
|
||||||
|
*
|
||||||
|
* @param item item to remove
|
||||||
|
*/
|
||||||
public void removeItem(Item item) {
|
public void removeItem(Item item) {
|
||||||
items.remove(item);
|
items.remove(item);
|
||||||
}
|
}
|
||||||
@ -91,6 +132,9 @@ public class Inventory {
|
|||||||
return Arrays.stream(resourcesNeeded).allMatch(Objects::isNull);
|
return Arrays.stream(resourcesNeeded).allMatch(Objects::isNull);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear the inventory, deleting all resources and items.
|
||||||
|
*/
|
||||||
public void clear() {
|
public void clear() {
|
||||||
resources.clear();
|
resources.clear();
|
||||||
items.clear();
|
items.clear();
|
||||||
|
@ -52,7 +52,7 @@ public final class CommandLine {
|
|||||||
command = CommandFactory.getCommand(input);
|
command = CommandFactory.getCommand(input);
|
||||||
} catch (NumberFormatException | InvalidInputException e) {
|
} catch (NumberFormatException | InvalidInputException e) {
|
||||||
Terminal.printError(e.getMessage());
|
Terminal.printError(e.getMessage());
|
||||||
continue;
|
continue; // to next command
|
||||||
}
|
}
|
||||||
// attempt to execute command
|
// attempt to execute command
|
||||||
try {
|
try {
|
||||||
|
@ -5,7 +5,7 @@ import edu.kit.informatik.cardgame.model.LogicException;
|
|||||||
import edu.kit.informatik.cardgame.ui.InvalidInputException;
|
import edu.kit.informatik.cardgame.ui.InvalidInputException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command that can be applied to a simulation.
|
* Command that can be applied to a card game.
|
||||||
* Commands are implemented as separate classes for easy modification and expansion.
|
* Commands are implemented as separate classes for easy modification and expansion.
|
||||||
*
|
*
|
||||||
* @author Arne Keller
|
* @author Arne Keller
|
||||||
|
Loading…
Reference in New Issue
Block a user