/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server 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.
*
* L2J Server 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 <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets;
import java.util.HashMap;
import java.util.Map;
import com.l2jserver.gameserver.instancemanager.CastleManorManager;
import com.l2jserver.gameserver.model.CropProcure;
import com.l2jserver.gameserver.model.L2Seed;
import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
/**
* @author l3x
*/
public final class ExShowSellCropList extends L2GameServerPacket
{
private final int _manorId;
private final Map<Integer, L2ItemInstance> _cropsItems = new HashMap<>();
private final Map<Integer, CropProcure> _castleCrops = new HashMap<>();
public ExShowSellCropList(PcInventory inventory, int manorId)
{
_manorId = manorId;
for (int cropId : CastleManorManager.getInstance().getCropIds())
{
final L2ItemInstance item = inventory.getItemByItemId(cropId);
if (item != null)
{
_cropsItems.put(cropId, item);
}
}
for (CropProcure crop : CastleManorManager.getInstance().getCropProcure(_manorId, false))
{
if (_cropsItems.containsKey(crop.getId()) && (crop.getAmount() > 0))
{
_castleCrops.put(crop.getId(), crop);
}
}
}
@Override
public void writeImpl()
{
writeC(0xFE);
writeH(0x2C);
writeD(_manorId); // manor id
writeD(_cropsItems.size()); // size
for (L2ItemInstance item : _cropsItems.values())
{
final L2Seed seed = CastleManorManager.getInstance().getSeedByCrop(item.getId());
writeD(item.getObjectId()); // Object id
writeD(item.getId()); // crop id
writeD(seed.getLevel()); // seed level
writeC(0x01);
writeD(seed.getReward(1)); // reward 1 id
writeC(0x01);
writeD(seed.getReward(2)); // reward 2 id
if (_castleCrops.containsKey(item.getId()))
{
final CropProcure crop = _castleCrops.get(item.getId());
writeD(_manorId); // manor
writeQ(crop.getAmount()); // buy residual
writeQ(crop.getPrice()); // buy price
writeC(crop.getReward()); // reward
}
else
{
writeD(0xFFFFFFFF); // manor
writeQ(0x00); // buy residual
writeQ(0x00); // buy price
writeC(0x00); // reward
}
writeQ(item.getCount()); // my crops
}
}
}