package tools.packet;
import client.BuddylistEntry;
import handling.SendPacketOpcode;
import java.util.Collection;
import org.apache.log4j.Logger;
import server.ServerProperties;
import tools.data.output.MaplePacketLittleEndianWriter;
public class BuddyListPacket {
private static final Logger log = Logger.getLogger(BuddyListPacket.class);
public static byte[] buddylistMessage(int message) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BUDDYLIST.getValue());
mplew.write(message);
return mplew.getPacket();
}
public static byte[] buddylistPrompt(int mode, String nameFrom) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BUDDYLIST.getValue());
mplew.write(mode);
mplew.writeMapleAsciiString(nameFrom);
return mplew.getPacket();
}
public static byte[] updateBuddylist(Collection<BuddylistEntry> buddylist, int characterid) {
return updateBuddylist(buddylist, 0x11, false, characterid);
}
public static byte[] updateBuddylist(int mode) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
//1F 00 00 00 00
mplew.write(SendPacketOpcode.BUDDYLIST.getValue());
mplew.write(mode);
mplew.writeInt(0);
return mplew.getPacket();
}
public static byte[] updateBuddylist(Collection<BuddylistEntry> buddylist, int mode, boolean delete, int characterid) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BUDDYLIST.getValue());
mplew.write(mode);
if (delete) {
mplew.write(0);
mplew.writeInt(characterid);
} else {
mplew.write(buddylist.size());
for (BuddylistEntry buddy : buddylist) {
mplew.writeInt(buddy.getCharacterId());
mplew.writeAsciiString(buddy.getName(), 0x13);
mplew.write(buddy.isVisible() ? 0 : 1);
mplew.writeInt(buddy.getChannel() == -1 ? -1 : buddy.getChannel() - 1);
}
for (int x = 0; x < buddylist.size(); x++) {
mplew.writeInt(0);
}
}
return mplew.getPacket();
}
public static byte[] requestBuddylistAdd(int chrIdFrom, String nameFrom, int levelFrom, int jobFrom, int channel, int AccID) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BUDDYLIST.getValue());
mplew.write(0x9);
mplew.writeInt(chrIdFrom);
mplew.writeMapleAsciiString(nameFrom);
mplew.writeInt(levelFrom);
mplew.writeAsciiString(nameFrom, 0x13);
mplew.write(1);
mplew.writeInt(0);
mplew.writeInt(channel == -1 ? -1 : channel - 1);
return mplew.getPacket();
}
public static byte[] requestBuddylistAdd(int chrIdFrom, String nameFrom, int channel) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BUDDYLIST.getValue());
mplew.write(0x20);
mplew.writeInt(chrIdFrom);
mplew.writeAsciiString(nameFrom, 13);
mplew.write(0);
//mplew.writeInt(0);
mplew.writeInt(channel == -1 ? -1 : channel - 1);
mplew.writeAsciiString("未指定群组", 18);
mplew.writeZero(277);
return mplew.getPacket();
}
public static byte[] updateBuddyChannel(int chrId, int channel, int AccID) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BUDDYLIST.getValue());
mplew.write(0x14);
mplew.writeInt(chrId);
mplew.writeInt(channel);
return mplew.getPacket();
}
public static byte[] updateBuddyCapacity(int capacity) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.write(SendPacketOpcode.BUDDYLIST.getValue());
mplew.write(0x15);
mplew.write(capacity);
return mplew.getPacket();
}
}