/*
* 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 <http://www.gnu.org/licenses/>.
*/
package silentium.gameserver.network.serverpackets;
import java.util.Collection;
import silentium.gameserver.model.ClanInfo;
import silentium.gameserver.model.L2Clan;
import silentium.gameserver.network.clientpackets.RequestAllyInfo;
import silentium.gameserver.tables.ClanTable;
/**
* Sent in response to {@link RequestAllyInfo}, if applicable.
*
* @author afk5min
*/
public class AllianceInfo extends L2GameServerPacket
{
private final String _name;
private final int _total;
private final int _online;
private final String _leaderC;
private final String _leaderP;
private final ClanInfo[] _allies;
public AllianceInfo(int allianceId)
{
final L2Clan leader = ClanTable.getInstance().getClan(allianceId);
_name = leader.getAllyName();
_leaderC = leader.getName();
_leaderP = leader.getLeaderName();
final Collection<L2Clan> allies = ClanTable.getInstance().getClanAllies(allianceId);
_allies = new ClanInfo[allies.size()];
int idx = 0, total = 0, online = 0;
for (final L2Clan clan : allies)
{
final ClanInfo ci = new ClanInfo(clan);
_allies[idx++] = ci;
total += ci.getTotal();
online += ci.getOnline();
}
_total = total;
_online = online;
}
@Override
protected void writeImpl()
{
writeC(0xb4);
writeS(_name);
writeD(_total);
writeD(_online);
writeS(_leaderC);
writeS(_leaderP);
writeD(_allies.length);
for (final ClanInfo aci : _allies)
{
writeS(aci.getClan().getName());
writeD(0x00);
writeD(aci.getClan().getLevel());
writeS(aci.getClan().getLeaderName());
writeD(aci.getTotal());
writeD(aci.getOnline());
}
}
public String getName()
{
return _name;
}
public int getTotal()
{
return _total;
}
public int getOnline()
{
return _online;
}
public String getLeaderC()
{
return _leaderC;
}
public String getLeaderP()
{
return _leaderP;
}
public ClanInfo[] getAllies()
{
return _allies;
}
}