/*
* 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.serverpackets;
import java.util.List;
public class ShowBoard extends L2GameServerPacket
{
private static final String _S__6E_SHOWBOARD = "[S] 7b ShowBoard";
private String _htmlCode;
private String _id;
private List _arg;
public ShowBoard(String htmlCode, String id)
{
_id = id;
_htmlCode = htmlCode; // html code must not exceed 8192 bytes
}
public ShowBoard(List arg)
{
_id = "1002";
_htmlCode = null;
_arg = arg;
}
private byte[] get1002()
{
int len = _id.getBytes().length * 2 + 2;
for (String arg : _arg)
{
len += (arg.getBytes().length + 4) * 2;
}
byte data[] = new byte[len];
int i = 0;
for (int j = 0; j < _id.getBytes().length; j++, i += 2)
{
data[i] = _id.getBytes()[j];
data[i + 1] = 0;
}
data[i] = 8;
i++;
data[i] = 0;
i++;
for (String arg : _arg)
{
for (int j = 0; j < arg.getBytes().length; j++, i += 2)
{
data[i] = arg.getBytes()[j];
data[i + 1] = 0;
}
data[i] = 0x20;
i++;
data[i] = 0x0;
i++;
data[i] = 0x8;
i++;
data[i] = 0x0;
i++;
}
return data;
}
@Override
protected final void writeImpl()
{
writeC(0x7b);
writeC(0x01); //c4 1 to show community 00 to hide
writeS("bypass _bbshome"); // top
writeS("bypass _bbsgetfav"); // favorite
writeS("bypass _bbsloc"); // region
writeS("bypass _bbsclan"); // clan
writeS("bypass _bbsmemo"); // memo
writeS("bypass _bbsmail"); // mail
writeS("bypass _bbsfriends"); // friends
writeS("bypass bbs_add_fav"); // add fav.
if (!_id.equals("1002"))
{
// getBytes is a very costy operation, and should only be called once
byte htmlBytes[] = null;
if (_htmlCode != null)
htmlBytes = _htmlCode.getBytes();
byte data[] = new byte[2 + 2 + 2 + _id.getBytes().length * 2 + 2
* ((_htmlCode != null) ? htmlBytes.length : 0)];
int i = 0;
for (int j = 0; j < _id.getBytes().length; j++, i += 2)
{
data[i] = _id.getBytes()[j];
data[i + 1] = 0;
}
data[i] = 8;
i++;
data[i] = 0;
i++;
if (_htmlCode == null)
{
}
else
{
for (int j = 0; j < htmlBytes.length; i += 2, j++)
{
data[i] = htmlBytes[j];
data[i + 1] = 0;
}
}
data[i] = 0;
i++;
data[i] = 0;
//writeS(_htmlCode); // current page
writeB(data);
}
else
{
writeB(get1002());
}
}
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#getType()
*/
@Override
public String getType()
{
return _S__6E_SHOWBOARD;
}
}