package com.weem.epicinventor.inventory;
import java.io.*;
import com.weem.epicinventor.*;
import com.weem.epicinventor.item.*;
public class InventorySlot implements Serializable {
protected static final long serialVersionUID = 7653293255956181100L;
transient private Inventory inventory;
transient private Registry registry;
private ItemType itemType;
private Item item;
private int qty;
public InventorySlot(Inventory i, Registry rg) {
inventory = i;
registry = rg;
qty = 0;
}
public void setTransient(Registry rg) {
registry = rg;
inventory = null;
if(itemType != null) {
itemType = rg.getItemManager().getItemType(itemType.getName());
if(itemType.getName().equals("ScrapHammer")) {
int x = 9;
}
if(item == null) {
int level = 1;
if(itemType.getType().equals("Weapon") || itemType.getType().equals("Armor")) {
level = rg.getPlayerManager().getCurrentPlayer().getLevel();
}
item = new Item(itemType, level);
}
item.setTransient();
} else {
itemType = null;
}
if(item != null) {
item.setTransient();
}
}
public ItemType getItemType() {
return itemType;
}
public String getItemTypeName() {
String n = "";
if(itemType != null) {
n = itemType.getName();
}
return n;
}
public String getImageName() {
String name = "";
if (itemType != null) {
name = itemType.getImageName();
}
return name;
}
public String getDescription() {
String description = "";
if (itemType != null) {
description = itemType.getDescription();
}
return description;
}
public int getLevel() {
int level = 0;
if (item != null) {
level = item.getLevel();
}
return level;
}
public void setLevel(int level) {
if (item != null) {
item.setLevel(level);
}
}
public int getQty() {
return qty;
}
public int addItem(ItemType newItemType, int newQty) {
return addItem(newItemType, newQty, 1);
}
/*
* returns the qty of items that didn't fit in the slot - pfftt hahaha :p
* or -1 in case of an error
*/
public int addItem(ItemType newItemType, int newQty, int level) {
int leftToDistribute = newQty;
if (newItemType == null || newQty < 1) {
return -1;
}
if (itemType == null) {
//slot is clear
itemType = newItemType;
item = new Item(itemType, level);
if (newQty <= newItemType.getMaxStack()) {
qty = newQty;
leftToDistribute = 0;
} else {
qty = newItemType.getMaxStack();
leftToDistribute = newQty - newItemType.getMaxStack();
}
} else {
//an item is already in this slot
if (newItemType == itemType) {
if ((qty + newQty) <= newItemType.getMaxStack()) {
qty += newQty;
leftToDistribute = 0;
} else {
leftToDistribute = newQty - (newItemType.getMaxStack() - qty);
qty = newItemType.getMaxStack();
}
}
}
return leftToDistribute;
}
public void setQty(int newQty) {
qty = newQty;
if (qty < 1) {
itemType = null;
qty = 0;
}
}
public void empty() {
itemType = null;
item = null;
qty = 0;
}
public int removeQty(int removeQty) {
qty -= removeQty;
if (qty < 1) {
itemType = null;
item = null;
qty = 0;
}
return qty;
}
private void readObject(ObjectInputStream aInputStream) throws Exception {
aInputStream.defaultReadObject();
}
private void writeObject(ObjectOutputStream aOutputStream) throws Exception {
aOutputStream.defaultWriteObject();
}
}