rendered paste body/*
* 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 2, 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package net.sf.l2j.gameserver.serverpackets;
import java.util.logging.Logger;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
/**
* 0x42 WarehouseWithdrawalList dh (h dddhh dhhh d)
*
* @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/29 23:15:10 $
*/
public class WareHouseWithdrawalList extends L2GameServerPacket
{
public static final int Private = 1;
public static final int Clan = 2;
public static final int Castle = 3; //not sure
public static final int Freight = 4; //not sure
private static Logger _log = Logger.getLogger(WareHouseWithdrawalList.class.getName());
private static final String _S__54_WAREHOUSEWITHDRAWALLIST = "[S] 42 WareHouseWithdrawalList";
private L2PcInstance _player;
private int _playerAdena;
private L2ItemInstance[] _items;
private int _whtype;
private int _seite = 0;
public WareHouseWithdrawalList(L2PcInstance player, int type)
{
_player = player;
_whtype = type;
_seite = 0;
}
public WareHouseWithdrawalList(L2PcInstance player, int type, int seite)
{
_player = player;
_whtype = type;
_seite = seite;
_playerAdena = _player.getAdena();
if (_player.getActiveWarehouse() == null)
{
// Something went wrong!
_log.warning("error while sending withdraw request to: " + _player.getName());
return;
}
else _items = _player.getActiveWarehouse().getItems();
if (Config.DEBUG)
for (L2ItemInstance item : _items)
_log.fine("item:" + item.getItem().getName() +
" type1:" + item.getItem().getType1() + " type2:" + item.getItem().getType2());
}
protected final void writeImpl()
{
SortItems first = null;
int i = 0;
for (int x = 0; x < _items.length; x++)
{
if (_seite == 0
|| (_seite == 1 && _items[x].getItem().getType2() == 1)
|| (_seite == 2 && _items[x].getItem().getType2() == 2)
|| (_seite == 3 && _items[x].getItem().getType2() == 0)
|| (_seite == 4 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 6)
|| (_seite == 4 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 7)
|| (_seite == 6 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 9)
|| (_seite == 7 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 8)
|| (_seite == 8 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 1)
|| (_seite == 9 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 0)
|| (_seite == 9 && _items[x].getItem().getType2() != 0
&& _items[x].getItem().getType2() != 1
&& _items[x].getItem().getType2() != 2
&& _items[x].getItem().getType2() != 5)
|| (_seite == 20 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 4)
|| (_seite == 21 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 3)
|| (_seite == 22 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 5)
|| (_seite == 23 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 2)
|| (_seite == 24 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 10))
{
first = sortieren(_items[x], first);
i++;
}
}
writeC(0x42);
/* 0x01-Private Warehouse
* 0x02-Clan Warehouse
* 0x03-Castle Warehouse
* 0x04-Warehouse */
writeH(_whtype);
writeD(_playerAdena);
writeH(i);
while (first != null)
{
L2ItemInstance item = first.getItem();
first = first.getNext();
writeH(item.getItem().getType1()); // item type1 //unconfirmed, works
writeD(0x00); //unconfirmed, works
writeD(item.getItemId()); //unconfirmed, works
writeD(item.getCount()); //unconfirmed, works
writeH(item.getItem().getType2()); // item type2 //unconfirmed, works
writeH(0x00); // ?
writeD(item.getItem().getBodyPart()); // ?
writeH(item.getEnchantLevel()); // enchant level -confirmed
writeH(0x00); // ?
writeH(0x00); // ?
writeD(item.getObjectId()); // item id - confimed
writeD(0x00); // C6
writeD(0x00); // C6
}
}
private SortItems sortieren (L2ItemInstance obj, SortItems first)
{
SortItems neu = new SortItems(obj);
return neu.sortieren(first);
}
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#getType()
*/
public String getType()
{
return _S__54_WAREHOUSEWITHDRAWALLIST;
}
}
class SortItems
{
private L2ItemInstance _item;
private SortItems _next = null, _last = null;
public SortItems(L2ItemInstance item)
{
_item = item;
}
public SortItems sortieren (SortItems first)
{
if (first == null) first = this;
else
{
SortItems next = first, last = null;
while (next != null)
{
if (getItemName().compareTo(next.getItemName()) <= 0) break;
last = next;
next = next._next;
}
_next = next;
_last = last;
if (_last == null) first = this;
if (_next != null)
{
if (_last != null)
{
_last._next = this;
}
_next._last = this;
}
else
{
_last._next = this;
}
}
return first;
}
private String getItemName()
{
return _item.getItemName();
}
public L2ItemInstance getItem()
{
return _item;
}
public SortItems getNext()
{
return _next;
}
}