/* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ package net.sf.l2j.gameserver.model; import java.util.List; import javolution.util.FastList; import net.sf.l2j.gameserver.model.L2ItemInstance.ItemLocation; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; public class PcFreight extends ItemContainer { //private static final Logger _log = Logger.getLogger(PcFreight.class.getName()); private L2PcInstance _owner; // This is the L2PcInstance that owns this Freight; private int _activeLocationId; public PcFreight(L2PcInstance owner) { _owner = owner; } @Override public L2PcInstance getOwner() { return _owner; } @Override public ItemLocation getBaseLocation() { return ItemLocation.FREIGHT; } public void setActiveLocation(int locationId) { _activeLocationId = locationId; } public int getactiveLocation() { return _activeLocationId; } /** * Returns the quantity of items in the inventory * @return int */ @Override public int getSize() { int size = 0; for (L2ItemInstance item : _items) { if (item.getLocationSlot() == 0 || _activeLocationId == 0 || item.getLocationSlot() == _activeLocationId) size++; } return size; } /** * Returns the list of items in inventory * @return L2ItemInstance : items in inventory */ @Override public L2ItemInstance[] getItems() { List list = new FastList(); for (L2ItemInstance item : _items) { if (item.getLocationSlot() == 0 || item.getLocationSlot() == _activeLocationId) list.add(item); } return list.toArray(new L2ItemInstance[list.size()]); } /** * Returns the item from inventory by using its itemId * @param itemId : int designating the ID of the item * @return L2ItemInstance designating the item or null if not found in inventory */ @Override public L2ItemInstance getItemByItemId(int itemId) { for (L2ItemInstance item : _items) if ((item.getItemId() == itemId) && (item.getLocationSlot() == 0 || _activeLocationId == 0 || item.getLocationSlot() == _activeLocationId) ) return item; return null; } /** * Adds item to PcFreight for further adjustments. * @param item : L2ItemInstance to be added from inventory */ @Override protected void addItem(L2ItemInstance item) { super.addItem(item); if (_activeLocationId > 0) item.setLocation(item.getLocation(), _activeLocationId); } /** * Get back items in PcFreight from database */ @Override public void restore() { int locationId = _activeLocationId; _activeLocationId = 0; super.restore(); _activeLocationId = locationId; } @Override public boolean validateCapacity(int slots) { return (getSize() + slots <= _owner.getFreightLimit()); } }