package forge.quest.data.item;
import java.util.*;
/**
* <p>QuestInventory class.</p>
*
* @author Forge
* @version $Id: $
*/
public class QuestInventory {
Map<String, QuestItemAbstract> inventory = new HashMap<String, QuestItemAbstract>();
/**
* <p>Constructor for QuestInventory.</p>
*/
public QuestInventory() {
Set<QuestItemAbstract> allItems = getAllItems();
for (QuestItemAbstract item : allItems) {
inventory.put(item.getName(), item);
}
}
/**
* <p>hasItem.</p>
*
* @param itemName a {@link java.lang.String} object.
* @return a boolean.
*/
public boolean hasItem(String itemName) {
return inventory.containsKey(itemName) && inventory.get(itemName).getLevel() > 0;
}
/**
* <p>addItem.</p>
*
* @param item a {@link forge.quest.data.item.QuestItemAbstract} object.
*/
public void addItem(QuestItemAbstract item) {
inventory.put(item.getName(), item);
}
/**
* <p>getItemLevel.</p>
*
* @param itemName a {@link java.lang.String} object.
* @return a int.
*/
public int getItemLevel(String itemName) {
QuestItemAbstract item = inventory.get(itemName);
if (item == null) {
return 0;
}
return item.getLevel();
}
/**
* <p>setItemLevel.</p>
*
* @param itemName a {@link java.lang.String} object.
* @param level a int.
*/
public void setItemLevel(String itemName, int level) {
inventory.get(itemName).setLevel(level);
}
/**
* <p>getAllItems.</p>
*
* @return a {@link java.util.Set} object.
*/
private static Set<QuestItemAbstract> getAllItems() {
SortedSet<QuestItemAbstract> set = new TreeSet<QuestItemAbstract>();
set.add(new QuestItemElixir());
set.add(new QuestItemEstates());
set.add(new QuestItemLuckyCoin());
set.add(new QuestItemMap());
set.add(new QuestItemSleight());
set.add(new QuestItemZeppelin());
return set;
}
//Magic to support added pet types when reading saves.
/**
* <p>readResolve.</p>
*
* @return a {@link java.lang.Object} object.
*/
private Object readResolve() {
for (QuestItemAbstract item : getAllItems()) {
if (!inventory.containsKey(item.getName())) {
inventory.put(item.getName(), item);
}
}
return this;
}
/**
* <p>getItems.</p>
*
* @return a {@link java.util.Collection} object.
*/
public Collection<QuestItemAbstract> getItems() {
return inventory.values();
}
/**
* <p>getItem.</p>
*
* @param itemName a {@link java.lang.String} object.
* @return a {@link forge.quest.data.item.QuestItemAbstract} object.
*/
public QuestItemAbstract getItem(String itemName) {
return inventory.get(itemName);
}
}