package com.asteria.game.item.container;
import com.asteria.game.character.player.Player;
import com.asteria.game.item.Item;
/**
* The container that manages the inventory for a player.
*
* @author lare96 <http://github.com/lare96>
*/
public final class Inventory extends ItemContainer {
/**
* The player who's inventory is being managed.
*/
private final Player player;
/**
* Create a new {@link Inventory}.
*
* @param player
* the player who's inventory is being managed.
*/
public Inventory(Player player) {
super(28, ItemContainerPolicy.NORMAL);
this.player = player;
}
/**
* Refreshes the contents of this inventory container to the interface.
*/
public void refresh() {
refresh(player, 3214);
}
@Override
public boolean add(Item item, int slot) {
if (!Item.valid(item))
return false;
if (!contains(item.getId()) && !item.getDefinition().isStackable()) {
if (freeSlot() == -1) {
player.getMessages().sendMessage("You don't have enough space in your inventory!");
return false;
}
}
boolean val = super.add(item, slot);
refresh();
return val;
}
@Override
public boolean add(Item item) {
return add(item, -1);
}
@Override
public boolean remove(Item item, int slot) {
boolean val = super.remove(item, slot);
refresh();
return val;
}
@Override
public boolean remove(Item item) {
return remove(item, -1);
}
}